@ai-table/grid 0.1.26 → 0.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/fesm2022/ai-table-grid.mjs +538 -49
  2. package/fesm2022/ai-table-grid.mjs.map +1 -1
  3. package/grid.component.d.ts +1 -1
  4. package/grid.component.d.ts.map +1 -1
  5. package/package.json +1 -1
  6. package/renderer/components/cells/attachment.component.d.ts +2 -2
  7. package/renderer/components/cells/attachment.component.d.ts.map +1 -1
  8. package/renderer/components/cells/cells.d.ts +2 -2
  9. package/renderer/components/cells/cells.d.ts.map +1 -1
  10. package/renderer/components/cells/cover-cell-base.d.ts +11 -0
  11. package/renderer/components/cells/cover-cell-base.d.ts.map +1 -0
  12. package/renderer/components/cells/link.component.d.ts +2 -2
  13. package/renderer/components/cells/link.component.d.ts.map +1 -1
  14. package/renderer/components/cells/progress.component.d.ts +2 -2
  15. package/renderer/components/cells/progress.component.d.ts.map +1 -1
  16. package/renderer/components/cells/rate.component.d.ts +2 -2
  17. package/renderer/components/cells/rate.component.d.ts.map +1 -1
  18. package/renderer/components/cells/rich-text.component.d.ts +2 -2
  19. package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
  20. package/renderer/components/cover-cell.component.d.ts +6 -6
  21. package/renderer/components/cover-cell.component.d.ts.map +1 -1
  22. package/renderer/components/frozen-field-shadow.component.d.ts.map +1 -1
  23. package/renderer/components/index.d.ts +2 -1
  24. package/renderer/components/index.d.ts.map +1 -1
  25. package/renderer/components/scrollable-group/index.d.ts +2 -0
  26. package/renderer/components/scrollable-group/index.d.ts.map +1 -0
  27. package/renderer/components/scrollable-group/scrollable-group.component.d.ts +123 -0
  28. package/renderer/components/scrollable-group/scrollable-group.component.d.ts.map +1 -0
  29. package/renderer/renderer.component.d.ts +8 -1
  30. package/renderer/renderer.component.d.ts.map +1 -1
  31. package/types/grid.d.ts +2 -2
  32. package/types/grid.d.ts.map +1 -1
  33. package/utils/cover-cell.d.ts +1 -1
  34. package/utils/drag-fill/drag-fill.d.ts +1 -0
  35. package/utils/drag-fill/drag-fill.d.ts.map +1 -1
  36. package/renderer/components/cells/cover-cell.d.ts +0 -12
  37. package/renderer/components/cells/cover-cell.d.ts.map +0 -1
@@ -5019,25 +5019,24 @@ class Drawer {
5019
5019
  }
5020
5020
  const drawer = new Drawer();
5021
5021
 
5022
- class CoverCellComponent extends Component {
5022
+ class CoverCellBase {
5023
5023
  constructor() {
5024
- super(...arguments);
5025
5024
  this.config = input();
5026
5025
  this.onlyDisplayBorder = input(false);
5027
5026
  }
5028
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: CoverCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5029
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: CoverCellComponent, isStandalone: true, selector: "ai-table-cover-cell", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, onlyDisplayBorder: { classPropertyName: "onlyDisplayBorder", publicName: "onlyDisplayBorder", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5027
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: CoverCellBase, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5028
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: CoverCellBase, isStandalone: true, selector: "ai-table-cover-cell-base", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, onlyDisplayBorder: { classPropertyName: "onlyDisplayBorder", publicName: "onlyDisplayBorder", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5030
5029
  }
5031
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: CoverCellComponent, decorators: [{
5030
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: CoverCellBase, decorators: [{
5032
5031
  type: Component,
5033
5032
  args: [{
5034
- selector: 'ai-table-cover-cell',
5033
+ selector: 'ai-table-cover-cell-base',
5035
5034
  template: '',
5036
5035
  changeDetection: ChangeDetectionStrategy.OnPush
5037
5036
  }]
5038
5037
  }] });
5039
5038
 
5040
- class AITableCellLink extends CoverCellComponent {
5039
+ class AITableCellLink extends CoverCellBase {
5041
5040
  constructor() {
5042
5041
  super(...arguments);
5043
5042
  this.textOffset = AI_TABLE_CELL_PADDING + AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE;
@@ -5241,7 +5240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5241
5240
  }]
5242
5241
  }] });
5243
5242
 
5244
- class AITableCellAttachment extends CoverCellComponent {
5243
+ class AITableCellAttachment extends CoverCellBase {
5245
5244
  constructor() {
5246
5245
  super(...arguments);
5247
5246
  this.attachments = computed(() => {
@@ -5340,7 +5339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5340
5339
  }]
5341
5340
  }] });
5342
5341
 
