@visactor/vtable-plugins 1.18.2-alpha.2 → 1.18.2

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 (53) hide show
  1. package/cjs/add-row-column.d.ts +1 -0
  2. package/cjs/add-row-column.js +1 -1
  3. package/cjs/add-row-column.js.map +1 -1
  4. package/cjs/carousel-animation.js.map +1 -1
  5. package/cjs/column-series.d.ts +2 -1
  6. package/cjs/column-series.js +5 -4
  7. package/cjs/column-series.js.map +1 -1
  8. package/cjs/excel-edit-cell-keyboard.d.ts +1 -0
  9. package/cjs/excel-edit-cell-keyboard.js +3 -2
  10. package/cjs/excel-edit-cell-keyboard.js.map +1 -1
  11. package/cjs/focus-highlight.d.ts +2 -1
  12. package/cjs/focus-highlight.js +6 -3
  13. package/cjs/focus-highlight.js.map +1 -1
  14. package/cjs/highlight-header-when-select-cell.d.ts +2 -0
  15. package/cjs/highlight-header-when-select-cell.js +5 -1
  16. package/cjs/highlight-header-when-select-cell.js.map +1 -1
  17. package/cjs/rotate-table.d.ts +3 -0
  18. package/cjs/rotate-table.js +18 -10
  19. package/cjs/rotate-table.js.map +1 -1
  20. package/cjs/row-series.d.ts +2 -1
  21. package/cjs/row-series.js +5 -5
  22. package/cjs/row-series.js.map +1 -1
  23. package/cjs/table-carousel-animation.d.ts +1 -0
  24. package/cjs/table-carousel-animation.js +3 -2
  25. package/cjs/table-carousel-animation.js.map +1 -1
  26. package/dist/vtable-plugins.js +64 -26
  27. package/dist/vtable-plugins.min.js +1 -1
  28. package/es/add-row-column.d.ts +1 -0
  29. package/es/add-row-column.js +1 -1
  30. package/es/add-row-column.js.map +1 -1
  31. package/es/carousel-animation.js.map +1 -1
  32. package/es/column-series.d.ts +2 -1
  33. package/es/column-series.js +5 -4
  34. package/es/column-series.js.map +1 -1
  35. package/es/excel-edit-cell-keyboard.d.ts +1 -0
  36. package/es/excel-edit-cell-keyboard.js +3 -2
  37. package/es/excel-edit-cell-keyboard.js.map +1 -1
  38. package/es/focus-highlight.d.ts +2 -1
  39. package/es/focus-highlight.js +7 -4
  40. package/es/focus-highlight.js.map +1 -1
  41. package/es/highlight-header-when-select-cell.d.ts +2 -0
  42. package/es/highlight-header-when-select-cell.js +5 -1
  43. package/es/highlight-header-when-select-cell.js.map +1 -1
  44. package/es/rotate-table.d.ts +3 -0
  45. package/es/rotate-table.js +18 -10
  46. package/es/rotate-table.js.map +1 -1
  47. package/es/row-series.d.ts +2 -1
  48. package/es/row-series.js +5 -5
  49. package/es/row-series.js.map +1 -1
  50. package/es/table-carousel-animation.d.ts +1 -0
  51. package/es/table-carousel-animation.js +3 -2
  52. package/es/table-carousel-animation.js.map +1 -1
  53. package/package.json +5 -5
@@ -8,6 +8,7 @@ export interface AddRowColumnOptions {
8
8
  }