5343
- class AITableCellRichText extends CoverCellComponent {
5342
+ class AITableCellRichText extends CoverCellBase {
5344
5343
  constructor() {
5345
5344
  super(...arguments);
5346
5345
  this.textConfig = computed(() => {
@@ -8292,32 +8291,501 @@ class AITableFrozenFieldShadow {
8292
8291
  : this.config().height;
8293
8292
  return {
8294
8293
  visible: this.scrollState().scrollLeft > 0,
8295
- x: this.frozenAreaWidth(),
8294
+ x: this.frozenAreaWidth() + 1, // 偏移1,避免和边框重叠导致颜色太深
8296
8295
  y: 0,
8297
- points: [0, 0, 0, height],
8298
- stroke: Colors.gray200,
8299
- strokeWidth: 1,
8300
- shadowColor: Colors.black,
8301
- shadowBlur: 6,
8302
- shadowOffset: { x: 3.5, y: 0 },
8303
- shadowOpacity: 0.25,
8304
- shadowForStrokeEnabled: true
8296
+ width: 8,
8297
+ height,
8298
+ fillLinearGradientStartPoint: { x: 0, y: 0 },
8299
+ fillLinearGradientEndPoint: { x: 8, y: 0 },
8300
+ fillLinearGradientColorStops: [0, 'rgba(0,0,0,0.05)', 1, Colors.transparent]
8305
8301
  };
8306
8302
  });
8307
8303
  }
8308
8304
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFrozenFieldShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8309
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: AITableFrozenFieldShadow, isStandalone: true, selector: "ai-table-frozen-field-shadow", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ko-line [config]="frozenShadowConfig()"></ko-line>`, isInline: true, dependencies: [{ kind: "component", type: KoShape, 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"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8305
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: AITableFrozenFieldShadow, isStandalone: true, selector: "ai-table-frozen-field-shadow", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ko-rect [config]="frozenShadowConfig()"></ko-rect>`, isInline: true, dependencies: [{ kind: "component", type: KoShape, 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"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8310
8306
  }
8311
8307
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFrozenFieldShadow, decorators: [{
8312
8308
  type: Component,
8313
8309
  args: [{
8314
8310
  selector: 'ai-table-frozen-field-shadow',
8315
- template: `<ko-line [config]="frozenShadowConfig()"></ko-line>`,
8311
+ template: `<ko-rect [config]="frozenShadowConfig()"></ko-rect>`,
8316
8312
  imports: [KoShape],
8317
8313
  changeDetection: ChangeDetectionStrategy.OnPush
8318
8314
  }]
8319
8315
  }] });
8320
8316
 
8317
+ class AITableScrollableGroup {
8318
+ constructor() {
8319
+ this.config = input.required();
8320
+ this.contentTemplate = input.required();
8321
+ this.parentContainer = input();
8322
+ this.scrollPosition = output();
8323
+ this.displayScrollbarTime = signal(null);
8324
+ this.hiddenScrollbar = signal(true);
8325
+ this.isHoverScrollbar = signal(false);
8326
+ // 滚动位置信号
8327
+ this.scrollX = signal(0);
8328
+ this.scrollY = signal(0);
8329
+ // 滚动条拖拽状态
8330
+ this.isDraggingVertical = signal(false);
8331
+ this.isDraggingHorizontal = signal(false);
8332
+ // 容器配置
8333
+ this.containerConfig = computed(() => {
8334
+ const { x = 0, y = 0, width, height } = this.config();
8335
+ return {
8336
+ x,
8337
+ y,
8338
+ width,
8339
+ height,
8340
+ fill: Colors.black,
8341
+ listening: true,
8342
+ clipX: 0,
8343
+ clipY: 0,
8344
+ clipWidth: width,
8345
+ clipHeight: height,
8346
+ name: 'scrollable-group'
8347
+ };
8348
+ });
8349
+ this.bgConfig = computed(() => {
8350
+ const { x = 0, y = 0, width, height } = this.config();
8351
+ return {
8352
+ x: 0,
8353
+ y: 0,
8354
+ width,
8355
+ height,
8356
+ listening: true
8357
+ };
8358
+ });
8359
+ // 内容区域配置
8360
+ this.contentConfig = computed(() => {
8361
+ if (this.config().contentNotScrollbar) {
8362
+ return {
8363
+ offsetX: 0,
8364
+ offsetY: 0
8365
+ };
8366
+ }
8367
+ return {
8368
+ offsetX: this.scrollX(),
8369
+ offsetY: this.scrollY()
8370
+ };
8371
+ });
8372
+ // 是否显示竖向滚动条
8373
+ this.showVerticalScrollbar = computed(() => {
8374
+ const { height, contentHeight, verticalScrollbar } = this.config();
8375
+ return verticalScrollbar && contentHeight > height;
8376
+ });
8377
+ // 是否显示横向滚动条
8378
+ this.showHorizontalScrollbar = computed(() => {
8379
+ const { width, contentWidth, horizontalScrollbar } = this.config();
8380
+ return horizontalScrollbar && contentWidth > width;
8381
+ });
8382
+ // 竖向滚动条配置
8383
+ this.verticalScrollbarConfig = computed(() => {
8384
+ const { width, scrollbarSize = 12 } = this.config();
8385
+ return {
8386
+ x: width - scrollbarSize,
8387
+ y: 0,
8388
+ width: scrollbarSize,
8389
+ height: this.verticalScrollbarHeight()
8390
+ };
8391
+ });
8392
+ // 横向滚动条配置
8393
+ this.horizontalScrollbarConfig = computed(() => {
8394
+ const { height, scrollbarSize = 12 } = this.config();
8395
+ return {
8396
+ x: 0,
8397
+ y: height - scrollbarSize,
8398
+ width: this.horizontalScrollbarHeight(),
8399
+ height: scrollbarSize
8400
+ };
8401
+ });
8402
+ // 竖向滚动条轨道配置
8403
+ this.verticalTrackConfig = computed(() => {
8404
+ const { scrollbarSize = 12, scrollbarTrackColor, height } = this.config();
8405
+ return {
8406
+ x: 0,
8407
+ y: 0,
8408
+ width: scrollbarSize,
8409
+ height: height,
8410
+ fill: scrollbarTrackColor,
8411
+ cornerRadius: 2
8412
+ };
8413
+ });
8414
+ // 横向滚动条轨道配置
8415
+ this.horizontalTrackConfig = computed(() => {
8416
+ const { scrollbarSize = 12, scrollbarTrackColor } = this.config();
8417
+ return {
8418
+ x: 0,
8419
+ y: 0,
8420
+ width: this.horizontalScrollbarHeight(),
8421
+ height: scrollbarSize,
8422
+ fill: scrollbarTrackColor,
8423
+ cornerRadius: 2
8424
+ };
8425
+ });
8426
+ this.verticalThumbMinY = computed(() => {
8427
+ const getAbsolutePositionY = this.verticalTrack.getNode().getAbsolutePosition().y;
8428
+ return getAbsolutePositionY;
8429
+ });
8430
+ // 垂直滚动条滑块的最大Y坐标
8431
+ this.verticalThumbMaxY = computed(() => {
8432
+ const { height, contentHeight } = this.config();
8433
+ const getAbsolutePositionY = this.verticalTrack.getNode().getAbsolutePosition().y;
8434
+ return getAbsolutePositionY + height - this.verticalThumbHeight();
8435
+ });
8436
+ // 横向滚动条滑块的最小X坐标
8437
+ this.horizontalThumbMinX = computed(() => {
8438
+ const getAbsolutePositionX = this.horizontalTrack.getNode().getAbsolutePosition().x;
8439
+ return getAbsolutePositionX;
8440
+ });
8441
+ // 横向滚动条滑块的最大X坐标
8442
+ this.horizontalThumbMaxX = computed(() => {
8443
+ const { width } = this.config();
8444
+ const getAbsolutePositionX = this.horizontalTrack.getNode().getAbsolutePosition().x;
8445
+ return getAbsolutePositionX + width - this.horizontalThumbWidth();
8446
+ });
8447
+ // 竖向滚动条滑块高度
8448
+ this.verticalThumbHeight = computed(() => {
8449
+ const { height, contentHeight } = this.config();
8450
+ const thumbHeight = Math.max(20, (height / contentHeight) * this.verticalScrollbarHeight());
8451
+ return thumbHeight;
8452
+ });
8453
+ // 横向滚动条滑块宽度
8454
+ this.horizontalThumbWidth = computed(() => {
8455
+ const { width, contentWidth } = this.config();
8456
+ const thumbWidth = Math.max(20, (width / contentWidth) * this.horizontalScrollbarHeight());
8457
+ return thumbWidth;
8458
+ });
8459
+ // 竖向滚动条滑块配置
8460
+ this.verticalConfig = computed(() => {
8461
+ if (this.isDraggingVertical()) {
8462
+ return null;
8463
+ }
8464
+ const { scrollbarSize = 12, scrollbarColor = '#c0c0c0' } = this.config();
8465
+ const { height, contentHeight } = this.config();
8466
+ const thumbHeight = this.verticalThumbHeight();
8467
+ const thumbY = (this.scrollY() / (contentHeight - height)) * (this.verticalScrollbarHeight() - thumbHeight);
8468
+ return {
8469
+ x: 1,
8470
+ y: thumbY,
8471
+ width: scrollbarSize - 2,
8472
+ height: thumbHeight,
8473
+ fill: scrollbarColor,
8474
+ cornerRadius: 6,
8475
+ draggable: true,
8476
+ dragBoundFunc: (pos) => {
8477
+ this.isDraggingVertical.set(true);
8478
+ this.displayScrollbarTime.set(new Date());
8479
+ // 限定垂直滚动条的拖拽范围,并更新newScrollY
8480
+ const maxThumbY = this.verticalThumbMaxY();
8481
+ const minThumbY = this.verticalThumbMinY();
8482
+ const newThumbY = Math.max(Math.min(pos.y, maxThumbY), minThumbY);
8483
+ const deltaY = newThumbY - this.verticalTrack.getNode().getAbsolutePosition().y;
8484
+ const newScrollY = (deltaY / (this.verticalScrollbarHeight() - this.verticalThumbHeight())) * (contentHeight - height);
8485
+ this.scrollY.set(newScrollY);
8486
+ const x = this.verticalTrack.getNode().getAbsolutePosition().x + 1;
8487
+ setTimeout(() => {
8488
+ this.isDraggingVertical.set(false);
8489
+ }, 100);
8490
+ return {
8491
+ x: x,
8492
+ y: newThumbY
8493
+ };
8494
+ }
8495
+ };
8496
+ });
8497
+ // 横向滚动条滑块配置
8498
+ this.horizontalThumbConfig = computed(() => {
8499
+ if (this.isDraggingHorizontal()) {
8500
+ return null;
8501
+ }
8502
+ const { scrollbarSize = 12, scrollbarColor = '#c0c0c0' } = this.config();
8503
+ const { width, contentWidth } = this.config();
8504
+ const thumbWidth = this.horizontalThumbWidth();
8505
+ const thumbX = (this.scrollX() / (contentWidth - width)) * (this.horizontalScrollbarHeight() - thumbWidth);
8506
+ return {
8507
+ x: thumbX,
8508
+ y: 1,
8509
+ width: thumbWidth,
8510
+ height: scrollbarSize - 2,
8511
+ fill: scrollbarColor,
8512
+ cornerRadius: 6,
8513
+ draggable: true,
8514
+ dragBoundFunc: (pos) => {
8515
+ this.isDraggingHorizontal.set(true);
8516
+ this.displayScrollbarTime.set(new Date());
8517
+ // 限定横向滚动条的拖拽范围,并更新scrollX
8518
+ const maxThumbX = this.horizontalThumbMaxX();
8519
+ const minThumbX = this.horizontalThumbMinX();
8520
+ const newThumbX = Math.max(Math.min(pos.x, maxThumbX), minThumbX);
8521
+ const deltaX = newThumbX - this.horizontalTrack.getNode().getAbsolutePosition().x;
8522
+ const newScrollX = (deltaX / (this.horizontalScrollbarHeight() - this.horizontalThumbWidth())) * (contentWidth - width);
8523
+ this.scrollX.set(newScrollX);
8524
+ const y = this.horizontalTrack.getNode().getAbsolutePosition().y + 1;
8525
+ setTimeout(() => {
8526
+ this.isDraggingHorizontal.set(false);
8527
+ }, 100);
8528
+ return {
8529
+ x: newThumbX,
8530
+ y: y
8531
+ };
8532
+ }
8533
+ };
8534
+ });
8535
+ // 横向滚动条滑块配置
8536
+ this.verticalScrollbarHeight = computed(() => {
8537
+ const { height } = this.config();
8538
+ return height;
8539
+ });
8540
+ // 获取横向滚动条宽度
8541
+ this.horizontalScrollbarHeight = computed(() => {
8542
+ const { width } = this.config();
8543
+ return width;
8544
+ });
8545
+ // 滚动条延迟隐藏
8546
+ effect(() => {
8547
+ const displayScrollbarTime = this.displayScrollbarTime();
8548
+ if (displayScrollbarTime) {
8549
+ this.hiddenScrollbar.set(false);
8550
+ clearTimeout(this.hiddenScrollbarTimer);
8551
+ this.hiddenScrollbarTimer = setTimeout(() => {
8552
+ this.hiddenScrollbar.set(true);
8553
+ }, 1000);
8554
+ }
8555
+ });
8556
+ effect(() => {
8557
+ const scrollX = this.scrollX();
8558
+ const scrollY = this.scrollY();
8559
+ this.scrollPosition.emit({ scrollX, scrollY });
8560
+ });
8561
+ }
8562
+ ngAfterViewInit() {
8563
+ this.contentTemplate().getNode().moveTo(this.contentGroup.getNode());
8564
+ if (this.parentContainer() && this.rootGroup) {
8565
+ this.rootGroup.getNode().moveTo(this.parentContainer().getNode());
8566
+ }
8567
+ }
8568
+ stopBubble(e) {
8569
+ e.event.cancelBubble = true;
8570
+ }
8571
+ verticalScrollbarClick(e) {
8572
+ e.event.cancelBubble = true;
8573
+ const { contentHeight, height } = this.config();
8574
+ const y = e.event.evt.offsetY - this.verticalThumbHeight() / 2;
8575
+ const maxThumbY = this.verticalThumbMaxY();
8576
+ const minThumbY = this.verticalThumbMinY();
8577
+ const newThumbY = Math.max(Math.min(y, maxThumbY), minThumbY);
8578
+ const deltaY = newThumbY - this.verticalTrack.getNode().getAbsolutePosition().y;
8579
+ const newScrollY = (deltaY / (this.verticalScrollbarHeight() - this.verticalThumbHeight())) * (contentHeight - height);
8580
+ this.scrollY.set(newScrollY);
8581
+ }
8582
+ horizontalScrollbarClick(e) {
8583
+ e.event.cancelBubble = true;
8584
+ const { contentWidth, width } = this.config();
8585
+ const x = e.event.evt.offsetX - this.horizontalThumbWidth() / 2;
8586
+ const maxThumbX = this.horizontalThumbMaxX();
8587
+ const minThumbX = this.horizontalThumbMinX();
8588
+ const newThumbX = Math.max(Math.min(x, maxThumbX), minThumbX);
8589
+ const deltaX = newThumbX - this.horizontalTrack.getNode().getAbsolutePosition().x;
8590
+ const newScrollX = (deltaX / (this.horizontalScrollbarHeight() - this.horizontalThumbWidth())) * (contentWidth - width);
8591
+ this.scrollX.set(newScrollX);
8592
+ }
8593
+ setHoverScrollbarStatus(isHover) {
8594
+ this.isHoverScrollbar.set(isHover);
8595
+ this.displayScrollbarTime.set(new Date());
8596
+ }
8597
+ stageWheel(e) {
8598
+ if (!this.showVerticalScrollbar() && !this.showHorizontalScrollbar()) {
8599
+ return;
8600
+ }
8601
+ this.displayScrollbarTime.set(new Date());
8602
+ e.event.cancelBubble = true;
8603
+ this.scrollByDelta({ deltaX: e.event.evt.deltaX, deltaY: e.event.evt.deltaY });
8604
+ }
8605
+ scrollByDelta(delta) {
8606
+ const { deltaX = 0, deltaY = 0 } = delta;
8607
+ const { contentWidth, contentHeight, width, height, horizontalScrollbar, verticalScrollbar } = this.config();
8608
+ if (horizontalScrollbar && deltaX > 0 && contentWidth - width > this.scrollX()) {
8609
+ const newScrollX = Math.min(this.scrollX() + deltaX, contentWidth - width);
8610
+ if (newScrollX !== this.scrollX()) {
8611
+ this.scrollX.set(newScrollX);
8612
+ }
8613
+ }
8614
+ if (horizontalScrollbar && deltaX < 0 && this.scrollX() > 0) {
8615
+ const newScrollX = Math.max(0, this.scrollX() + deltaX);
8616
+ if (newScrollX !== this.scrollX()) {
8617
+ this.scrollX.set(newScrollX);
8618
+ }
8619
+ }
8620
+ if (verticalScrollbar && deltaY > 0 && contentHeight - height > this.scrollY()) {
8621
+ const newScrollY = Math.min(this.scrollY() + deltaY, contentHeight - height);
8622
+ if (newScrollY !== this.scrollY()) {
8623
+ this.scrollY.set(newScrollY);
8624
+ }
8625
+ }
8626
+ if (verticalScrollbar && deltaY < 0 && this.scrollY() > 0) {
8627
+ const newScrollY = Math.max(0, this.scrollY() + deltaY);
8628
+ if (newScrollY !== this.scrollY()) {
8629
+ this.scrollY.set(newScrollY);
8630
+ }
8631
+ }
8632
+ }
8633
+ // 滚动到指定位置
8634
+ scrollTo(x, y) {
8635
+ const { width, height, contentWidth, contentHeight } = this.config();
8636
+ this.scrollX.set(Math.max(0, Math.min(contentWidth - width, x)));
8637
+ this.scrollY.set(Math.max(0, Math.min(contentHeight - height, y)));
8638
+ }
8639
+ // 滚动到顶部
8640
+ scrollToTop() {
8641
+ this.scrollY.set(0);
8642
+ }
8643
+ // 滚动到底部
8644
+ scrollToBottom() {
8645
+ const { height, contentHeight } = this.config();
8646
+ this.scrollY.set(Math.max(0, contentHeight - height));
8647
+ }
8648
+ // 滚动到左侧
8649
+ scrollToLeft() {
8650
+ this.scrollX.set(0);
8651
+ }
8652
+ // 滚动到右侧
8653
+ scrollToRight() {
8654
+ const { width, contentWidth } = this.config();
8655
+ this.scrollX.set(Math.max(0, contentWidth - width));
8656
+ }
8657
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableScrollableGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8658
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableScrollableGroup, isStandalone: true, selector: "ai-table-scrollable-group", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, contentTemplate: { classPropertyName: "contentTemplate", publicName: "contentTemplate", isSignal: true, isRequired: true, transformFunction: null }, parentContainer: { classPropertyName: "parentContainer", publicName: "parentContainer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrollPosition: "scrollPosition" }, viewQueries: [{ propertyName: "verticalTrack", first: true, predicate: ["verticalTrack"], descendants: true }, { propertyName: "verticalThumb", first: true, predicate: ["verticalThumb"], descendants: true }, { propertyName: "horizontalTrack", first: true, predicate: ["horizontalTrack"], descendants: true }, { propertyName: "contentGroup", first: true, predicate: ["contentGroup"], descendants: true }, { propertyName: "rootGroup", first: true, predicate: ["rootGroup"], descendants: true }], ngImport: i0, template: `
8659
+ <ko-group
8660
+ #rootGroup
8661
+ [config]="containerConfig()"
8662
+ (koWheel)="stageWheel($event)"
8663
+ (koMousedown)="stopBubble($event)"
8664
+ (koMouseup)="stopBubble($event)"
8665
+ >
8666
+ <ko-group>
8667
+ <ko-rect [config]="bgConfig()"></ko-rect>
8668
+ </ko-group>
8669
+
8670
+ <!-- 内容区域 -->
8671
+ <ko-group #contentGroup [config]="contentConfig()">
8672
+ <ng-content></ng-content>
8673
+ </ko-group>
8674
+
8675
+ <ko-group>
8676
+ @if (showVerticalScrollbar()) {
8677
+ <ko-group
8678
+ [config]="verticalScrollbarConfig()"
8679
+ (koMouseenter)="setHoverScrollbarStatus(true)"
8680
+ (koMouseleave)="setHoverScrollbarStatus(false)"
8681
+ (koClick)="verticalScrollbarClick($event)"
8682
+ >
8683
+ <!-- 滚动条轨道 -->
8684
+ <ko-rect #verticalTrack [config]="verticalTrackConfig()"></ko-rect>
8685
+ <!-- 滚动条滑块 -->
8686
+ @if (!hiddenScrollbar() || isHoverScrollbar()) {
8687
+ <ko-rect #verticalThumb [config]="verticalConfig()"></ko-rect>
8688
+ }
8689
+ </ko-group>
8690
+ }
8691
+
8692
+ <!-- 横向滚动条 -->
8693
+ @if (showHorizontalScrollbar()) {
8694
+ <ko-group
8695
+ [config]="horizontalScrollbarConfig()"
8696
+ (koMouseenter)="setHoverScrollbarStatus(true)"
8697
+ (koMouseleave)="setHoverScrollbarStatus(false)"
8698
+ (koClick)="horizontalScrollbarClick($event)"
8699
+ >
8700
+ <!-- 滚动条轨道 -->
8701
+ <ko-rect #horizontalTrack [config]="horizontalTrackConfig()"></ko-rect>
8702
+ <!-- 滚动条滑块 -->
8703
+ @if (!hiddenScrollbar() || isHoverScrollbar()) {
8704
+ <ko-rect [config]="horizontalThumbConfig()"></ko-rect>
8705
+ }
8706
+ </ko-group>
8707
+ }
8708
+ </ko-group>
8709
+ </ko-group>
8710
+ `, isInline: true, dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoShape, 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"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8711
+ }
8712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableScrollableGroup, decorators: [{
8713
+ type: Component,
8714
+ args: [{
8715
+ selector: 'ai-table-scrollable-group',
8716
+ template: `
8717
+ <ko-group
8718
+ #rootGroup
8719
+ [config]="containerConfig()"
8720
+ (koWheel)="stageWheel($event)"
8721
+ (koMousedown)="stopBubble($event)"
8722
+ (koMouseup)="stopBubble($event)"
8723
+ >
8724
+ <ko-group>
8725
+ <ko-rect [config]="bgConfig()"></ko-rect>
8726
+ </ko-group>
8727
+
8728
+ <!-- 内容区域 -->
8729
+ <ko-group #contentGroup [config]="contentConfig()">
8730
+ <ng-content></ng-content>
8731
+ </ko-group>
8732
+
8733
+ <ko-group>
8734
+ @if (showVerticalScrollbar()) {
8735
+ <ko-group
8736
+ [config]="verticalScrollbarConfig()"
8737
+ (koMouseenter)="setHoverScrollbarStatus(true)"
8738
+ (koMouseleave)="setHoverScrollbarStatus(false)"
8739
+ (koClick)="verticalScrollbarClick($event)"
8740
+ >
8741
+ <!-- 滚动条轨道 -->
8742
+ <ko-rect #verticalTrack [config]="verticalTrackConfig()"></ko-rect>
8743
+ <!-- 滚动条滑块 -->
8744
+ @if (!hiddenScrollbar() || isHoverScrollbar()) {
8745
+ <ko-rect #verticalThumb [config]="verticalConfig()"></ko-rect>
8746
+ }
8747
+ </ko-group>
8748
+ }
8749
+
8750
+ <!-- 横向滚动条 -->
8751
+ @if (showHorizontalScrollbar()) {
8752
+ <ko-group
8753
+ [config]="horizontalScrollbarConfig()"
8754
+ (koMouseenter)="setHoverScrollbarStatus(true)"
8755
+ (koMouseleave)="setHoverScrollbarStatus(false)"
8756
+ (koClick)="horizontalScrollbarClick($event)"
8757
+ >
8758
+ <!-- 滚动条轨道 -->
8759
+ <ko-rect #horizontalTrack [config]="horizontalTrackConfig()"></ko-rect>
8760
+ <!-- 滚动条滑块 -->
8761
+ @if (!hiddenScrollbar() || isHoverScrollbar()) {
8762
+ <ko-rect [config]="horizontalThumbConfig()"></ko-rect>
8763
+ }
8764
+ </ko-group>
8765
+ }
8766
+ </ko-group>
8767
+ </ko-group>
8768
+ `,
8769
+ imports: [KoContainer, KoShape],
8770
+ changeDetection: ChangeDetectionStrategy.OnPush
8771
+ }]
8772
+ }], ctorParameters: () => [], propDecorators: { verticalTrack: [{
8773
+ type: ViewChild,
8774
+ args: ['verticalTrack']
8775
+ }], verticalThumb: [{
8776
+ type: ViewChild,
8777
+ args: ['verticalThumb']
8778
+ }], horizontalTrack: [{
8779
+ type: ViewChild,
8780
+ args: ['horizontalTrack']
8781
+ }], contentGroup: [{
8782
+ type: ViewChild,
8783
+ args: ['contentGroup']
8784
+ }], rootGroup: [{
8785
+ type: ViewChild,
8786
+ args: ['rootGroup']
8787
+ }] } });
8788
+
8321
8789
  class AITableFillHandle {
8322
8790
  constructor() {
8323
8791
  this.config = input.required();
@@ -8376,7 +8844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
8376
8844
  }]
8377
8845
  }] });
8378
8846
 
8379
- class AITableCoverCells {
8847
+ class AITableCoverCellEntry {
8380
8848
  constructor() {
8381
8849
  this.config = input.required();
8382
8850
  this.onlyDisplayBorder = input(false);
@@ -8446,10 +8914,10 @@ class AITableCoverCells {
8446
8914
  });
8447
8915
  this.coverCell = computed(() => getCoverCell(this.config().aiTable));
8448
8916
  }
8449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableCoverCells, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableCoverCells, isStandalone: true, selector: "ai-table-cover-cell", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onlyDisplayBorder: { classPropertyName: "onlyDisplayBorder", publicName: "onlyDisplayBorder", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
8917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableCoverCellEntry, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8918
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableCoverCellEntry, isStandalone: true, selector: "ai-table-cover-cell-entry", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onlyDisplayBorder: { classPropertyName: "onlyDisplayBorder", publicName: "onlyDisplayBorder", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
8451
8919
  @if (coverCell()) {
8452
- <ko-group [config]="groupConfig()">
8920
+ <ko-group #rootGroup [config]="groupConfig()">
8453
8921
  <ng-container
8454
8922
  *ngComponentOutlet="
8455
8923
  coverCell()!.renderComponentDefinition;
@@ -8461,13 +8929,13 @@ class AITableCoverCells {
8461
8929
  }
8462
8930
  `, isInline: true, dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8463
8931
  }
8464
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableCoverCells, decorators: [{
8932
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableCoverCellEntry, decorators: [{
8465
8933
  type: Component,
8466
8934
  args: [{
8467
- selector: 'ai-table-cover-cell',
8935
+ selector: 'ai-table-cover-cell-entry',
8468
8936
  template: `
8469
8937
  @if (coverCell()) {
8470
- <ko-group [config]="groupConfig()">
8938
+ <ko-group #rootGroup [config]="groupConfig()">
8471
8939
  <ng-container
8472
8940
  *ngComponentOutlet="
8473
8941
  coverCell()!.renderComponentDefinition;
@@ -8865,6 +9333,7 @@ class AITableRenderer {
8865
9333
  this.koClick = output();
8866
9334
  this.koDblclick = output();
8867
9335
  this.koMouseleave = output();
9336
+ this.onScrollPosition = output();
8868
9337
  this.isHoverStatContainer = signal(false);
8869
9338
  this.fields = computed(() => {
8870
9339
  return AITable.getVisibleFields(this.config().aiTable);
@@ -8929,6 +9398,12 @@ class AITableRenderer {
8929
9398
  height: AI_TABLE_FIELD_STAT_CONTAINER_HEIGHT
8930
9399
  };
8931
9400
  });
9401
+ this.scrollTotalHeight = computed(() => {
9402
+ return Math.max(this.coordinate().totalHeight, this.containerHeight() - AI_TABLE_FIELD_HEAD_HEIGHT);
9403
+ });
9404
+ this.scrollTotalWidth = computed(() => {
9405
+ return this.coordinate().totalWidth + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
9406
+ });
8932
9407
  this.commonGroupConfig = computed(() => {
8933
9408
  return {
8934
9409
  clipX: this.frozenAreaWidth() + 1,
@@ -9138,11 +9613,14 @@ class AITableRenderer {
9138
9613
  stageMouseleave(e) {
9139
9614
  this.koMouseleave.emit(e);
9140
9615
  }
9616
+ stageWheel(e) {
9617
+ this.koWheel.emit(e);
9618
+ }
9141
9619
  onStatContainerHover(isHover) {
9142
9620
  this.isHoverStatContainer.set(isHover);
9143
9621
  }
9144
9622
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnFrozenHeadFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-field-shadow [config]=\"config()\"></ai-table-frozen-field-shadow>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"statGroupConfig()\">\n <ai-table-background [config]=\"columnFieldStatsBgConfig()\"></ai-table-background>\n <ko-group>\n <ai-table-column-stats\n [config]=\"columnFrozenFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n <ko-group [config]=\"statCommonGroupConfig()\">\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-stats\n [config]=\"columnFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n </ko-group>\n <ko-group>\n <ai-table-frozen-field-shadow [config]=\"columnFieldStatsConfig()\" position=\"fieldStats\"></ai-table-frozen-field-shadow>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, 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"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableCoverCells, selector: "ai-table-cover-cell", inputs: ["config", "onlyDisplayBorder"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }, { kind: "component", type: AITableFillHandle, selector: "ai-table-fill-handle", inputs: ["config"] }, { kind: "component", type: AITableFieldStats, selector: "ai-table-column-stats", inputs: ["config"], outputs: ["hover"] }, { kind: "component", type: AITableBackground, selector: "ai-table-background", inputs: ["config", "isActive", "isHover"], outputs: ["koClick", "hover", "koMouseenter", "koMouseleave", "isHoverChange"] }, { kind: "component", type: AITableFrozenFieldShadow, selector: "ai-table-frozen-field-shadow", inputs: ["config", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9623
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave", onScrollPosition: "onScrollPosition" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n (koWheel)=\"stageWheel($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnFrozenHeadFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group #commonOffsetGroup [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\"></ai-table-cover-cell-entry>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-field-shadow [config]=\"config()\"></ai-table-frozen-field-shadow>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell-entry>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group #frozenCoverAttachOffsetGroup [config]=\"offsetYConfig()\">\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\"></ai-table-cover-cell-entry>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell-entry>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"statGroupConfig()\">\n <ai-table-background [config]=\"columnFieldStatsBgConfig()\"></ai-table-background>\n <ko-group>\n <ai-table-column-stats\n [config]=\"columnFrozenFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n <ko-group [config]=\"statCommonGroupConfig()\">\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-stats\n [config]=\"columnFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n </ko-group>\n <ko-group>\n <ai-table-frozen-field-shadow [config]=\"columnFieldStatsConfig()\" position=\"fieldStats\"></ai-table-frozen-field-shadow>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, 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"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableCoverCellEntry, selector: "ai-table-cover-cell-entry", inputs: ["config", "onlyDisplayBorder"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }, { kind: "component", type: AITableFillHandle, selector: "ai-table-fill-handle", inputs: ["config"] }, { kind: "component", type: AITableFieldStats, selector: "ai-table-column-stats", inputs: ["config"], outputs: ["hover"] }, { kind: "component", type: AITableBackground, selector: "ai-table-background", inputs: ["config", "isActive", "isHover"], outputs: ["koClick", "hover", "koMouseenter", "koMouseleave", "isHoverChange"] }, { kind: "component", type: AITableFrozenFieldShadow, selector: "ai-table-frozen-field-shadow", inputs: ["config", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9146
9624
  }
9147
9625
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableRenderer, decorators: [{
9148
9626
  type: Component,
@@ -9155,7 +9633,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
9155
9633
  AITableCells,
9156
9634
  AITableFrozenCells,
9157
9635
  AITableFrozenPlaceholderCells,
9158
- AITableCoverCells,
9636
+ AITableCoverCellEntry,
9159
9637
  AITablePlaceholderCells,
9160
9638
  AITableAddField,
9161
9639
  AITableHoverRowHeads,
@@ -9164,10 +9642,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
9164
9642
  AITableFieldStats,
9165
9643
  AITableBackground,
9166
9644
  AITableFrozenFieldShadow
9167
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnFrozenHeadFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-field-shadow [config]=\"config()\"></ai-table-frozen-field-shadow>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"statGroupConfig()\">\n <ai-table-background [config]=\"columnFieldStatsBgConfig()\"></ai-table-background>\n <ko-group>\n <ai-table-column-stats\n [config]=\"columnFrozenFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n <ko-group [config]=\"statCommonGroupConfig()\">\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-stats\n [config]=\"columnFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n </ko-group>\n <ko-group>\n <ai-table-frozen-field-shadow [config]=\"columnFieldStatsConfig()\" position=\"fieldStats\"></ai-table-frozen-field-shadow>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
9645
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n (koWheel)=\"stageWheel($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnFrozenHeadFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group #commonOffsetGroup [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\"></ai-table-cover-cell-entry>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-field-shadow [config]=\"config()\"></ai-table-frozen-field-shadow>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell-entry>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group #frozenCoverAttachOffsetGroup [config]=\"offsetYConfig()\">\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\"></ai-table-cover-cell-entry>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell-entry [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell-entry>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"statGroupConfig()\">\n <ai-table-background [config]=\"columnFieldStatsBgConfig()\"></ai-table-background>\n <ko-group>\n <ai-table-column-stats\n [config]=\"columnFrozenFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n <ko-group [config]=\"statCommonGroupConfig()\">\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-stats\n [config]=\"columnFieldStatsConfig()\"\n (hover)=\"onStatContainerHover($event)\"\n ></ai-table-column-stats>\n </ko-group>\n </ko-group>\n <ko-group>\n <ai-table-frozen-field-shadow [config]=\"columnFieldStatsConfig()\" position=\"fieldStats\"></ai-table-frozen-field-shadow>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
9168
9646
  }] });
9169
9647
 
9170
- class AITableCellRate extends CoverCellComponent {
9648
+ class AITableCellRate extends CoverCellBase {
9171
9649
  constructor() {
9172
9650
  super(...arguments);
9173
9651
  this.pointerX = signal(0);
@@ -9316,7 +9794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
9316
9794
  }]
9317
9795
  }] });
9318
9796
 
9319
- class AITableCellProgress extends CoverCellComponent {
9797
+ class AITableCellProgress extends CoverCellBase {
9320
9798
  constructor() {
9321
9799
  super(...arguments);
9322
9800
  this.readonly = computed(() => {
@@ -11314,6 +11792,7 @@ class AITableGrid extends AITableGridBase {
11314
11792
  };
11315
11793
  this.dragFillState = {
11316
11794
  isDragging: false,
11795
+ activeCell: null,
11317
11796
  sourceCells: new Set()
11318
11797
  };
11319
11798
  this.notifyService = inject(ThyNotifyService);
@@ -11475,7 +11954,6 @@ class AITableGrid extends AITableGridBase {
11475
11954
  this.setContainerRect();
11476
11955
  this.bindGlobalMousedown();
11477
11956
  this.containerResizeListener();
11478
- this.bindWheel();
11479
11957
  this.bindShortcuts();
11480
11958
  });
11481
11959
  effect(() => {
@@ -11612,7 +12090,7 @@ class AITableGrid extends AITableGridBase {
11612
12090
  if (this.dragFillState.isDragging) {
11613
12091
  setMouseStyle('crosshair', this.containerElement());
11614
12092
  const { highlightStartCell, highlightEndCell } = dragFillHighlightArea(this.aiTable, this.dragFillState.sourceCells, recordId);
11615
- activeCell = this.aiTable.selection().activeCell;
12093
+ activeCell = this.dragFillState.activeCell;
11616
12094
  startCell = highlightStartCell;
11617
12095
  endCell = highlightEndCell;
11618
12096
  }
@@ -11667,6 +12145,7 @@ class AITableGrid extends AITableGridBase {
11667
12145
  return;
11668
12146
  this.updateDragFillState({
11669
12147
  isDragging: true,
12148
+ activeCell: this.aiTable.selection().activeCell,
11670
12149
  sourceCells: this.aiTable.selection().selectedCells
11671
12150
  });
11672
12151
  return;
@@ -11706,7 +12185,7 @@ class AITableGrid extends AITableGridBase {
11706
12185
  const gridStage = e.event.currentTarget.getStage();
11707
12186
  const pos = gridStage?.getPointerPosition();
11708
12187
  if (pos == null) {
11709
- this.updateDragFillState({ isDragging: false, sourceCells: new Set() });
12188
+ this.updateDragFillState({ isDragging: false, activeCell: null, sourceCells: new Set() });
11710
12189
  return;
11711
12190
  }
11712
12191
  const { context } = this.aiTable;
@@ -11716,7 +12195,7 @@ class AITableGrid extends AITableGridBase {
11716
12195
  if (recordId) {
11717
12196
  performFill(this.aiTable, this.dragFillState.sourceCells, recordId, this.actions);
11718
12197
  }
11719
- this.updateDragFillState({ isDragging: false, sourceCells: new Set() });
12198
+ this.updateDragFillState({ isDragging: false, activeCell: null, sourceCells: new Set() });
11720
12199
  }
11721
12200
  stageMouseleave(e) {
11722
12201
  if (!this.isDragSelectionAutoScrolling) {
@@ -11732,6 +12211,11 @@ class AITableGrid extends AITableGridBase {
11732
12211
  this.setDefaultPointPosition();
11733
12212
  });
11734
12213
  }
12214
+ stageWheel(e) {
12215
+ e.event.evt.preventDefault();
12216
+ this.aiTableGridEventService.closeCellEditor();
12217
+ this.scrollAction({ deltaX: e.event.evt.deltaX, deltaY: e.event.evt.deltaY, shiftKey: e.event.evt.shiftKey });
12218
+ }
11735
12219
  stageContextmenu(e) {
11736
12220
  const mouseEvent = e.event.evt;
11737
12221
  mouseEvent.preventDefault();
@@ -11871,15 +12355,6 @@ class AITableGrid extends AITableGridBase {
11871
12355
  }, 0);
11872
12356
  }
11873
12357
  }
11874
- bindWheel() {
11875
- fromEvent(this.containerElement(), 'wheel', { passive: false })
11876
- .pipe(takeUntilDestroyed(this.destroyRef))
11877
- .subscribe((e) => {
11878
- e.preventDefault();
11879
- this.aiTableGridEventService.closeCellEditor();
11880
- this.scrollAction({ deltaX: e.deltaX, deltaY: e.deltaY, shiftKey: e.shiftKey });
11881
- });
11882
- }
11883
12358
  setDefaultPointPosition() {
11884
12359
  const { context } = this.aiTable;
11885
12360
  context.setPointPosition(DEFAULT_POINT_POSITION);
@@ -12131,7 +12606,21 @@ class AITableGrid extends AITableGridBase {
12131
12606
  const nextField = gridData.fields[!isHorizontalScroll || scrollLeft > 0 ? nextCellIndex : nextCellIndex + 1];
12132
12607
  const nextRecord = gridData.records[nextRowIndex];
12133
12608
  if (nextField && nextRecord) {
12134
- this.aiTableGridSelectionService.selectCells([startCell[0], startCell[1]], [nextRecord._id, nextField._id]);
12609
+ let newStartCell = null;
12610
+ let newEndCell = null;
12611
+ let newActiveCell = null;
12612
+ if (this.dragFillState.isDragging) {
12613
+ const { highlightStartCell, highlightEndCell } = dragFillHighlightArea(this.aiTable, this.dragFillState.sourceCells, nextRecord._id);
12614
+ newStartCell = highlightStartCell;
12615
+ newEndCell = highlightEndCell;
12616
+ newActiveCell = this.dragFillState.activeCell;
12617
+ }
12618
+ else {
12619
+ newStartCell = [startCell[0], startCell[1]];
12620
+ newEndCell = [nextRecord._id, nextField._id];
12621
+ newActiveCell = null;
12622
+ }
12623
+ this.aiTableGridSelectionService.selectCells(newStartCell, newEndCell, newActiveCell);
12135
12624
  }
12136
12625
  }
12137
12626
  },
@@ -12142,18 +12631,18 @@ class AITableGrid extends AITableGridBase {
12142
12631
  });
12143
12632
  }
12144
12633
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", host: { classAttribute: "ai-table-grid" }, providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService, AITableScrollControllerService], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "verticalBarRef", first: true, predicate: ["verticalBar"], descendants: true, isSignal: true }, { propertyName: "horizontalBarRef", first: true, predicate: ["horizontalBar"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n >\n @if (domToolTips().length > 0) {\n <div\n class=\"ai-table-left-background-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n @for (domToolTip of domToolTips(); track trackBy(idx, domToolTip); let idx = $index) {\n <div\n class=\"ai-table-left-background\"\n [thyTooltip]=\"i18nTexts().rowAddFilterTooltip\"\n [style.--scroll-top.px]=\"domToolTip.top\"\n >\n <thy-icon class=\"text-white\" thyIconName=\"filter-line\"></thy-icon>\n </div>\n }\n </div>\n }\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n <ai-table-drag [horizontalBar]=\"horizontalBarRef()\" [verticalBar]=\"verticalBarRef()\" (dragEnd)=\"dragEnd($event)\"></ai-table-drag>\n</div>\n", dependencies: [{ kind: "component", type: AITableRenderer, selector: "ai-table-renderer", inputs: ["config"], outputs: ["koMousemove", "koMousedown", "koMouseup", "koContextmenu", "koWheel", "koClick", "koDblclick", "koMouseleave"] }, { kind: "component", type: AITableDragComponent, selector: "ai-table-drag", inputs: ["horizontalBar", "verticalBar"], outputs: ["dragEnd"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", host: { classAttribute: "ai-table-grid" }, providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService, AITableScrollControllerService], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "verticalBarRef", first: true, predicate: ["verticalBar"], descendants: true, isSignal: true }, { propertyName: "horizontalBarRef", first: true, predicate: ["horizontalBar"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n (koWheel)=\"stageWheel($event)\"\n >\n @if (domToolTips().length > 0) {\n <div\n class=\"ai-table-left-background-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n @for (domToolTip of domToolTips(); track trackBy(idx, domToolTip); let idx = $index) {\n <div\n class=\"ai-table-left-background\"\n [thyTooltip]=\"i18nTexts().rowAddFilterTooltip\"\n [style.--scroll-top.px]=\"domToolTip.top\"\n >\n <thy-icon class=\"text-white\" thyIconName=\"filter-line\"></thy-icon>\n </div>\n }\n </div>\n }\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n <ai-table-drag [horizontalBar]=\"horizontalBarRef()\" [verticalBar]=\"verticalBarRef()\" (dragEnd)=\"dragEnd($event)\"></ai-table-drag>\n</div>\n", dependencies: [{ kind: "component", type: AITableRenderer, selector: "ai-table-renderer", inputs: ["config"], outputs: ["koMousemove", "koMousedown", "koMouseup", "koContextmenu", "koWheel", "koClick", "koDblclick", "koMouseleave", "onScrollPosition"] }, { kind: "component", type: AITableDragComponent, selector: "ai-table-drag", inputs: ["horizontalBar", "verticalBar"], outputs: ["dragEnd"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12146
12635
  }
12147
12636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableGrid, decorators: [{
12148
12637
  type: Component,
12149
12638
  args: [{ selector: 'ai-table-grid', changeDetection: ChangeDetectionStrategy.OnPush, host: {
12150
12639
  class: 'ai-table-grid'
12151
- }, imports: [AITableRenderer, AITableDragComponent, ThyTooltipDirective, ThyIcon], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService, AITableScrollControllerService], template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n >\n @if (domToolTips().length > 0) {\n <div\n class=\"ai-table-left-background-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n @for (domToolTip of domToolTips(); track trackBy(idx, domToolTip); let idx = $index) {\n <div\n class=\"ai-table-left-background\"\n [thyTooltip]=\"i18nTexts().rowAddFilterTooltip\"\n [style.--scroll-top.px]=\"domToolTip.top\"\n >\n <thy-icon class=\"text-white\" thyIconName=\"filter-line\"></thy-icon>\n </div>\n }\n </div>\n }\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n <ai-table-drag [horizontalBar]=\"horizontalBarRef()\" [verticalBar]=\"verticalBarRef()\" (dragEnd)=\"dragEnd($event)\"></ai-table-drag>\n</div>\n" }]
12640
+ }, imports: [AITableRenderer, AITableDragComponent, ThyTooltipDirective, ThyIcon], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService, AITableScrollControllerService], template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n (koWheel)=\"stageWheel($event)\"\n >\n @if (domToolTips().length > 0) {\n <div\n class=\"ai-table-left-background-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n @for (domToolTip of domToolTips(); track trackBy(idx, domToolTip); let idx = $index) {\n <div\n class=\"ai-table-left-background\"\n [thyTooltip]=\"i18nTexts().rowAddFilterTooltip\"\n [style.--scroll-top.px]=\"domToolTip.top\"\n >\n <thy-icon class=\"text-white\" thyIconName=\"filter-line\"></thy-icon>\n </div>\n }\n </div>\n }\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n <ai-table-drag [horizontalBar]=\"horizontalBarRef()\" [verticalBar]=\"verticalBarRef()\" (dragEnd)=\"dragEnd($event)\"></ai-table-drag>\n</div>\n" }]
12152
12641
  }], ctorParameters: () => [] });
12153
12642
 
12154
12643
  /**
12155
12644
  * Generated bundle index. Do not edit.
12156
12645
  */
12157
12646
 
12158
- export { AITable, AITableActionIcon, AITableAddField, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableBackground, AITableCellAttachment, AITableCellLink, AITableCellProgress, AITableCellRate, AITableCellRichText, AITableCells, AITableCheckType, AITableColumnHeads, AITableContextMenu, AITableDomGrid, AITableFieldHead, AITableFieldIcon, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenFieldShadow, AITableFrozenPlaceholderCells, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridI18nText, AITableGridSelectionService, AITableHoverRowHeads, AITableIcon, AITableMemberType, AITableMouseDownType, AITableOtherRows, AITablePlaceholderCells, AITableQueries, AITableRenderer, AITableRowType, AITableSelectAllState, AITableTextComponent, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_AUTO_SCROLL_BOTTOM_THRESHOLD, AI_TABLE_AUTO_SCROLL_LEFT_THRESHOLD, AI_TABLE_AUTO_SCROLL_RIGHT_THRESHOLD, AI_TABLE_AUTO_SCROLL_TOP_THRESHOLD, 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_LINE_BORDER, 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_FIELD_STAT_BG, AI_TABLE_FIELD_STAT_CONTAINER_HEIGHT, AI_TABLE_FIELD_STAT_INNER_HEIGHT, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_FILL_HANDLE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_INDEX_FIELD_TEXT, 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_OPTION_MULTI_ITEM_FONT_SIZE, 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_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEAD_WIDTH_AND_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_SCROLL_BAR_SIZE, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AI_TABLE_TEXT_LINE_HEIGHT, AbstractEditCellEditor, AddOutlinedPath, AngleDownPath, AttachmentField, AttachmentPath, CellDrawer, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, CoverCellComponent, 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, DateField, DepartmentOutlinedPath, Drawer, EditPath, FONT_SIZE_SM, FieldModelMap, IconPathMap, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, LinkField, MIN_COLUMN_WIDTH, MemberField, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, NumberField, ProgressField, RateField, RendererContext, RichTextField, RowDragPath, RowHeight, SelectCellEditorComponent, SelectField, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextField, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, aiTableImageConfigToKonvaConfig, aiTableRectConfigToKonvaConfig, aiTableTextConfigToKonvaConfig, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, cellDrawer, clearCells, compareNumber, compareOption, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, dragFillHighlightArea, drawer, expandCell, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getCoverCell, getDateFieldValues, getDefaultFieldOptions, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptionMap, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getFillDirection, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getOptionsByFieldAndRecords, getPlaceHolderCellsConfigs, getStartAndEndCell, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, graphemeSplitter, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmptyOrNot, isMac, isMeetFilter, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isVirtualKey, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, performFill, processPastedValueForSelect, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, statDateRangeOfDays, statDateRangeOfMonths, statEarliestTime, statLatestTime, stringInclude, textDataCache, toAttachmentFieldValue, toDateFieldValue, toLinkFieldValue, toMemberFieldValue, toNumberFieldValue, toProgressFieldValue, toRateFieldValue, toRichTextFieldValue, toSelectFieldValue, toTextFieldValue, transformToCellText, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
12647
+ export { AITable, AITableActionIcon, AITableAddField, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableBackground, AITableCellAttachment, AITableCellLink, AITableCellProgress, AITableCellRate, AITableCellRichText, AITableCells, AITableCheckType, AITableColumnHeads, AITableContextMenu, AITableDomGrid, AITableFieldHead, AITableFieldIcon, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenFieldShadow, AITableFrozenPlaceholderCells, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridI18nText, AITableGridSelectionService, AITableHoverRowHeads, AITableIcon, AITableMemberType, AITableMouseDownType, AITableOtherRows, AITablePlaceholderCells, AITableQueries, AITableRenderer, AITableRowType, AITableScrollableGroup, AITableSelectAllState, AITableTextComponent, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_AUTO_SCROLL_BOTTOM_THRESHOLD, AI_TABLE_AUTO_SCROLL_LEFT_THRESHOLD, AI_TABLE_AUTO_SCROLL_RIGHT_THRESHOLD, AI_TABLE_AUTO_SCROLL_TOP_THRESHOLD, 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_LINE_BORDER, 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_FIELD_STAT_BG, AI_TABLE_FIELD_STAT_CONTAINER_HEIGHT, AI_TABLE_FIELD_STAT_INNER_HEIGHT, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_FILL_HANDLE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_INDEX_FIELD_TEXT, 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_OPTION_MULTI_ITEM_FONT_SIZE, 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_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEAD_WIDTH_AND_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_SCROLL_BAR_SIZE, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AI_TABLE_TEXT_LINE_HEIGHT, AbstractEditCellEditor, AddOutlinedPath, AngleDownPath, AttachmentField, AttachmentPath, CellDrawer, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, CoverCellBase, 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, DateField, DepartmentOutlinedPath, Drawer, EditPath, FONT_SIZE_SM, FieldModelMap, IconPathMap, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, LinkField, MIN_COLUMN_WIDTH, MemberField, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, NumberField, ProgressField, RateField, RendererContext, RichTextField, RowDragPath, RowHeight, SelectCellEditorComponent, SelectField, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextField, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, aiTableImageConfigToKonvaConfig, aiTableRectConfigToKonvaConfig, aiTableTextConfigToKonvaConfig, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, cellDrawer, clearCells, compareNumber, compareOption, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, dragFillHighlightArea, drawer, expandCell, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getCoverCell, getDateFieldValues, getDefaultFieldOptions, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptionMap, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getFillDirection, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getOptionsByFieldAndRecords, getPlaceHolderCellsConfigs, getStartAndEndCell, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, graphemeSplitter, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmptyOrNot, isMac, isMeetFilter, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isVirtualKey, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, performFill, processPastedValueForSelect, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, statDateRangeOfDays, statDateRangeOfMonths, statEarliestTime, statLatestTime, stringInclude, textDataCache, toAttachmentFieldValue, toDateFieldValue, toLinkFieldValue, toMemberFieldValue, toNumberFieldValue, toProgressFieldValue, toRateFieldValue, toRichTextFieldValue, toSelectFieldValue, toTextFieldValue, transformToCellText, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
12159
12648
  //# sourceMappingURL=ai-table-grid.mjs.map