9
9
  export declare class AddRowColumnPlugin implements VTable.plugins.IVTablePlugin {
10
10
  id: string;
11
+ name: string;
11
12
  runTime: ("mouseleave_table" | "mouseenter_cell" | "mouseleave_cell")[];
12
13
  pluginOptions: AddRowColumnOptions;
13
14
  table: VTable.ListTable;
@@ -37,7 +37,7 @@ class AddRowColumnPlugin {
37
37
  addRowEnable: !0
38
38
  }) {
39
39
  var _a, _b;
40
- this.id = "add-row-column", this.runTime = [ VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE ],
40
+ this.id = `add-row-column-${Date.now()}`, this.name = "Add Row Column", this.runTime = [ VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE ],
41
41
  this.pluginOptions = pluginOptions, this.pluginOptions.addColumnEnable = null === (_a = this.pluginOptions.addColumnEnable) || void 0 === _a || _a,
42
42
  this.pluginOptions.addRowEnable = null === (_b = this.pluginOptions.addRowEnable) || void 0 === _b || _b,
43
43
  this.pluginOptions.addColumnEnable && (this.initAddColumnDomElement(), this.bindEventForAddColumn()),
@@ -1 +1 @@
1
- {"version":3,"sources":["add-row-column.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AA4B3C,MAAa,kBAAkB;IAqB7B,YACE,gBAAqC;QACnC,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,IAAI;KACnB;;QAxBH,OAAE,GAAG,gBAAgB,CAAC;QACtB,YAAO,GAAG;YACR,MAAM,CAAC,gBAAgB,CAAC,eAAe;YACvC,MAAM,CAAC,gBAAgB,CAAC,eAAe;YACvC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB;SACzC,CAAC;QAqBA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,eAAe,mCAAI,IAAI,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,YAAY,mCAAI,IAAI,CAAC;QAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;YACtC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACH,CAAC;IACD,GAAG,CAAC,GAAG,IAAW;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAwB,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAyB,CAAC;QACvC,IAAI,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACvD,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC9C,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,yBAAyB,CAC1C,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,EAC3C,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAC3C,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;gBACtC,MAAM,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,mBAAmB,CACtB,YAAY,CAAC,GAAG,GAAG,CAAC,EACpB,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EACjC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,EAClC,CAAC,oBAAoB,CACtB,CAAC;aACH;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;gBACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,gBAAgB,CACnB,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,EAC/B,YAAY,CAAC,IAAI,GAAG,CAAC,EACrB,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,EAClC,CAAC,QAAQ,EACT,CAAC,QAAQ,CACV,CAAC;aACH;SACF;aAAM,IAAI,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE;SAC/D;aAAM,IAAI,OAAO,KAAK,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;YAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;gBACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;gBACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;SACF;IACH,CAAC;IAED,uBAAuB;QAErB,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAGpD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/C,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAC5D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACnD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QAC3D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAGrD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACvE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAGpD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC;QAC9B,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAClC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACrC,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QACxC,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAGlD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;IACD,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3D,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;YACxD,IAAI,CAAC,uBAAuB,CAC1B,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EAClD,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,EAClD,IAAI,CACL,CAAC;YACF,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,EACtD,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,EACtD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YAC5D,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;YACzD,IAAI,CAAC,uBAAuB,CAC1B,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EACnD,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,EACnD,KAAK,CACN,CAAC;YACF,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,EACvD,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QAKH,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;gBACxC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;aACnD;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;oBAC7B,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,cAAc,GAAG,EAAE;oBAC1B,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB,CACjB,GAAW,EACX,IAAY,EACZ,KAAa,EACb,aAAsB,IAAI,EAC1B,cAAuB,IAAI;QAG3B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACxD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;QACjE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QACjE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACvE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,CAAC;IACD,uBAAuB,CAAC,IAAY,EAAE,GAAW,EAAE,MAAe;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACxD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QACjF,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;SACxD;IACH,CAAC;IACD,yBAAyB,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc;QACjE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACtD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACnD,CAAC;IACD,wBAAwB,CAAC,QAAgB,IAAI;QAC3C,IAAI,CAAC,0BAA0B,GAAG,UAAU,CAAC,GAAG,EAAE;YAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACnD,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAID,oBAAoB;QAElB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAGhD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACpD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAGnD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAGjD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC;QAC9B,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAClC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACrC,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QACxC,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAG/C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACvD,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;YACpD,IAAI,CAAC,oBAAoB,CACvB,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,EAC9C,IAAI,CACL,CAAC;YACF,IAAI,CAAC,sBAAsB,CACzB,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,EAClD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAChC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1D,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;YACvD,IAAI,CAAC,oBAAoB,CACvB,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EACjD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,EACjD,KAAK,CACN,CAAC;YACF,IAAI,CAAC,sBAAsB,CACzB,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,EACjD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,EACrD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC7C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACrC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;aAChD;iBAAM;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACpE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;aACvC;YACD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAE,MAAc,EAAE,YAAqB,IAAI,EAAE,eAAwB,IAAI;QAEjH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC;IACD,oBAAoB,CAAC,IAAY,EAAE,GAAW,EAAE,KAAc;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;QAC9E,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC;QAC9D,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;SACtD;IACH,CAAC;IACD,sBAAsB,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa;QAC7D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,CAAC;IACD,qBAAqB,CAAC,QAAgB,IAAI;QACxC,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AA9aD,gDA8aC","file":"add-row-column.js","sourcesContent":["import * as VTable from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface AddRowColumnOptions {\n /**\n * 是否启用添加列\n */\n addColumnEnable?: boolean;\n /**\n * 是否启用添加行\n */\n addRowEnable?: boolean;\n /**\n * 添加列的回调函数\n */\n addColumnCallback?: (col: number) => void;\n /**\n * 添加行的回调函数\n */\n addRowCallback?: (row: number) => void;\n}\n/**\n * 添加行和列的插件\n * 该插件监听了table的MOUSEENTER_CELL,MOUSELEAVE_CELL,MOUSELEAVE_TABLE事件\n * 当鼠标hover到table的cell时,会显示添加行和列的dot和加号\n * 当鼠标离开table的cell时,会隐藏添加行和列的dot和加号\n */\nexport class AddRowColumnPlugin implements VTable.plugins.IVTablePlugin {\n id = 'add-row-column';\n runTime = [\n VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE\n ];\n pluginOptions: AddRowColumnOptions;\n table: VTable.ListTable;\n hoverCell: VTable.TYPES.CellAddressWithBound;\n hideAllTimeoutId_addColumn: NodeJS.Timeout;\n hideAllTimeoutId_addRow: NodeJS.Timeout;\n leftDotForAddColumn: HTMLElement;\n rightDotForAddColumn: HTMLElement;\n addIconForAddColumn: HTMLElement;\n addLineForAddColumn: HTMLElement;\n topDotForAddRow: HTMLElement;\n bottomDotForAddRow: HTMLElement;\n addIconForAddRow: HTMLElement;\n addLineForAddRow: HTMLElement;\n\n constructor(\n pluginOptions: AddRowColumnOptions = {\n addColumnEnable: true,\n addRowEnable: true\n }\n ) {\n this.pluginOptions = pluginOptions;\n this.pluginOptions.addColumnEnable = this.pluginOptions.addColumnEnable ?? true;\n this.pluginOptions.addRowEnable = this.pluginOptions.addRowEnable ?? true;\n if (this.pluginOptions.addColumnEnable) {\n this.initAddColumnDomElement();\n this.bindEventForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.initAddRowDomElement();\n this.bindEventForAddRow();\n }\n }\n run(...args: any[]) {\n const eventArgs = args[0];\n const runTime = args[1];\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n if (runTime === VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL) {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n clearTimeout(this.hideAllTimeoutId_addRow);\n const canvasBounds = table.canvas.getBoundingClientRect();\n const cell = table.getCellAtRelativePosition(\n eventArgs.event.clientX - canvasBounds.left,\n eventArgs.event.clientY - canvasBounds.top\n );\n this.hoverCell = cell;\n const cellRect = table.getCellRelativeRect(cell.col, cell.row);\n if (this.pluginOptions.addColumnEnable) {\n const isRowSerierNumberCol = table.isSeriesNumber(cell.col, 0);\n this.showDotForAddColumn(\n canvasBounds.top - 6,\n cellRect.left + canvasBounds.left,\n cellRect.right + canvasBounds.left,\n !isRowSerierNumberCol\n );\n }\n if (this.pluginOptions.addRowEnable) {\n const isHeader = table.isHeader(cell.col, cell.row);\n this.showDotForAddRow(\n cellRect.top + canvasBounds.top,\n canvasBounds.left - 6,\n cellRect.bottom + canvasBounds.top,\n !isHeader,\n !isHeader\n );\n }\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL) {\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE) {\n if (this.pluginOptions.addColumnEnable) {\n this.delayHideAllForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.delayHideAllForAddRow();\n }\n }\n }\n // #region 添加列\n initAddColumnDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.leftDotForAddColumn = document.createElement('div');\n this.leftDotForAddColumn.style.width = '6px';\n this.leftDotForAddColumn.style.height = '6px';\n this.leftDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.leftDotForAddColumn.style.position = 'absolute';\n this.leftDotForAddColumn.style.cursor = 'pointer';\n this.leftDotForAddColumn.style.zIndex = '1000';\n this.leftDotForAddColumn.style.borderRadius = '50%';\n this.leftDotForAddColumn.style.border = '1px solid white';\n this.leftDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.leftDotForAddColumn);\n\n //创建一个div 作为hoverCell的顶部右侧的圆点\n this.rightDotForAddColumn = document.createElement('div');\n this.rightDotForAddColumn.style.width = '6px';\n this.rightDotForAddColumn.style.height = '6px';\n this.rightDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.rightDotForAddColumn.style.position = 'absolute';\n this.rightDotForAddColumn.style.cursor = 'pointer';\n this.rightDotForAddColumn.style.zIndex = '1000';\n this.rightDotForAddColumn.style.borderRadius = '50%';\n this.rightDotForAddColumn.style.border = '1px solid white';\n this.rightDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.rightDotForAddColumn);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddColumn = document.createElement('div');\n this.addIconForAddColumn.style.width = '18px';\n this.addIconForAddColumn.style.height = '18px';\n this.addIconForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddColumn.style.position = 'absolute';\n this.addIconForAddColumn.style.zIndex = '1001';\n this.addIconForAddColumn.style.display = 'none';\n this.addIconForAddColumn.style.borderRadius = '50%';\n this.addIconForAddColumn.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddColumn.style.display = 'flex';\n this.addIconForAddColumn.style.justifyContent = 'center';\n this.addIconForAddColumn.style.alignItems = 'center';\n this.addIconForAddColumn.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddColumn);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddColumn.appendChild(addIconText);\n\n // 创建加号下面列间隔线\n this.addLineForAddColumn = document.createElement('div');\n this.addLineForAddColumn.style.width = '2px';\n this.addLineForAddColumn.style.height = '10px';\n this.addLineForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddColumn.style.position = 'absolute';\n this.addLineForAddColumn.style.zIndex = '1001';\n this.addLineForAddColumn.style.display = 'none';\n document.body.appendChild(this.addLineForAddColumn);\n }\n bindEventForAddColumn() {\n this.leftDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n this.rightDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.rightDotForAddColumn.offsetWidth;\n const dotHeight = this.rightDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n // this.addIconForAddColumn.addEventListener('mouseenter', () => {\n // clearTimeout(this.hideAllTimeoutId_addColumn);\n // });\n this.addIconForAddColumn.addEventListener('mouseleave', () => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.delayHideAllForAddColumn();\n });\n\n this.addIconForAddColumn.addEventListener('click', (e: MouseEvent) => {\n const isLeft = this.addIconForAddColumn.dataset.addIconType === 'left';\n const columns = this.table.options.columns;\n const col = this.hoverCell.col;\n const addColIndex = isLeft ? col : col + 1;\n if (this.pluginOptions.addColumnCallback) {\n this.pluginOptions.addColumnCallback(addColIndex);\n } else {\n columns.splice(addColIndex, 0, {\n field: ``,\n title: `New Column ${col}`,\n width: 100\n });\n this.table.updateColumns(columns);\n }\n this.delayHideAllForAddColumn(0);\n });\n }\n showDotForAddColumn(\n top: number,\n left: number,\n right: number,\n isShowLeft: boolean = true,\n isShowRight: boolean = true\n ) {\n // 动态获取元素尺寸\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.leftDotForAddColumn.style.left = `${left - dotWidth / 2}px`;\n this.leftDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.rightDotForAddColumn.style.left = `${right - dotWidth / 2}px`;\n this.rightDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.leftDotForAddColumn.style.display = isShowLeft ? 'block' : 'none';\n this.rightDotForAddColumn.style.display = isShowRight ? 'block' : 'none';\n }\n showAddIconForAddColumn(left: number, top: number, isLeft: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddColumn.offsetWidth;\n const iconHeight = this.addIconForAddColumn.offsetHeight;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.addIconForAddColumn.style.left = `${left - iconWidth / 2}px`;\n this.addIconForAddColumn.style.top = `${top - iconHeight / 2 - dotHeight / 2}px`;\n if (isLeft) {\n this.addIconForAddColumn.dataset.addIconType = 'left';\n } else {\n this.addIconForAddColumn.dataset.addIconType = 'right';\n }\n }\n showSplitLineForAddColumn(left: number, top: number, height: number) {\n this.addLineForAddColumn.style.left = `${left}px`;\n this.addLineForAddColumn.style.top = `${top}px`;\n this.addLineForAddColumn.style.height = `${height}px`;\n this.addLineForAddColumn.style.display = 'block';\n }\n delayHideAllForAddColumn(delay: number = 1000) {\n this.hideAllTimeoutId_addColumn = setTimeout(() => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.leftDotForAddColumn.style.display = 'none';\n this.rightDotForAddColumn.style.display = 'none';\n }, delay);\n }\n // #endregion\n\n // #region 添加行\n initAddRowDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.topDotForAddRow = document.createElement('div');\n this.topDotForAddRow.style.width = '6px';\n this.topDotForAddRow.style.height = '6px';\n this.topDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.topDotForAddRow.style.position = 'absolute';\n this.topDotForAddRow.style.cursor = 'pointer';\n this.topDotForAddRow.style.zIndex = '1000';\n this.topDotForAddRow.style.borderRadius = '50%';\n this.topDotForAddRow.style.border = '1px solid white';\n this.topDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.topDotForAddRow);\n\n //创建一个div 作为hoverCell的底部右侧的圆点\n this.bottomDotForAddRow = document.createElement('div');\n this.bottomDotForAddRow.style.width = '6px';\n this.bottomDotForAddRow.style.height = '6px';\n this.bottomDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.bottomDotForAddRow.style.position = 'absolute';\n this.bottomDotForAddRow.style.cursor = 'pointer';\n this.bottomDotForAddRow.style.zIndex = '1000';\n this.bottomDotForAddRow.style.borderRadius = '50%';\n this.bottomDotForAddRow.style.border = '1px solid white';\n this.bottomDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.bottomDotForAddRow);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddRow = document.createElement('div');\n this.addIconForAddRow.style.width = '18px';\n this.addIconForAddRow.style.height = '18px';\n this.addIconForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddRow.style.position = 'absolute';\n this.addIconForAddRow.style.zIndex = '1001';\n this.addIconForAddRow.style.display = 'none';\n this.addIconForAddRow.style.borderRadius = '50%';\n this.addIconForAddRow.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddRow.style.display = 'flex';\n this.addIconForAddRow.style.justifyContent = 'center';\n this.addIconForAddRow.style.alignItems = 'center';\n this.addIconForAddRow.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddRow);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddRow.appendChild(addIconText);\n\n // 创建加号下面行间隔线\n this.addLineForAddRow = document.createElement('div');\n this.addLineForAddRow.style.width = '10px';\n this.addLineForAddRow.style.height = '2px';\n this.addLineForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddRow.style.position = 'absolute';\n this.addLineForAddRow.style.zIndex = '1001';\n this.addLineForAddRow.style.display = 'none';\n document.body.appendChild(this.addLineForAddRow);\n }\n bindEventForAddRow() {\n this.topDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth / 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth + 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().width\n );\n });\n\n this.bottomDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.bottomDotForAddRow.offsetWidth;\n const dotHeight = this.bottomDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth / 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth + 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().height\n );\n });\n\n this.addIconForAddRow.addEventListener('mouseleave', () => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.delayHideAllForAddRow();\n });\n\n this.addIconForAddRow.addEventListener('click', (e: MouseEvent) => {\n const isTop = this.addIconForAddRow.dataset.addIconType === 'top';\n const row = this.hoverCell.row;\n const addRowIndex = isTop ? row : row + 1;\n if (this.pluginOptions.addRowCallback) {\n this.pluginOptions.addRowCallback(addRowIndex);\n } else {\n const recordIndex = this.table.getRecordIndexByCell(0, addRowIndex);\n this.table.addRecord({}, recordIndex);\n }\n this.delayHideAllForAddRow(0);\n });\n }\n showDotForAddRow(top: number, left: number, bottom: number, isShowTop: boolean = true, isShowBottom: boolean = true) {\n // 动态获取元素尺寸\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.topDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.topDotForAddRow.style.top = `${top - dotHeight / 2}px`;\n this.bottomDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.bottomDotForAddRow.style.top = `${bottom - dotHeight / 2}px`;\n this.topDotForAddRow.style.display = isShowTop ? 'block' : 'none';\n this.bottomDotForAddRow.style.display = isShowBottom ? 'block' : 'none';\n }\n showAddIconForAddRow(left: number, top: number, isTop: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddRow.offsetWidth;\n const iconHeight = this.addIconForAddRow.offsetHeight;\n const dotWidth = this.topDotForAddRow.offsetWidth;\n this.addIconForAddRow.style.left = `${left - iconWidth / 2 - dotWidth / 2}px`;\n this.addIconForAddRow.style.top = `${top - iconHeight / 2}px`;\n if (isTop) {\n this.addIconForAddRow.dataset.addIconType = 'top';\n } else {\n this.addIconForAddRow.dataset.addIconType = 'bottom';\n }\n }\n showSplitLineForAddRow(left: number, top: number, width: number) {\n this.addLineForAddRow.style.left = `${left}px`;\n this.addLineForAddRow.style.top = `${top}px`;\n this.addLineForAddRow.style.width = `${width}px`;\n this.addLineForAddRow.style.display = 'block';\n }\n delayHideAllForAddRow(delay: number = 1000) {\n this.hideAllTimeoutId_addRow = setTimeout(() => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.topDotForAddRow.style.display = 'none';\n this.bottomDotForAddRow.style.display = 'none';\n }, delay);\n }\n // #endregion\n release() {\n this.leftDotForAddColumn.remove();\n this.rightDotForAddColumn.remove();\n this.addIconForAddColumn.remove();\n this.addLineForAddColumn.remove();\n this.topDotForAddRow.remove();\n this.bottomDotForAddRow.remove();\n this.addIconForAddRow.remove();\n this.addLineForAddRow.remove();\n }\n}\n"]}
1
+ {"version":3,"sources":["add-row-column.ts"],"names":[],"mappings":"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","file":"add-row-column.js","sourcesContent":["import * as VTable from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface AddRowColumnOptions {\n /**\n * 是否启用添加列\n */\n addColumnEnable?: boolean;\n /**\n * 是否启用添加行\n */\n addRowEnable?: boolean;\n /**\n * 添加列的回调函数\n */\n addColumnCallback?: (col: number) => void;\n /**\n * 添加行的回调函数\n */\n addRowCallback?: (row: number) => void;\n}\n/**\n * 添加行和列的插件\n * 该插件监听了table的MOUSEENTER_CELL,MOUSELEAVE_CELL,MOUSELEAVE_TABLE事件\n * 当鼠标hover到table的cell时,会显示添加行和列的dot和加号\n * 当鼠标离开table的cell时,会隐藏添加行和列的dot和加号\n */\nexport class AddRowColumnPlugin implements VTable.plugins.IVTablePlugin {\n id = `add-row-column-${Date.now()}`;\n name = 'Add Row Column';\n runTime = [\n VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE\n ];\n pluginOptions: AddRowColumnOptions;\n table: VTable.ListTable;\n hoverCell: VTable.TYPES.CellAddressWithBound;\n hideAllTimeoutId_addColumn: NodeJS.Timeout;\n hideAllTimeoutId_addRow: NodeJS.Timeout;\n leftDotForAddColumn: HTMLElement;\n rightDotForAddColumn: HTMLElement;\n addIconForAddColumn: HTMLElement;\n addLineForAddColumn: HTMLElement;\n topDotForAddRow: HTMLElement;\n bottomDotForAddRow: HTMLElement;\n addIconForAddRow: HTMLElement;\n addLineForAddRow: HTMLElement;\n\n constructor(\n pluginOptions: AddRowColumnOptions = {\n addColumnEnable: true,\n addRowEnable: true\n }\n ) {\n this.pluginOptions = pluginOptions;\n this.pluginOptions.addColumnEnable = this.pluginOptions.addColumnEnable ?? true;\n this.pluginOptions.addRowEnable = this.pluginOptions.addRowEnable ?? true;\n if (this.pluginOptions.addColumnEnable) {\n this.initAddColumnDomElement();\n this.bindEventForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.initAddRowDomElement();\n this.bindEventForAddRow();\n }\n }\n run(...args: any[]) {\n const eventArgs = args[0];\n const runTime = args[1];\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n if (runTime === VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL) {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n clearTimeout(this.hideAllTimeoutId_addRow);\n const canvasBounds = table.canvas.getBoundingClientRect();\n const cell = table.getCellAtRelativePosition(\n eventArgs.event.clientX - canvasBounds.left,\n eventArgs.event.clientY - canvasBounds.top\n );\n this.hoverCell = cell;\n const cellRect = table.getCellRelativeRect(cell.col, cell.row);\n if (this.pluginOptions.addColumnEnable) {\n const isRowSerierNumberCol = table.isSeriesNumber(cell.col, 0);\n this.showDotForAddColumn(\n canvasBounds.top - 6,\n cellRect.left + canvasBounds.left,\n cellRect.right + canvasBounds.left,\n !isRowSerierNumberCol\n );\n }\n if (this.pluginOptions.addRowEnable) {\n const isHeader = table.isHeader(cell.col, cell.row);\n this.showDotForAddRow(\n cellRect.top + canvasBounds.top,\n canvasBounds.left - 6,\n cellRect.bottom + canvasBounds.top,\n !isHeader,\n !isHeader\n );\n }\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL) {\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE) {\n if (this.pluginOptions.addColumnEnable) {\n this.delayHideAllForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.delayHideAllForAddRow();\n }\n }\n }\n // #region 添加列\n initAddColumnDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.leftDotForAddColumn = document.createElement('div');\n this.leftDotForAddColumn.style.width = '6px';\n this.leftDotForAddColumn.style.height = '6px';\n this.leftDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.leftDotForAddColumn.style.position = 'absolute';\n this.leftDotForAddColumn.style.cursor = 'pointer';\n this.leftDotForAddColumn.style.zIndex = '1000';\n this.leftDotForAddColumn.style.borderRadius = '50%';\n this.leftDotForAddColumn.style.border = '1px solid white';\n this.leftDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.leftDotForAddColumn);\n\n //创建一个div 作为hoverCell的顶部右侧的圆点\n this.rightDotForAddColumn = document.createElement('div');\n this.rightDotForAddColumn.style.width = '6px';\n this.rightDotForAddColumn.style.height = '6px';\n this.rightDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.rightDotForAddColumn.style.position = 'absolute';\n this.rightDotForAddColumn.style.cursor = 'pointer';\n this.rightDotForAddColumn.style.zIndex = '1000';\n this.rightDotForAddColumn.style.borderRadius = '50%';\n this.rightDotForAddColumn.style.border = '1px solid white';\n this.rightDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.rightDotForAddColumn);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddColumn = document.createElement('div');\n this.addIconForAddColumn.style.width = '18px';\n this.addIconForAddColumn.style.height = '18px';\n this.addIconForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddColumn.style.position = 'absolute';\n this.addIconForAddColumn.style.zIndex = '1001';\n this.addIconForAddColumn.style.display = 'none';\n this.addIconForAddColumn.style.borderRadius = '50%';\n this.addIconForAddColumn.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddColumn.style.display = 'flex';\n this.addIconForAddColumn.style.justifyContent = 'center';\n this.addIconForAddColumn.style.alignItems = 'center';\n this.addIconForAddColumn.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddColumn);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddColumn.appendChild(addIconText);\n\n // 创建加号下面列间隔线\n this.addLineForAddColumn = document.createElement('div');\n this.addLineForAddColumn.style.width = '2px';\n this.addLineForAddColumn.style.height = '10px';\n this.addLineForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddColumn.style.position = 'absolute';\n this.addLineForAddColumn.style.zIndex = '1001';\n this.addLineForAddColumn.style.display = 'none';\n document.body.appendChild(this.addLineForAddColumn);\n }\n bindEventForAddColumn() {\n this.leftDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n this.rightDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.rightDotForAddColumn.offsetWidth;\n const dotHeight = this.rightDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n // this.addIconForAddColumn.addEventListener('mouseenter', () => {\n // clearTimeout(this.hideAllTimeoutId_addColumn);\n // });\n this.addIconForAddColumn.addEventListener('mouseleave', () => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.delayHideAllForAddColumn();\n });\n\n this.addIconForAddColumn.addEventListener('click', (e: MouseEvent) => {\n const isLeft = this.addIconForAddColumn.dataset.addIconType === 'left';\n const columns = this.table.options.columns;\n const col = this.hoverCell.col;\n const addColIndex = isLeft ? col : col + 1;\n if (this.pluginOptions.addColumnCallback) {\n this.pluginOptions.addColumnCallback(addColIndex);\n } else {\n columns.splice(addColIndex, 0, {\n field: ``,\n title: `New Column ${col}`,\n width: 100\n });\n this.table.updateColumns(columns);\n }\n this.delayHideAllForAddColumn(0);\n });\n }\n showDotForAddColumn(\n top: number,\n left: number,\n right: number,\n isShowLeft: boolean = true,\n isShowRight: boolean = true\n ) {\n // 动态获取元素尺寸\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.leftDotForAddColumn.style.left = `${left - dotWidth / 2}px`;\n this.leftDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.rightDotForAddColumn.style.left = `${right - dotWidth / 2}px`;\n this.rightDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.leftDotForAddColumn.style.display = isShowLeft ? 'block' : 'none';\n this.rightDotForAddColumn.style.display = isShowRight ? 'block' : 'none';\n }\n showAddIconForAddColumn(left: number, top: number, isLeft: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddColumn.offsetWidth;\n const iconHeight = this.addIconForAddColumn.offsetHeight;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.addIconForAddColumn.style.left = `${left - iconWidth / 2}px`;\n this.addIconForAddColumn.style.top = `${top - iconHeight / 2 - dotHeight / 2}px`;\n if (isLeft) {\n this.addIconForAddColumn.dataset.addIconType = 'left';\n } else {\n this.addIconForAddColumn.dataset.addIconType = 'right';\n }\n }\n showSplitLineForAddColumn(left: number, top: number, height: number) {\n this.addLineForAddColumn.style.left = `${left}px`;\n this.addLineForAddColumn.style.top = `${top}px`;\n this.addLineForAddColumn.style.height = `${height}px`;\n this.addLineForAddColumn.style.display = 'block';\n }\n delayHideAllForAddColumn(delay: number = 1000) {\n this.hideAllTimeoutId_addColumn = setTimeout(() => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.leftDotForAddColumn.style.display = 'none';\n this.rightDotForAddColumn.style.display = 'none';\n }, delay);\n }\n // #endregion\n\n // #region 添加行\n initAddRowDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.topDotForAddRow = document.createElement('div');\n this.topDotForAddRow.style.width = '6px';\n this.topDotForAddRow.style.height = '6px';\n this.topDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.topDotForAddRow.style.position = 'absolute';\n this.topDotForAddRow.style.cursor = 'pointer';\n this.topDotForAddRow.style.zIndex = '1000';\n this.topDotForAddRow.style.borderRadius = '50%';\n this.topDotForAddRow.style.border = '1px solid white';\n this.topDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.topDotForAddRow);\n\n //创建一个div 作为hoverCell的底部右侧的圆点\n this.bottomDotForAddRow = document.createElement('div');\n this.bottomDotForAddRow.style.width = '6px';\n this.bottomDotForAddRow.style.height = '6px';\n this.bottomDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.bottomDotForAddRow.style.position = 'absolute';\n this.bottomDotForAddRow.style.cursor = 'pointer';\n this.bottomDotForAddRow.style.zIndex = '1000';\n this.bottomDotForAddRow.style.borderRadius = '50%';\n this.bottomDotForAddRow.style.border = '1px solid white';\n this.bottomDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.bottomDotForAddRow);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddRow = document.createElement('div');\n this.addIconForAddRow.style.width = '18px';\n this.addIconForAddRow.style.height = '18px';\n this.addIconForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddRow.style.position = 'absolute';\n this.addIconForAddRow.style.zIndex = '1001';\n this.addIconForAddRow.style.display = 'none';\n this.addIconForAddRow.style.borderRadius = '50%';\n this.addIconForAddRow.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddRow.style.display = 'flex';\n this.addIconForAddRow.style.justifyContent = 'center';\n this.addIconForAddRow.style.alignItems = 'center';\n this.addIconForAddRow.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddRow);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddRow.appendChild(addIconText);\n\n // 创建加号下面行间隔线\n this.addLineForAddRow = document.createElement('div');\n this.addLineForAddRow.style.width = '10px';\n this.addLineForAddRow.style.height = '2px';\n this.addLineForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddRow.style.position = 'absolute';\n this.addLineForAddRow.style.zIndex = '1001';\n this.addLineForAddRow.style.display = 'none';\n document.body.appendChild(this.addLineForAddRow);\n }\n bindEventForAddRow() {\n this.topDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth / 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth + 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().width\n );\n });\n\n this.bottomDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.bottomDotForAddRow.offsetWidth;\n const dotHeight = this.bottomDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth / 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth + 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().height\n );\n });\n\n this.addIconForAddRow.addEventListener('mouseleave', () => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.delayHideAllForAddRow();\n });\n\n this.addIconForAddRow.addEventListener('click', (e: MouseEvent) => {\n const isTop = this.addIconForAddRow.dataset.addIconType === 'top';\n const row = this.hoverCell.row;\n const addRowIndex = isTop ? row : row + 1;\n if (this.pluginOptions.addRowCallback) {\n this.pluginOptions.addRowCallback(addRowIndex);\n } else {\n const recordIndex = this.table.getRecordIndexByCell(0, addRowIndex);\n this.table.addRecord({}, recordIndex);\n }\n this.delayHideAllForAddRow(0);\n });\n }\n showDotForAddRow(top: number, left: number, bottom: number, isShowTop: boolean = true, isShowBottom: boolean = true) {\n // 动态获取元素尺寸\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.topDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.topDotForAddRow.style.top = `${top - dotHeight / 2}px`;\n this.bottomDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.bottomDotForAddRow.style.top = `${bottom - dotHeight / 2}px`;\n this.topDotForAddRow.style.display = isShowTop ? 'block' : 'none';\n this.bottomDotForAddRow.style.display = isShowBottom ? 'block' : 'none';\n }\n showAddIconForAddRow(left: number, top: number, isTop: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddRow.offsetWidth;\n const iconHeight = this.addIconForAddRow.offsetHeight;\n const dotWidth = this.topDotForAddRow.offsetWidth;\n this.addIconForAddRow.style.left = `${left - iconWidth / 2 - dotWidth / 2}px`;\n this.addIconForAddRow.style.top = `${top - iconHeight / 2}px`;\n if (isTop) {\n this.addIconForAddRow.dataset.addIconType = 'top';\n } else {\n this.addIconForAddRow.dataset.addIconType = 'bottom';\n }\n }\n showSplitLineForAddRow(left: number, top: number, width: number) {\n this.addLineForAddRow.style.left = `${left}px`;\n this.addLineForAddRow.style.top = `${top}px`;\n this.addLineForAddRow.style.width = `${width}px`;\n this.addLineForAddRow.style.display = 'block';\n }\n delayHideAllForAddRow(delay: number = 1000) {\n this.hideAllTimeoutId_addRow = setTimeout(() => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.topDotForAddRow.style.display = 'none';\n this.bottomDotForAddRow.style.display = 'none';\n }, delay);\n }\n // #endregion\n release() {\n this.leftDotForAddColumn.remove();\n this.rightDotForAddColumn.remove();\n this.addIconForAddColumn.remove();\n this.addLineForAddColumn.remove();\n this.topDotForAddRow.remove();\n this.bottomDotForAddRow.remove();\n this.addIconForAddRow.remove();\n this.addLineForAddRow.remove();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["carousel-animation.ts"],"names":[],"mappings":"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","file":"carousel-animation.js","sourcesContent":["import type { EasingType } from '@visactor/vtable/es/vrender';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\n\nfunction isInteger(value: number) {\n return Math.floor(value) === value;\n}\n\nexport interface ICarouselAnimationPluginOptions {\n rowCount?: number;\n colCount?: number;\n animationDuration?: number;\n animationDelay?: number;\n animationEasing?: EasingType;\n replaceScrollAction?: boolean;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n}\n\nexport class CarouselAnimationPlugin {\n table: BaseTableAPI;\n\n rowCount: number;\n colCount: number;\n animationDuration: number;\n animationDelay: number;\n animationEasing: EasingType;\n replaceScrollAction: boolean;\n\n playing: boolean;\n row: number;\n col: number;\n willUpdateRow: boolean = false;\n willUpdateCol: boolean = false;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n constructor(table: BaseTableAPI, options?: ICarouselAnimationPluginOptions) {\n this.table = table;\n\n this.rowCount = options?.rowCount ?? undefined;\n this.colCount = options?.colCount ?? undefined;\n this.animationDuration = options?.animationDuration ?? 500;\n this.animationDelay = options?.animationDelay ?? 1000;\n this.animationEasing = options?.animationEasing ?? 'linear';\n this.replaceScrollAction = options?.replaceScrollAction ?? false;\n\n this.customDistColFunction = options.customDistColFunction;\n this.customDistRowFunction = options.customDistRowFunction;\n\n this.reset();\n this.init();\n }\n\n init() {\n if (this.replaceScrollAction) {\n this.table.disableScroll();\n\n this.table.scenegraph.stage.addEventListener('wheel', this.onScrollEnd.bind(this));\n }\n }\n\n reset() {\n this.playing = false;\n this.row = this.table.frozenRowCount;\n this.col = this.table.frozenColCount;\n }\n\n onScrollEnd(e: Event) {\n if (this.rowCount) {\n if ((e as any).deltaY > 0) {\n this.row += this.rowCount;\n this.row = Math.min(this.row, this.table.rowCount - this.table.frozenRowCount);\n } else if ((e as any).deltaY < 0) {\n this.row -= this.rowCount;\n this.row = Math.max(this.row, this.table.frozenRowCount);\n }\n this.table.scrollToRow(this.row, { duration: this.animationDuration, easing: this.animationEasing });\n } else if (this.colCount) {\n if ((e as any).deltaX > 0) {\n this.col += this.colCount;\n this.col = Math.min(this.col, this.table.colCount - this.table.frozenColCount);\n } else if ((e as any).deltaX < 0) {\n this.col -= this.colCount;\n this.col = Math.max(this.col, this.table.frozenColCount);\n }\n this.table.scrollToCol(this.col, { duration: this.animationDuration, easing: this.animationEasing });\n }\n }\n\n play() {\n this.playing = true;\n\n if (this.rowCount && !this.willUpdateRow) {\n this.updateRow();\n } else if (this.colCount && !this.willUpdateCol) {\n this.updateCol();\n }\n }\n\n pause() {\n this.playing = false;\n }\n\n updateRow() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customRow = this.customDistRowFunction && this.customDistRowFunction(this.row, this.table);\n if (customRow) {\n this.row = customRow.distRow;\n animation = customRow.animation ?? true;\n } else if (isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== this.row) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else if (!isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== Math.floor(this.row)) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else {\n this.row += this.rowCount;\n }\n this.table.scrollToRow(\n this.row,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n this.willUpdateRow = true;\n setTimeout(\n () => {\n this.willUpdateRow = false;\n this.updateRow();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n\n updateCol() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customCol = this.customDistColFunction && this.customDistColFunction(this.col, this.table);\n if (customCol) {\n this.col = customCol.distCol;\n animation = customCol.animation ?? true;\n } else if (isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== this.col) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else if (!isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== Math.floor(this.col)) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else {\n this.col += this.colCount;\n }\n\n this.table.scrollToCol(\n this.col,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n\n this.willUpdateCol = true;\n setTimeout(\n () => {\n this.willUpdateCol = false;\n this.updateCol();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["carousel-animation.ts"],"names":[],"mappings":";;;AAGA,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrC,CAAC;AAeD,MAAa,uBAAuB;IAkBlC,YAAY,KAAmB,EAAE,OAAyC;;QAL1E,kBAAa,GAAY,KAAK,CAAC;QAC/B,kBAAa,GAAY,KAAK,CAAC;QAK7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,SAAS,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,SAAS,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,GAAG,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,IAAI,CAAC;QACtD,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,QAAQ,CAAC;QAC5D,IAAI,CAAC,mBAAmB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,mCAAI,KAAK,CAAC;QAEjE,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAE3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAE3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACpF;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,CAAQ;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAK,CAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAChF;iBAAM,IAAK,CAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAC1D;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;SACtG;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,IAAK,CAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAChF;iBAAM,IAAK,CAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aAC1D;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;SACtG;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,SAAS;;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC1C,OAAO;SACR;QAED,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjG,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7B,SAAS,GAAG,MAAA,SAAS,CAAC,SAAS,mCAAI,IAAI,CAAC;SACzC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,EAAE;YACvF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;SAC3B;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,CACpB,IAAI,CAAC,GAAG,EACR,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAC3F,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,UAAU,CACR,GAAG,EAAE;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,EAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAC7C,CAAC;IACJ,CAAC;IAED,SAAS;;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC1C,OAAO;SACR;QAED,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjG,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;YAC7B,SAAS,GAAG,MAAA,SAAS,CAAC,SAAS,mCAAI,IAAI,CAAC;SACzC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,GAAG,EAAE;YACxF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;SAC3B;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CACpB,IAAI,CAAC,GAAG,EACR,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAC3F,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,UAAU,CACR,GAAG,EAAE;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,EAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAC7C,CAAC;IACJ,CAAC;CACF;AA1JD,0DA0JC","file":"carousel-animation.js","sourcesContent":["import type { EasingType } from '@visactor/vtable/es/vrender';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\n\nfunction isInteger(value: number) {\n return Math.floor(value) === value;\n}\n\nexport interface ICarouselAnimationPluginOptions {\n rowCount?: number;\n colCount?: number;\n animationDuration?: number;\n animationDelay?: number;\n animationEasing?: EasingType;\n replaceScrollAction?: boolean;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n}\n\n/** @deprecated 请使用 TableCarouselAnimationPlugin 代替 */\nexport class CarouselAnimationPlugin {\n table: BaseTableAPI;\n\n rowCount: number;\n colCount: number;\n animationDuration: number;\n animationDelay: number;\n animationEasing: EasingType;\n replaceScrollAction: boolean;\n\n playing: boolean;\n row: number;\n col: number;\n willUpdateRow: boolean = false;\n willUpdateCol: boolean = false;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n constructor(table: BaseTableAPI, options?: ICarouselAnimationPluginOptions) {\n this.table = table;\n\n this.rowCount = options?.rowCount ?? undefined;\n this.colCount = options?.colCount ?? undefined;\n this.animationDuration = options?.animationDuration ?? 500;\n this.animationDelay = options?.animationDelay ?? 1000;\n this.animationEasing = options?.animationEasing ?? 'linear';\n this.replaceScrollAction = options?.replaceScrollAction ?? false;\n\n this.customDistColFunction = options.customDistColFunction;\n this.customDistRowFunction = options.customDistRowFunction;\n\n this.reset();\n this.init();\n }\n\n init() {\n if (this.replaceScrollAction) {\n this.table.disableScroll();\n\n this.table.scenegraph.stage.addEventListener('wheel', this.onScrollEnd.bind(this));\n }\n }\n\n reset() {\n this.playing = false;\n this.row = this.table.frozenRowCount;\n this.col = this.table.frozenColCount;\n }\n\n onScrollEnd(e: Event) {\n if (this.rowCount) {\n if ((e as any).deltaY > 0) {\n this.row += this.rowCount;\n this.row = Math.min(this.row, this.table.rowCount - this.table.frozenRowCount);\n } else if ((e as any).deltaY < 0) {\n this.row -= this.rowCount;\n this.row = Math.max(this.row, this.table.frozenRowCount);\n }\n this.table.scrollToRow(this.row, { duration: this.animationDuration, easing: this.animationEasing });\n } else if (this.colCount) {\n if ((e as any).deltaX > 0) {\n this.col += this.colCount;\n this.col = Math.min(this.col, this.table.colCount - this.table.frozenColCount);\n } else if ((e as any).deltaX < 0) {\n this.col -= this.colCount;\n this.col = Math.max(this.col, this.table.frozenColCount);\n }\n this.table.scrollToCol(this.col, { duration: this.animationDuration, easing: this.animationEasing });\n }\n }\n\n play() {\n this.playing = true;\n\n if (this.rowCount && !this.willUpdateRow) {\n this.updateRow();\n } else if (this.colCount && !this.willUpdateCol) {\n this.updateCol();\n }\n }\n\n pause() {\n this.playing = false;\n }\n\n updateRow() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customRow = this.customDistRowFunction && this.customDistRowFunction(this.row, this.table);\n if (customRow) {\n this.row = customRow.distRow;\n animation = customRow.animation ?? true;\n } else if (isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== this.row) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else if (!isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== Math.floor(this.row)) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else {\n this.row += this.rowCount;\n }\n this.table.scrollToRow(\n this.row,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n this.willUpdateRow = true;\n setTimeout(\n () => {\n this.willUpdateRow = false;\n this.updateRow();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n\n updateCol() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customCol = this.customDistColFunction && this.customDistColFunction(this.col, this.table);\n if (customCol) {\n this.col = customCol.distCol;\n animation = customCol.animation ?? true;\n } else if (isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== this.col) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else if (!isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== Math.floor(this.col)) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else {\n this.col += this.colCount;\n }\n\n this.table.scrollToCol(\n this.col,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n\n this.willUpdateCol = true;\n setTimeout(\n () => {\n this.willUpdateCol = false;\n this.updateCol();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n}\n"]}
@@ -3,10 +3,11 @@ export interface ColumnSeriesOptions {
3
3
  columnCount: number;
4
4
  generateColumnTitle?: (index: number) => string;
5
5
  generateColumnField?: (index: number) => string;
6
- autoExtendColumn?: boolean;
6
+ autoExtendColumnTriggerKeys?: ('ArrowRight' | 'Tab')[];
7
7
  }
8
8
  export declare class ColumnSeriesPlugin implements VTable.plugins.IVTablePlugin {
9
9
  id: string;
10
+ name: string;
10
11
  runTime: ("before_keydown" | "before_init")[];
11
12
  pluginOptions: ColumnSeriesOptions;
12
13
  table: VTable.ListTable;
@@ -33,20 +33,21 @@ const VTable = __importStar(require("@visactor/vtable"));
33
33
 
34
34
  class ColumnSeriesPlugin {
35
35
  constructor(pluginOptions) {
36
- this.id = "column-series", this.runTime = [ VTable.TABLE_EVENT_TYPE.BEFORE_INIT, VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN ],
36
+ this.id = `column-series-${Date.now()}`, this.name = "Column Series", this.runTime = [ VTable.TABLE_EVENT_TYPE.BEFORE_INIT, VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN ],
37
37
  this.columns = [], this.pluginOptions = Object.assign({
38
- columnCount: 100,
39
- autoExtendColumn: !0
38
+ columnCount: 100
40
39
  }, pluginOptions);
41
40
  }
42
41
  run(...args) {
42
+ var _a;
43
43
  if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_INIT) {
44
44
  const eventArgs = args[0], table = args[2];
45
45
  this.table = table;
46
46
  const options = eventArgs.options;
47
47
  this.columns = this.generateColumns(this.pluginOptions.columnCount), options.columns = this.columns;
48
48
  } else if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN) {
49
- "ArrowRight" === args[0].event.key && this.pluginOptions.autoExtendColumn && this.table.stateManager.select.cellPos.col === this.table.colCount - 1 && this.table.addColumn(this.generateColumn(this.table.colCount - 1));
49
+ const e = args[0].event;
50
+ (null === (_a = this.pluginOptions.autoExtendColumnTriggerKeys) || void 0 === _a ? void 0 : _a.includes(e.key)) && this.table.stateManager.select.cellPos.col === this.table.colCount - 1 && this.table.addColumn(this.generateColumn(this.table.colCount - 1));
50
51
  }
51
52
  }
52
53
  generateColumns(columnCount) {
@@ -1 +1 @@
1
- {"version":3,"sources":["column-series.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAiB3C,MAAa,kBAAkB;IAM7B,YAAY,aAAkC;QAL9C,OAAE,GAAG,eAAe,CAAC;QACrB,YAAO,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAGxF,YAAO,GAAwC,EAAE,CAAC;QAEhD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;IAClG,CAAC;IACD,GAAG,CAAC,GAAG,IAAW;QAChB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAwB,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,KAAyB,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAElC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,EAAE;gBAC1B,IACE,IAAI,CAAC,aAAa,CAAC,gBAAgB;oBACnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EACtE;oBACA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAwB,CAAC,CAAC;iBAC3F;aACF;SACF;IACH,CAAC;IAOD,eAAe,CAAC,WAAmB;QACjC,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,KAAa;QAC1B,MAAM,MAAM,GAAG;YAIb,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB;gBAC3C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;SACpC,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAMD,mBAAmB,CAAC,KAAa;QAE/B,IAAI,KAAK,GAAG,EAAE,EAAE;YACd,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;SACxC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QAER,OAAO,KAAK,GAAG,CAAC,EAAE;YAChB,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;SAChC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB,CAAC,WAAmB;QAClC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAA+B,CAAC,CAAC;IACjE,CAAC;CACF;AAnFD,gDAmFC","file":"column-series.js","sourcesContent":["import * as VTable from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface ColumnSeriesOptions {\n columnCount: number;\n generateColumnTitle?: (index: number) => string;\n generateColumnField?: (index: number) => string;\n /**\n * 是否自动扩展列\n * @default true\n */\n autoExtendColumn?: boolean;\n}\n/**\n * 生成列序号标题的插件\n */\nexport class ColumnSeriesPlugin implements VTable.plugins.IVTablePlugin {\n id = 'column-series';\n runTime = [VTable.TABLE_EVENT_TYPE.BEFORE_INIT, VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN];\n pluginOptions: ColumnSeriesOptions;\n table: VTable.ListTable;\n columns: { field?: string; title: string }[] = [];\n constructor(pluginOptions: ColumnSeriesOptions) {\n this.pluginOptions = Object.assign({ columnCount: 100, autoExtendColumn: true }, pluginOptions);\n }\n run(...args: any[]) {\n if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_INIT) {\n const eventArgs = args[0];\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n const options = eventArgs.options;\n //根据pluginOptions的columnCount组织columns,column的title生成规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n this.columns = this.generateColumns(this.pluginOptions.columnCount);\n options.columns = this.columns;\n } else if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN) {\n const eventArgs = args[0];\n const e = eventArgs.event;\n if (e.key === 'ArrowRight') {\n if (\n this.pluginOptions.autoExtendColumn &&\n this.table.stateManager.select.cellPos.col === this.table.colCount - 1\n ) {\n this.table.addColumn(this.generateColumn(this.table.colCount - 1) as VTable.ColumnDefine);\n }\n }\n }\n }\n /**\n * 生成列字段和标题\n * 规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n * @param columnCount 列数\n * @returns 列字段和标题的数组\n */\n generateColumns(columnCount: number): { field?: string; title: string }[] {\n const columnFields = [];\n for (let i = 0; i < columnCount; i++) {\n columnFields.push(this.generateColumn(i));\n }\n return columnFields;\n }\n generateColumn(index: number): { field?: string; title: string } {\n const column = {\n // field: this.pluginOptions.generateColumnField\n // ? this.pluginOptions.generateColumnField(i)\n // : this.generateColumnField(i),\n title: this.pluginOptions.generateColumnTitle\n ? this.pluginOptions.generateColumnTitle(index)\n : this.generateColumnField(index)\n };\n return column;\n }\n /**\n * 生成excel的列标题,规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n * @param index 从0开始\n * @returns\n */\n generateColumnField(index: number): string {\n // 处理0-25的情况(A-Z)\n if (index < 26) {\n return String.fromCharCode(65 + index);\n }\n\n const title = [];\n index++; // 调整索引,使得第一个26变成AA\n\n while (index > 0) {\n index--; // 每次循环前减1,以正确处理进位\n title.unshift(String.fromCharCode(65 + (index % 26)));\n index = Math.floor(index / 26);\n }\n\n return title.join('');\n }\n\n resetColumnCount(columnCount: number) {\n this.pluginOptions.columnCount = columnCount;\n this.columns = this.generateColumns(columnCount);\n this.table.updateColumns(this.columns as VTable.ColumnsDefine);\n }\n}\n"]}
1
+ {"version":3,"sources":["column-series.ts"],"names":[],"mappings":"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","file":"column-series.js","sourcesContent":["import * as VTable from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface ColumnSeriesOptions {\n columnCount: number;\n generateColumnTitle?: (index: number) => string;\n generateColumnField?: (index: number) => string;\n /**\n * 是否自动扩展列, 配置监听键值(键盘事件的key)\n * @default true\n */\n autoExtendColumnTriggerKeys?: ('ArrowRight' | 'Tab')[];\n}\n/**\n * 生成列序号标题的插件\n */\nexport class ColumnSeriesPlugin implements VTable.plugins.IVTablePlugin {\n id = `column-series-${Date.now()}`;\n name = 'Column Series';\n runTime = [VTable.TABLE_EVENT_TYPE.BEFORE_INIT, VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN];\n pluginOptions: ColumnSeriesOptions;\n table: VTable.ListTable;\n columns: { field?: string; title: string }[] = [];\n constructor(pluginOptions: ColumnSeriesOptions) {\n this.pluginOptions = Object.assign({ columnCount: 100 }, pluginOptions);\n }\n run(...args: any[]) {\n if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_INIT) {\n const eventArgs = args[0];\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n const options = eventArgs.options;\n //根据pluginOptions的columnCount组织columns,column的title生成规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n this.columns = this.generateColumns(this.pluginOptions.columnCount);\n options.columns = this.columns;\n } else if (args[1] === VTable.TABLE_EVENT_TYPE.BEFORE_KEYDOWN) {\n const eventArgs = args[0];\n const e = eventArgs.event;\n if (this.pluginOptions.autoExtendColumnTriggerKeys?.includes(e.key)) {\n if (this.table.stateManager.select.cellPos.col === this.table.colCount - 1) {\n this.table.addColumn(this.generateColumn(this.table.colCount - 1) as VTable.ColumnDefine);\n }\n }\n }\n }\n /**\n * 生成列字段和标题\n * 规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n * @param columnCount 列数\n * @returns 列字段和标题的数组\n */\n generateColumns(columnCount: number): { field?: string; title: string }[] {\n const columnFields = [];\n for (let i = 0; i < columnCount; i++) {\n columnFields.push(this.generateColumn(i));\n }\n return columnFields;\n }\n generateColumn(index: number): { field?: string; title: string } {\n const column = {\n // field: this.pluginOptions.generateColumnField\n // ? this.pluginOptions.generateColumnField(i)\n // : this.generateColumnField(i),\n title: this.pluginOptions.generateColumnTitle\n ? this.pluginOptions.generateColumnTitle(index)\n : this.generateColumnField(index)\n };\n return column;\n }\n /**\n * 生成excel的列标题,规则和excel一致,如A~Z,AA~AZ,AB~AZ,AA~ZZ,AAA~ZZZ\n * @param index 从0开始\n * @returns\n */\n generateColumnField(index: number): string {\n // 处理0-25的情况(A-Z)\n if (index < 26) {\n return String.fromCharCode(65 + index);\n }\n\n const title = [];\n index++; // 调整索引,使得第一个26变成AA\n\n while (index > 0) {\n index--; // 每次循环前减1,以正确处理进位\n title.unshift(String.fromCharCode(65 + (index % 26)));\n index = Math.floor(index / 26);\n }\n\n return title.join('');\n }\n\n resetColumnCount(columnCount: number) {\n this.pluginOptions.columnCount = columnCount;\n this.columns = this.generateColumns(columnCount);\n this.table.updateColumns(this.columns as VTable.ColumnsDefine);\n }\n}\n"]}
@@ -4,6 +4,7 @@ import type { EventArg } from './types';
4
4
  export type IExcelEditCellKeyboardPluginOptions = {};
5
5
  export declare class ExcelEditCellKeyboardPlugin implements VTable.plugins.IVTablePlugin {
6
6
  id: string;
7
+ name: string;
7
8
  runTime: "initialized"[];
8
9
  table: VTable.ListTable;
9
10
  pluginOptions: IExcelEditCellKeyboardPluginOptions;
@@ -33,8 +33,9 @@ const VTable = __importStar(require("@visactor/vtable"));
33
33
 
34
34
  class ExcelEditCellKeyboardPlugin {
35
35
  constructor(pluginOptions) {
36
- this.id = "excel-edit-cell-keyboard", this.runTime = [ VTable.TABLE_EVENT_TYPE.INITIALIZED ],
37
- this.pluginOptions = pluginOptions, this.bindEvent();
36
+ this.id = `excel-edit-cell-keyboard-${Date.now()}`, this.name = "Excel Edit Cell Keyboard",
37
+ this.runTime = [ VTable.TABLE_EVENT_TYPE.INITIALIZED ], this.pluginOptions = pluginOptions,
38
+ this.bindEvent();
38
39
  }
39
40
  run(...args) {
40
41
  const table = args[2];
@@ -1 +1 @@
1
- {"version":3,"sources":["excel-edit-cell-keyboard.ts"],"names":[],"mappings":"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","file":"excel-edit-cell-keyboard.js","sourcesContent":["import * as VTable from '@visactor/vtable';\nimport type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';\nimport type { EventArg } from './types';\n//备用 插件配置项 目前感觉都走默认逻辑就行\nexport type IExcelEditCellKeyboardPluginOptions = {\n // 是否响应删除\n // enableDeleteKey?: boolean;\n};\n\nexport class ExcelEditCellKeyboardPlugin implements VTable.plugins.IVTablePlugin {\n id = 'excel-edit-cell-keyboard';\n runTime = [VTable.TABLE_EVENT_TYPE.INITIALIZED];\n table: VTable.ListTable;\n pluginOptions: IExcelEditCellKeyboardPluginOptions;\n constructor(pluginOptions?: IExcelEditCellKeyboardPluginOptions) {\n this.pluginOptions = pluginOptions;\n\n this.bindEvent();\n }\n run(...args: [EventArg, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], VTable.BaseTableAPI]) {\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n }\n\n bindEvent() {\n //监听document全局的keydown事件 捕获阶段监听 可以及时阻止事件传播和默认行为\n document.addEventListener('keydown', this.handleKeyDown.bind(this), true);\n // this.table.on('selected_cell', () => {\n // this.updateHighlight();\n // });\n\n // this.table.on('selected_clear', () => {\n // this.clearHighlight();\n // });\n\n // this.table.on('mousemove_table', () => {\n // if (this.table.stateManager.select.selecting) {\n // this.updateHighlight();\n // }\n // });\n }\n handleKeyDown(event: KeyboardEvent) {\n if (this.table.editorManager) {\n //判断是键盘触发编辑单元格的情况下,那么在编辑状态中切换方向需要选中下一个继续编辑\n if (this.table.editorManager.beginTriggerEditCellMode === 'keydown') {\n if (this.table.editorManager.editingEditor && this.isExcelShortcutKey(event)) {\n const { col, row } = this.table.editorManager.editCell;\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (!event.shiftKey && !event.ctrlKey && !event.metaKey) {\n //有这些配合键,则不进行选中下一个单元格的行为 执行vtable内部逻辑\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowLeft') {\n this.table.selectCell(col - 1, row);\n } else if (event.key === 'ArrowRight') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowDown') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'ArrowUp') {\n this.table.selectCell(col, row - 1);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n } else {\n const { col, row } = this.table.stateManager.select.cellPos;\n if (this.table.editorManager.editingEditor && (event.key === 'Enter' || event.key === 'Tab')) {\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Delete') {\n //响应删除键,删除\n const selectCells = this.table.getSelectedCellInfos();\n if (selectCells?.length > 0) {\n // 如果选中的是范围,则删除范围内的所有单元格\n deleteSelectRange(selectCells, this.table);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n }\n // 判断event的keyCode是否是excel的快捷键\n isExcelShortcutKey(event: KeyboardEvent) {\n return (\n event.key === 'Enter' ||\n event.key === 'Tab' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n );\n }\n release() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n }\n}\n//将选中单元格的值设置为空\nfunction deleteSelectRange(selectCells: VTable.TYPES.CellInfo[][], tableInstance: VTable.ListTable) {\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n tableInstance.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, '');\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["excel-edit-cell-keyboard.ts"],"names":[],"mappings":"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","file":"excel-edit-cell-keyboard.js","sourcesContent":["import * as VTable from '@visactor/vtable';\nimport type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';\nimport type { EventArg } from './types';\n//备用 插件配置项 目前感觉都走默认逻辑就行\nexport type IExcelEditCellKeyboardPluginOptions = {\n // 是否响应删除\n // enableDeleteKey?: boolean;\n};\n\nexport class ExcelEditCellKeyboardPlugin implements VTable.plugins.IVTablePlugin {\n id = `excel-edit-cell-keyboard-${Date.now()}`;\n name = 'Excel Edit Cell Keyboard';\n runTime = [VTable.TABLE_EVENT_TYPE.INITIALIZED];\n table: VTable.ListTable;\n pluginOptions: IExcelEditCellKeyboardPluginOptions;\n constructor(pluginOptions?: IExcelEditCellKeyboardPluginOptions) {\n this.pluginOptions = pluginOptions;\n\n this.bindEvent();\n }\n run(...args: [EventArg, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], VTable.BaseTableAPI]) {\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n }\n\n bindEvent() {\n //监听document全局的keydown事件 捕获阶段监听 可以及时阻止事件传播和默认行为\n document.addEventListener('keydown', this.handleKeyDown.bind(this), true);\n // this.table.on('selected_cell', () => {\n // this.updateHighlight();\n // });\n\n // this.table.on('selected_clear', () => {\n // this.clearHighlight();\n // });\n\n // this.table.on('mousemove_table', () => {\n // if (this.table.stateManager.select.selecting) {\n // this.updateHighlight();\n // }\n // });\n }\n handleKeyDown(event: KeyboardEvent) {\n if (this.table.editorManager) {\n //判断是键盘触发编辑单元格的情况下,那么在编辑状态中切换方向需要选中下一个继续编辑\n if (this.table.editorManager.beginTriggerEditCellMode === 'keydown') {\n if (this.table.editorManager.editingEditor && this.isExcelShortcutKey(event)) {\n const { col, row } = this.table.editorManager.editCell;\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (!event.shiftKey && !event.ctrlKey && !event.metaKey) {\n //有这些配合键,则不进行选中下一个单元格的行为 执行vtable内部逻辑\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowLeft') {\n this.table.selectCell(col - 1, row);\n } else if (event.key === 'ArrowRight') {\n this.table.selectCell(col + 1, row);\n } else if (event.key === 'ArrowDown') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'ArrowUp') {\n this.table.selectCell(col, row - 1);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n } else {\n const { col, row } = this.table.stateManager.select.cellPos;\n if (this.table.editorManager.editingEditor && (event.key === 'Enter' || event.key === 'Tab')) {\n this.table.editorManager.completeEdit();\n this.table.getElement().focus();\n if (event.key === 'Enter') {\n this.table.selectCell(col, row + 1);\n } else if (event.key === 'Tab') {\n this.table.selectCell(col + 1, row);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Delete') {\n //响应删除键,删除\n const selectCells = this.table.getSelectedCellInfos();\n if (selectCells?.length > 0) {\n // 如果选中的是范围,则删除范围内的所有单元格\n deleteSelectRange(selectCells, this.table);\n }\n // 阻止事件传播和默认行为\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n }\n // 判断event的keyCode是否是excel的快捷键\n isExcelShortcutKey(event: KeyboardEvent) {\n return (\n event.key === 'Enter' ||\n event.key === 'Tab' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n );\n }\n release() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n }\n}\n//将选中单元格的值设置为空\nfunction deleteSelectRange(selectCells: VTable.TYPES.CellInfo[][], tableInstance: VTable.ListTable) {\n for (let i = 0; i < selectCells.length; i++) {\n for (let j = 0; j < selectCells[i].length; j++) {\n tableInstance.changeCellValue(selectCells[i][j].col, selectCells[i][j].row, '');\n }\n }\n}\n"]}
@@ -16,8 +16,9 @@ export declare class FocusHighlightPlugin implements VTable.plugins.IVTablePlugi
16
16
  pluginOptions: FocusHighlightPluginOptions;
17
17
  constructor(options?: FocusHighlightPluginOptions);
18
18
  run(...args: any[]): void;
19
- setFocusHighlightRange(range?: CellAddress | CellRange): void;
19
+ setFocusHighlightRange(range?: CellAddress | CellRange, forceUpdate?: boolean): void;
20
20
  deleteAllCellGroupShadow(): void;
21
21
  updateCellGroupShadow(): void;
22
22
  updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange): void;
23
+ update(): void;
23
24
  }
@@ -12,7 +12,7 @@ class FocusHighlightPlugin {
12
12
  opacity: .5,
13
13
  highlightRange: void 0
14
14
  }) {
15
- this.id = "focus-highlight", this.name = "Focus Highlight", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR ],
15
+ this.id = `focus-highlight-${Date.now()}`, this.name = "Focus Highlight", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR ],
16
16
  this.pluginOptions = Object.assign({
17
17
  fill: "#000",
18
18
  opacity: .5
@@ -36,12 +36,12 @@ class FocusHighlightPlugin {
36
36
  }
37
37
  } else args[1] === vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR && this.setFocusHighlightRange(void 0);
38
38
  }
39
- setFocusHighlightRange(range) {
39
+ setFocusHighlightRange(range, forceUpdate = !1) {
40
40
  let cellRange;
41
41
  range && "start" in range && "end" in range ? cellRange = range : range && (cellRange = {
42
42
  start: range,
43
43
  end: range
44
- }), (0, cell_range_1.isSameRange)(this.range, cellRange) || (this.range = cellRange,
44
+ }), (0, cell_range_1.isSameRange)(this.range, cellRange) && !forceUpdate || (this.range = cellRange,
45
45
  range ? this.updateCellGroupShadow() : this.deleteAllCellGroupShadow(), this.table.scenegraph.updateNextFrame());
46
46
  }
47
47
  deleteAllCellGroupShadow() {
@@ -87,6 +87,9 @@ class FocusHighlightPlugin {
87
87
  }));
88
88
  }));
89
89
  }
90
+ update() {
91
+ this.setFocusHighlightRange(this.range, !0);
92
+ }
90
93
  }
91
94
 
92
95
  exports.FocusHighlightPlugin = FocusHighlightPlugin;
@@ -1 +1 @@
1
- {"version":3,"sources":["focus-highlight.ts"],"names":[],"mappings":"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","file":"focus-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellAddress, CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type * as VTable from '@visactor/vtable';\nexport interface FocusHighlightPluginOptions {\n fill?: string;\n opacity?: number;\n highlightRange?: CellAddress | CellRange; //初始化聚焦高亮范围\n}\n\nexport class FocusHighlightPlugin implements VTable.plugins.IVTablePlugin {\n id = 'focus-highlight';\n name = 'Focus Highlight';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.SELECTED_CELL, TABLE_EVENT_TYPE.SELECTED_CLEAR];\n table: BaseTableAPI;\n range?: CellRange;\n pluginOptions: FocusHighlightPluginOptions;\n\n constructor(\n options: FocusHighlightPluginOptions = {\n fill: '#000',\n opacity: 0.5,\n highlightRange: undefined\n }\n ) {\n this.pluginOptions = Object.assign(\n {\n fill: '#000',\n opacity: 0.5\n },\n options\n );\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n if (args[1] === TABLE_EVENT_TYPE.INITIALIZED) {\n this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange);\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CELL) {\n const posCell = this.table.stateManager.select.cellPos;\n if (this.table.isHeader(posCell.col, posCell.row)) {\n this.setFocusHighlightRange(undefined);\n } else {\n const ranges = this.table.stateManager.select.ranges;\n const min_col = 0;\n const max_col = this.table.colCount - 1;\n const min_row = Math.min(ranges[0].start.row, ranges[0].end.row);\n const max_row = Math.max(ranges[0].start.row, ranges[0].end.row);\n this.setFocusHighlightRange({\n start: { col: min_col, row: min_row },\n end: { col: max_col, row: max_row }\n });\n }\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.setFocusHighlightRange(undefined);\n }\n }\n\n setFocusHighlightRange(range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range as CellRange;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n if (isSameRange(this.range, cellRange)) {\n return;\n }\n\n this.range = cellRange;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!cellRange) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(cellRange, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this.pluginOptions.fill,\n opacity: this.pluginOptions.opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["focus-highlight.ts"],"names":[],"mappings":"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","file":"focus-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellAddress, CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type * as VTable from '@visactor/vtable';\nexport interface FocusHighlightPluginOptions {\n fill?: string;\n opacity?: number;\n highlightRange?: CellAddress | CellRange; //初始化聚焦高亮范围\n}\n\nexport class FocusHighlightPlugin implements VTable.plugins.IVTablePlugin {\n id = `focus-highlight-${Date.now()}`;\n name = 'Focus Highlight';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.SELECTED_CELL, TABLE_EVENT_TYPE.SELECTED_CLEAR];\n table: BaseTableAPI;\n range?: CellRange;\n pluginOptions: FocusHighlightPluginOptions;\n\n constructor(\n options: FocusHighlightPluginOptions = {\n fill: '#000',\n opacity: 0.5,\n highlightRange: undefined\n }\n ) {\n this.pluginOptions = Object.assign(\n {\n fill: '#000',\n opacity: 0.5\n },\n options\n );\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n if (args[1] === TABLE_EVENT_TYPE.INITIALIZED) {\n this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange);\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CELL) {\n const posCell = this.table.stateManager.select.cellPos;\n if (this.table.isHeader(posCell.col, posCell.row)) {\n this.setFocusHighlightRange(undefined);\n } else {\n const ranges = this.table.stateManager.select.ranges;\n const min_col = 0;\n const max_col = this.table.colCount - 1;\n const min_row = Math.min(ranges[0].start.row, ranges[0].end.row);\n const max_row = Math.max(ranges[0].start.row, ranges[0].end.row);\n this.setFocusHighlightRange({\n start: { col: min_col, row: min_row },\n end: { col: max_col, row: max_row }\n });\n }\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.setFocusHighlightRange(undefined);\n }\n }\n\n setFocusHighlightRange(range?: CellAddress | CellRange, forceUpdate: boolean = false) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range as CellRange;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n if (isSameRange(this.range, cellRange) && !forceUpdate) {\n return;\n }\n\n this.range = cellRange;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!cellRange) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(cellRange, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this.pluginOptions.fill,\n opacity: this.pluginOptions.opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n update() {\n this.setFocusHighlightRange(this.range, true);\n }\n}\n"]}
@@ -10,6 +10,7 @@ interface IHighlightHeaderWhenSelectCellPluginOptions {
10
10
  }
11
11
  export declare class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTablePlugin {
12
12
  id: string;
13
+ name: string;
13
14
  runTime: ("selected_cell" | "selected_clear" | "mousemove_table" | "initialized")[];
14
15
  table: BaseTableAPI;
15
16
  pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions;
@@ -20,6 +21,7 @@ export declare class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTa
20
21
  registerStyle(): void;
21
22
  clearHighlight(): void;
22
23
  updateHighlight(): void;
24
+ update(): void;
23
25
  release(): void;
24
26
  }
25
27
  export {};
@@ -8,7 +8,8 @@ const vtable_1 = require("@visactor/vtable");
8
8
 
9
9
  class HighlightHeaderWhenSelectCellPlugin {
10
10
  constructor(pluginOptions) {
11
- this.id = "highlight-header-when-select-cell", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.MOUSEMOVE_TABLE ],
11
+ this.id = `highlight-header-when-select-cell-${Date.now()}`, this.name = "Highlight Header When Select Cell",
12
+ this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.MOUSEMOVE_TABLE ],
12
13
  this.colHeaderRanges = [], this.rowHeaderRanges = [], this.pluginOptions = pluginOptions;
13
14
  }
14
15
  run(...args) {
@@ -98,6 +99,9 @@ class HighlightHeaderWhenSelectCellPlugin {
98
99
  }, "row-highlight"), this.rowHeaderRanges.push(rowHeaderRange));
99
100
  }
100
101
  }
102
+ update() {
103
+ this.registerStyle(), this.updateHighlight();
104
+ }
101
105
  release() {
102
106
  this.rowHeaderRanges = [], this.colHeaderRanges = [];
103
107
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["highlight-header-when-select-cell.ts"],"names":[],"mappings":"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","file":"highlight-header-when-select-cell.js","sourcesContent":["import type { CellRange } from '@visactor/vtable/es/ts-types';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { BaseTableAPI, plugins } from '@visactor/vtable';\ninterface IHighlightHeaderWhenSelectCellPluginOptions {\n rowHighlight?: boolean;\n colHighlight?: boolean;\n colHighlightBGColor?: string;\n colHighlightColor?: string;\n rowHighlightBGColor?: string;\n rowHighlightColor?: string;\n}\n\nexport class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTablePlugin {\n id = 'highlight-header-when-select-cell';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.SELECTED_CLEAR,\n TABLE_EVENT_TYPE.SELECTED_CELL,\n TABLE_EVENT_TYPE.MOUSEMOVE_TABLE\n ];\n table: BaseTableAPI;\n pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions;\n colHeaderRanges: CellRange[] = [];\n rowHeaderRanges: CellRange[] = [];\n constructor(pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions) {\n this.pluginOptions = pluginOptions;\n }\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n const table: BaseTableAPI = args[2];\n this.table = table;\n if (runTime === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.clearHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.SELECTED_CELL) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.MOUSEMOVE_TABLE) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED) {\n this.registerStyle();\n }\n }\n\n registerStyle() {\n this.table.registerCustomCellStyle('col-highlight', {\n bgColor: this.pluginOptions?.colHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.colHighlightColor ?? '#FFF'\n });\n\n this.table.registerCustomCellStyle('row-highlight', {\n bgColor: this.pluginOptions?.rowHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.rowHighlightColor ?? 'yellow'\n });\n }\n\n clearHighlight() {\n if (this.colHeaderRanges) {\n this.colHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n if (this.rowHeaderRanges) {\n this.rowHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n // clear range\n this.colHeaderRanges = [];\n this.rowHeaderRanges = [];\n }\n\n updateHighlight() {\n if (this.pluginOptions?.colHighlight === false && this.pluginOptions?.rowHighlight === false) {\n return;\n }\n const selectRanges = this.table.getSelectedCellRanges();\n if (selectRanges.length < 2) {\n this.clearHighlight();\n // return;\n }\n for (let i = 0; i < selectRanges.length; i++) {\n const selectRange = selectRanges[i];\n const rowSelectRange = [selectRange.start.row, selectRange.end.row];\n rowSelectRange.sort((a, b) => a - b); // sort\n const colSelectRange = [selectRange.start.col, selectRange.end.col];\n colSelectRange.sort((a, b) => a - b); // sort\n\n let colHeaderRange: CellRange;\n let rowHeaderRange: CellRange;\n if (this.table.isPivotTable()) {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else if (this.table.internalProps.transpose) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n if (this.table.internalProps.rowSeriesNumber) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: 0,\n row: rowSelectRange[1]\n }\n };\n }\n }\n\n if (\n this.pluginOptions?.colHighlight !== false &&\n !this.colHeaderRanges.find(range => isSameRange(range, colHeaderRange))\n ) {\n // this.colHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.colHeaderRanges }, undefined);\n colHeaderRange && this.table.arrangeCustomCellStyle({ range: colHeaderRange }, 'col-highlight');\n this.colHeaderRanges.push(colHeaderRange);\n }\n\n if (\n this.pluginOptions?.rowHighlight !== false &&\n !this.rowHeaderRanges.find(range => isSameRange(range, rowHeaderRange))\n ) {\n // this.rowHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRanges }, undefined);\n rowHeaderRange && this.table.arrangeCustomCellStyle({ range: rowHeaderRange }, 'row-highlight');\n this.rowHeaderRanges.push(rowHeaderRange);\n }\n }\n }\n release() {\n this.rowHeaderRanges = [];\n this.colHeaderRanges = [];\n }\n}\n\nfunction isSameRange(a: CellRange | undefined, b: CellRange | undefined) {\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n return (\n a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row\n );\n}\n"]}
1
+ {"version":3,"sources":["highlight-header-when-select-cell.ts"],"names":[],"mappings":"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","file":"highlight-header-when-select-cell.js","sourcesContent":["import type { CellRange } from '@visactor/vtable/es/ts-types';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { BaseTableAPI, plugins } from '@visactor/vtable';\ninterface IHighlightHeaderWhenSelectCellPluginOptions {\n rowHighlight?: boolean;\n colHighlight?: boolean;\n colHighlightBGColor?: string;\n colHighlightColor?: string;\n rowHighlightBGColor?: string;\n rowHighlightColor?: string;\n}\n\nexport class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTablePlugin {\n id = `highlight-header-when-select-cell-${Date.now()}`;\n name = 'Highlight Header When Select Cell';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.SELECTED_CLEAR,\n TABLE_EVENT_TYPE.SELECTED_CELL,\n TABLE_EVENT_TYPE.MOUSEMOVE_TABLE\n ];\n table: BaseTableAPI;\n pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions;\n colHeaderRanges: CellRange[] = [];\n rowHeaderRanges: CellRange[] = [];\n constructor(pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions) {\n this.pluginOptions = pluginOptions;\n }\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n const table: BaseTableAPI = args[2];\n this.table = table;\n if (runTime === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.clearHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.SELECTED_CELL) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.MOUSEMOVE_TABLE) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED) {\n this.registerStyle();\n }\n }\n\n registerStyle() {\n this.table.registerCustomCellStyle('col-highlight', {\n bgColor: this.pluginOptions?.colHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.colHighlightColor ?? '#FFF'\n });\n\n this.table.registerCustomCellStyle('row-highlight', {\n bgColor: this.pluginOptions?.rowHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.rowHighlightColor ?? 'yellow'\n });\n }\n\n clearHighlight() {\n if (this.colHeaderRanges) {\n this.colHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n if (this.rowHeaderRanges) {\n this.rowHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n // clear range\n this.colHeaderRanges = [];\n this.rowHeaderRanges = [];\n }\n\n updateHighlight() {\n if (this.pluginOptions?.colHighlight === false && this.pluginOptions?.rowHighlight === false) {\n return;\n }\n const selectRanges = this.table.getSelectedCellRanges();\n if (selectRanges.length < 2) {\n this.clearHighlight();\n // return;\n }\n for (let i = 0; i < selectRanges.length; i++) {\n const selectRange = selectRanges[i];\n const rowSelectRange = [selectRange.start.row, selectRange.end.row];\n rowSelectRange.sort((a, b) => a - b); // sort\n const colSelectRange = [selectRange.start.col, selectRange.end.col];\n colSelectRange.sort((a, b) => a - b); // sort\n\n let colHeaderRange: CellRange;\n let rowHeaderRange: CellRange;\n if (this.table.isPivotTable()) {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else if (this.table.internalProps.transpose) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n if (this.table.internalProps.rowSeriesNumber) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: 0,\n row: rowSelectRange[1]\n }\n };\n }\n }\n\n if (\n this.pluginOptions?.colHighlight !== false &&\n !this.colHeaderRanges.find(range => isSameRange(range, colHeaderRange))\n ) {\n // this.colHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.colHeaderRanges }, undefined);\n colHeaderRange && this.table.arrangeCustomCellStyle({ range: colHeaderRange }, 'col-highlight');\n this.colHeaderRanges.push(colHeaderRange);\n }\n\n if (\n this.pluginOptions?.rowHighlight !== false &&\n !this.rowHeaderRanges.find(range => isSameRange(range, rowHeaderRange))\n ) {\n // this.rowHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRanges }, undefined);\n rowHeaderRange && this.table.arrangeCustomCellStyle({ range: rowHeaderRange }, 'row-highlight');\n this.rowHeaderRanges.push(rowHeaderRange);\n }\n }\n }\n update() {\n this.registerStyle();\n this.updateHighlight();\n }\n release() {\n this.rowHeaderRanges = [];\n this.colHeaderRanges = [];\n }\n}\n\nfunction isSameRange(a: CellRange | undefined, b: CellRange | undefined) {\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n return (\n a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row\n );\n}\n"]}