@visactor/vtable 0.23.2 → 0.23.4

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 (129) hide show
  1. package/cjs/ListTable.js +4 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/body-helper/body-helper.js +2 -1
  4. package/cjs/body-helper/body-helper.js.map +1 -1
  5. package/cjs/components/tooltip/TooltipHandler.d.ts +1 -0
  6. package/cjs/components/tooltip/TooltipHandler.js +36 -33
  7. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  8. package/cjs/core/BaseTable.d.ts +10 -2
  9. package/cjs/core/BaseTable.js +28 -9
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/core/FouseInput.js +2 -1
  12. package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
  13. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  14. package/cjs/core/row-series-number-helper.js +1 -2
  15. package/cjs/event/event.d.ts +3 -2
  16. package/cjs/event/event.js +10 -8
  17. package/cjs/event/event.js.map +1 -1
  18. package/cjs/event/listener/container-dom.js +1 -1
  19. package/cjs/event/listener/container-dom.js.map +1 -1
  20. package/cjs/event/listener/scroll-bar.js +9 -3
  21. package/cjs/event/listener/scroll-bar.js.map +1 -1
  22. package/cjs/event/listener/table-group.js +17 -17
  23. package/cjs/event/listener/table-group.js.map +1 -1
  24. package/cjs/event/listener/touch.js +20 -18
  25. package/cjs/event/listener/touch.js.map +1 -1
  26. package/cjs/header-helper/header-helper.js +2 -1
  27. package/cjs/header-helper/header-helper.js.map +1 -1
  28. package/cjs/index.d.ts +1 -1
  29. package/cjs/index.js +1 -1
  30. package/cjs/index.js.map +1 -1
  31. package/cjs/layout/chart-helper/get-chart-spec.js +2 -2
  32. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  33. package/cjs/layout/pivot-header-layout.js +6 -2
  34. package/cjs/layout/pivot-header-layout.js.map +1 -1
  35. package/cjs/layout/tree-helper.js +1 -0
  36. package/cjs/plugins/custom-cell-style.d.ts +1 -0
  37. package/cjs/plugins/custom-cell-style.js +7 -0
  38. package/cjs/plugins/custom-cell-style.js.map +1 -1
  39. package/cjs/plugins/themes.js +1 -2
  40. package/cjs/scenegraph/component/table-component.js +2 -2
  41. package/cjs/scenegraph/component/table-component.js.map +1 -1
  42. package/cjs/scenegraph/group-creater/progress/proxy.js +3 -2
  43. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  44. package/cjs/scenegraph/layout/compute-col-width.js +8 -5
  45. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  46. package/cjs/scenegraph/layout/compute-row-height.js +12 -8
  47. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  48. package/cjs/scenegraph/scenegraph.js +2 -3
  49. package/cjs/scenegraph/scenegraph.js.map +1 -1
  50. package/cjs/scenegraph/stick-text/index.js +1 -1
  51. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  52. package/cjs/scenegraph/utils/text-measure.d.ts +1 -0
  53. package/cjs/scenegraph/utils/text-measure.js +11 -1
  54. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  55. package/cjs/state/state.js +5 -4
  56. package/cjs/state/state.js.map +1 -1
  57. package/cjs/ts-types/base-table.d.ts +5 -1
  58. package/cjs/ts-types/base-table.js.map +1 -1
  59. package/cjs/ts-types/events.d.ts +10 -2
  60. package/cjs/ts-types/events.js.map +1 -1
  61. package/cjs/ts-types/table-engine.d.ts +2 -0
  62. package/cjs/ts-types/table-engine.js.map +1 -1
  63. package/cjs/vrender.js.map +1 -1
  64. package/dist/vtable.js +736 -629
  65. package/dist/vtable.min.js +2 -2
  66. package/es/ListTable.js +3 -1
  67. package/es/ListTable.js.map +1 -1
  68. package/es/body-helper/body-helper.js +2 -1
  69. package/es/body-helper/body-helper.js.map +1 -1
  70. package/es/components/tooltip/TooltipHandler.d.ts +1 -0
  71. package/es/components/tooltip/TooltipHandler.js +36 -33
  72. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  73. package/es/core/BaseTable.d.ts +10 -2
  74. package/es/core/BaseTable.js +29 -10
  75. package/es/core/BaseTable.js.map +1 -1
  76. package/es/core/FouseInput.js +2 -1
  77. package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
  78. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  79. package/es/core/row-series-number-helper.js +1 -2
  80. package/es/event/event.d.ts +3 -2
  81. package/es/event/event.js +10 -8
  82. package/es/event/event.js.map +1 -1
  83. package/es/event/listener/container-dom.js +1 -1
  84. package/es/event/listener/container-dom.js.map +1 -1
  85. package/es/event/listener/scroll-bar.js +10 -2
  86. package/es/event/listener/scroll-bar.js.map +1 -1
  87. package/es/event/listener/table-group.js +17 -17
  88. package/es/event/listener/table-group.js.map +1 -1
  89. package/es/event/listener/touch.js +19 -15
  90. package/es/event/listener/touch.js.map +1 -1
  91. package/es/header-helper/header-helper.js +2 -1
  92. package/es/header-helper/header-helper.js.map +1 -1
  93. package/es/index.d.ts +1 -1
  94. package/es/index.js +1 -1
  95. package/es/index.js.map +1 -1
  96. package/es/layout/chart-helper/get-chart-spec.js +4 -2
  97. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  98. package/es/layout/pivot-header-layout.js +6 -2
  99. package/es/layout/pivot-header-layout.js.map +1 -1
  100. package/es/layout/tree-helper.js +2 -1
  101. package/es/plugins/custom-cell-style.d.ts +1 -0
  102. package/es/plugins/custom-cell-style.js +7 -0
  103. package/es/plugins/custom-cell-style.js.map +1 -1
  104. package/es/plugins/themes.js +1 -2
  105. package/es/scenegraph/component/table-component.js +2 -2
  106. package/es/scenegraph/component/table-component.js.map +1 -1
  107. package/es/scenegraph/group-creater/progress/proxy.js +4 -1
  108. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  109. package/es/scenegraph/layout/compute-col-width.js +8 -5
  110. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  111. package/es/scenegraph/layout/compute-row-height.js +14 -9
  112. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  113. package/es/scenegraph/scenegraph.js +1 -4
  114. package/es/scenegraph/scenegraph.js.map +1 -1
  115. package/es/scenegraph/stick-text/index.js +1 -1
  116. package/es/scenegraph/stick-text/index.js.map +1 -1
  117. package/es/scenegraph/utils/text-measure.d.ts +1 -0
  118. package/es/scenegraph/utils/text-measure.js +9 -1
  119. package/es/scenegraph/utils/text-measure.js.map +1 -1
  120. package/es/state/state.js +5 -4
  121. package/es/state/state.js.map +1 -1
  122. package/es/ts-types/base-table.d.ts +5 -1
  123. package/es/ts-types/base-table.js.map +1 -1
  124. package/es/ts-types/events.d.ts +10 -2
  125. package/es/ts-types/events.js.map +1 -1
  126. package/es/ts-types/table-engine.d.ts +2 -0
  127. package/es/ts-types/table-engine.js.map +1 -1
  128. package/es/vrender.js.map +1 -1
  129. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/stick-text/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,KAAmB;IAEjD,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IACnD,YAAY,CAAC,OAAO,CAAC,CAAC,OAAkB,EAAE,EAAE;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACrE,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;YAC5C,KAAK,CAAC,aAAa,CAAC;gBAClB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,EAAE,CAAC;IAErB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAEnD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACzD,MAAM,MAAM,GACV,KAAK,CAAC,gBAAgB,EAAE,GAAG,KAAK,CAAC,kBAAkB;QACjD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG;QAClG,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC;IACtD,MAAM,MAAM,GACV,KAAK,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,iBAAiB;QAC/C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG;QAChG,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;QAC5B,OAAO;KACR;IAGD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM;SACP;QACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,EAAE;gBACpB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAErD,iCAAiC,CAC/B,SAAS,EACT,eAAe,GAAG,KAAK,CAAC,MAAM,EAC9B,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,uBAAuB,EAAE,GAAG,KAAK,CAAC,MAAM,EACxE,YAAY,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,oBAAoB,EAC3B,KAAK,CACN,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IAGD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM;SACP;QACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAK,KAAK,CAAC,aAAa,CAAC,SAAkC,CAAC,gBAAgB,KAAK,MAAM,EAAE;gBAC3G,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAErD,+BAA+B,CAC7B,SAAS,EACT,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAC/B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,MAAM,EAC3E,YAAY,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,oBAAoB,EAC3B,KAAK,CACN,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IAGD,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM;SACP;QACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,EAAE;gBACpB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAErD,+BAA+B,CAC7B,SAAS,EACT,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAC/B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,MAAM,EAC3E,YAAY,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,oBAAoB,EAC3B,KAAK,CACN,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IACD,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM;SACP;QACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAA,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,0CAAE,SAAS,EAAE;gBAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAErD,iCAAiC,CAC/B,SAAS,EACT,eAAe,GAAG,KAAK,CAAC,MAAM,EAC9B,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,uBAAuB,EAAE,GAAG,KAAK,CAAC,MAAM,EACxE,YAAY,EACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,oBAAoB,EAC3B,KAAK,CACN,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAOD,SAAS,+BAA+B,CACtC,SAAgB,EAChB,MAAc,EACd,MAAc,EACd,YAAoC,EACpC,oBAAyC,EACzC,KAAmB;IAEnB,IACE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAC/B;QACA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9F,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7C,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3D,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;aACnF;SACF;KACF;SAAM;QACL,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;KAC7E;AACH,CAAC;AAED,SAAS,YAAY,CACnB,SAAgB,EAChB,MAAc,EACd,MAAc,EACd,YAAoC,EACpC,oBAAyC;;IAGzC,MAAM,OAAO,GACV,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAU,IAAK,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAW,CAAC;IACzG,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;KACR;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;QAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC9B,OAAO;SACR;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAU,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE;YAC3B,OAAO;SACR;KACF;IAGD,MAAM,YAAY,GAAG,MAAC,OAAe,CAAC,YAAY,mCAAI,KAAK,CAAC;IAE5D,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAE/C,IAAI,YAAY,KAAK,QAAQ,IAAI,oBAAoB,EAAE;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC;QACxG,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,aAAa,mCAAI,SAAS,CAAC,SAAS,CAAC,MAAM,mCAAI,CAAC,CAAC,CAAC;QAC1F,IAAI,OAAO,GAAG,MAAM,IAAI,UAAU,GAAG,MAAM,EAAE;YAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACrF,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;oBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;oBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;iBAC1D,CAAC,CAAC;YACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;gBAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;SACJ;KACF;SAAM,IAAI,OAAO,GAAG,MAAM,EAAE;QAC3B,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;QAErC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;gBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;gBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;aAC1D,CAAC,CAAC;QACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;YAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,UAAU,GAAG,MAAM,EAAE;QAC9B,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;QAExC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;gBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;gBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;aAC1D,CAAC,CAAC;QACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;YAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAOD,SAAS,iCAAiC,CACxC,SAAgB,EAChB,OAAe,EACf,OAAe,EACf,YAAoC,EACpC,oBAAyC,EACzC,KAAmB;IAEnB,IACE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAC/B;QACA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9F,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7C,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7C,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3D,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;aACvF;SACF;KACF;SAAM;QACL,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;KACjF;AACH,CAAC;AAED,SAAS,cAAc,CACrB,SAAgB,EAChB,OAAe,EACf,OAAe,EACf,YAAoC,EACpC,oBAAyC;;IASzC,MAAM,OAAO,GACV,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAU,IAAK,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAW,CAAC;IACzG,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;KACR;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;QAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC9B,OAAO;SACR;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAU,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE;YAC3B,OAAO;SACR;KACF;IACD,MAAM,SAAS,GAAG,MAAA,MAAC,OAAe,CAAC,SAAS,CAAC,SAAS,mCAAK,OAAe,CAAC,SAAS,mCAAI,MAAM,CAAC;IAC/F,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC9C,IAAI,SAAS,KAAK,QAAQ,IAAI,oBAAoB,EAAE;QAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC;QACzG,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,YAAY,mCAAI,SAAS,CAAC,SAAS,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAC;QACxF,IAAI,QAAQ,GAAG,OAAO,IAAI,SAAS,GAAG,OAAO,EAAE;YAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACrF,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;oBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;oBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;iBAC1D,CAAC,CAAC;YACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;gBAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;SACJ;KACF;SAAM,IAAI,QAAQ,GAAG,OAAO,EAAE;QAC7B,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;QAEtC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;gBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;gBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;aAC1D,CAAC,CAAC;QACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;YAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,SAAS,GAAG,OAAO,EAAE;QAC9B,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;QAEvC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YACpD,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE;gBACpD,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;gBACzD,EAAE,EAAE,MAAA,MAAC,SAAS,CAAC,UAAuB,0CAAE,SAAS,CAAC,EAAE,mCAAI,CAAC;aAC1D,CAAC,CAAC;QACL,SAAS,CAAC,eAAe,CAAC,CAAC,KAAe,EAAE,EAAE;;YAC5C,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,EAAE,mCAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAmB;;IACpD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;IAClE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,KAAI,MAAC,MAAM,CAAC,KAA0B,0CAAE,SAAS,CAAA,EAAE;YAC3D,OAAO,IAAI,CAAC;SACb;KACF;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,KAAI,MAAC,MAAM,CAAC,KAA0B,0CAAE,SAAS,CAAA,EAAE;YAC3D,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC","file":"index.js","sourcesContent":["import type { IGraphic, Image, Text } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Group } from '../graphic/group';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport type { ITextStyleOption, StickCell } from '../../ts-types';\nimport { isNumber, min } from '@visactor/vutils';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function handleTextStick(table: BaseTableAPI) {\n // reset\n const { changedCells } = table.internalProps.stick; // changedCells only cache one time\n changedCells.forEach((cellPos: StickCell) => {\n const cellGroup = table.scenegraph.getCell(cellPos.col, cellPos.row);\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttributes({\n dx: cellPos.dx,\n dy: cellPos.dy\n });\n });\n });\n changedCells.clear();\n\n const { scrollTop, scrollLeft, frozenRowCount, frozenColCount } = table;\n const frozenRowsHeight = table.getFrozenRowsHeight();\n const frozenColsWidth = table.getFrozenColsWidth();\n // 计算非冻结\n const { row: rowTop } = table.getRowAt(scrollTop + frozenRowsHeight + 1);\n const { col: colLeft } = table.getColAt(scrollLeft + frozenColsWidth + 1);\n const rowStart = Math.max(rowTop, table.frozenRowCount);\n const colStart = Math.max(colLeft, table.frozenColCount);\n const rowEnd =\n table.getAllRowsHeight() > table.tableNoFrameHeight\n ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row\n : table.rowCount - table.bottomFrozenRowCount - 1;\n const colEnd =\n table.getAllColsWidth() > table.tableNoFrameWidth\n ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col\n : table.colCount - table.rightFrozenColCount - 1;\n if (colEnd < 0 || rowEnd < 0) {\n return;\n }\n\n // column header\n for (let row = 0; row < frozenRowCount; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // row header\n for (let col = 0; col < frozenColCount; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && (table.internalProps.layoutMap as PivotHeaderLayoutMap).rowHierarchyType !== 'tree') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // body\n for (let col = colStart; col <= colEnd; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n for (let row = rowStart; row < rowEnd; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (table._getCellStyle(col, row)?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n}\n\n/*\n * adjust cell content vertical layout\n * @param {Group} cellGroup\n * @param {number} scrollTop\n */\nfunction adjustCellContentVerticalLayout(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealVertical(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n\n // const textBaseline = (graphic as any).attribute.textBaseline ?? (graphic as any).textBaseline ?? 'top';\n const textBaseline = (graphic as any).textBaseline ?? 'top';\n\n graphic.AABBBounds.width();\n const textTop = graphic.globalAABBBounds.y1;\n const textBottom = graphic.globalAABBBounds.y2;\n\n if (textBaseline === 'middle' && textStickBaseOnAlign) {\n const cellTop = cellGroup.globalAABBBounds.y1 + ((cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0);\n const cellBottom = cellTop + (cellGroup.contentHeight ?? cellGroup.attribute.height ?? 0);\n if (cellTop < minTop || cellBottom > maxTop) {\n const visibleCellTop = Math.max(cellTop, minTop);\n const visibleCellBottom = Math.min(cellBottom, maxTop);\n const delta = graphic.globalTransMatrix.f - (visibleCellBottom + visibleCellTop) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textTop < minTop) {\n const deltaHeight = textTop - minTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight + 2); // 2 is the buffer\n });\n } else if (textBottom > maxTop) {\n const deltaHeight = textBottom - maxTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight); // 2 is the buffer\n });\n }\n}\n\n/*\n * adjust cell content horizontal layout\n * @param {Group} cellGroup\n * @param {number} scrollLeft\n */\nfunction adjustCellContentHorizontalLayout(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealHorizontal(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealHorizontal(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n // const text = cellGroup.getChildByName('text', true) as Text;\n // if (!text) {\n // return;\n // }\n\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n const textAlign = (graphic as any).attribute.textAlign ?? (graphic as any).textAlign ?? 'left';\n graphic.AABBBounds.width();\n const textLeft = graphic.globalAABBBounds.x1;\n const textRight = graphic.globalAABBBounds.x2;\n if (textAlign === 'center' && textStickBaseOnAlign) {\n const cellLeft = cellGroup.globalAABBBounds.x1 + ((cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0);\n const cellRight = cellLeft + (cellGroup.contentWidth ?? cellGroup.attribute.width ?? 0);\n if (cellLeft < minLeft || cellRight > maxLeft) {\n const visibleCellLeft = Math.max(cellLeft, minLeft);\n const visibleCellRight = Math.min(cellRight, maxLeft);\n const delta = graphic.globalTransMatrix.e - (visibleCellRight + visibleCellLeft) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textLeft < minLeft) {\n const deltaWidth = textLeft - minLeft;\n // text is out of view, move all elements right\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth + 2); // 2 is the buffer\n });\n } else if (textRight > maxLeft) {\n const deltaWidth = textRight - maxLeft;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth); // 2 is the buffer\n });\n }\n}\n\nexport function checkHaveTextStick(table: BaseTableAPI) {\n const headerObjects = table.internalProps.layoutMap.headerObjects;\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < headerObjects.length; i++) {\n const header = headerObjects[i];\n if (header && (header.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column && (column.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/stick-text/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { IGraphic, Image, Text } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Group } from '../graphic/group';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport type { ITextStyleOption, StickCell } from '../../ts-types';\nimport { isNumber, min } from '@visactor/vutils';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function handleTextStick(table: BaseTableAPI) {\n // reset\n const { changedCells } = table.internalProps.stick; // changedCells only cache one time\n changedCells.forEach((cellPos: StickCell) => {\n const cellGroup = table.scenegraph.getCell(cellPos.col, cellPos.row);\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttributes({\n dx: cellPos.dx,\n dy: cellPos.dy\n });\n });\n });\n changedCells.clear();\n\n const { scrollTop, scrollLeft, frozenRowCount, frozenColCount } = table;\n const frozenRowsHeight = table.getFrozenRowsHeight();\n const frozenColsWidth = table.getFrozenColsWidth();\n // 计算非冻结\n const { row: rowTop } = table.getRowAt(scrollTop + frozenRowsHeight + 1);\n const { col: colLeft } = table.getColAt(scrollLeft + frozenColsWidth + 1);\n const rowStart = Math.max(rowTop, table.frozenRowCount);\n const colStart = Math.max(colLeft, table.frozenColCount);\n const rowEnd =\n table.getAllRowsHeight() > table.tableNoFrameHeight\n ? table.getRowAt(scrollTop + table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() - 1).row\n : table.rowCount - table.bottomFrozenRowCount - 1;\n const colEnd =\n table.getAllColsWidth() > table.tableNoFrameWidth\n ? table.getColAt(scrollLeft + table.tableNoFrameWidth - table.getRightFrozenColsWidth() - 1).col\n : table.colCount - table.rightFrozenColCount - 1;\n if (colEnd < 0 || rowEnd < 0) {\n return;\n }\n\n // column header\n for (let row = 0; row < frozenRowCount; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // row header\n for (let col = 0; col < frozenColCount; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick && (table.internalProps.layoutMap as PivotHeaderLayoutMap).rowHierarchyType !== 'tree') {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n\n // body\n for (let col = colStart; col <= colEnd; col++) {\n if (rowEnd < rowStart) {\n break;\n }\n [rowStart, rowEnd].forEach((row: number) => {\n const style = table._getCellStyle(col, row);\n if (style?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell vertical\n adjustCellContentVerticalLayout(\n cellGroup,\n frozenRowsHeight + table.tableY,\n table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() + table.tableY,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n for (let row = rowStart; row < rowEnd; row++) {\n if (colEnd < colStart) {\n break;\n }\n [colStart, colEnd].forEach((col: number) => {\n const style = table._getCellStyle(col, row);\n if (table._getCellStyle(col, row)?.textStick) {\n const cellGroup = table.scenegraph.getCell(col, row);\n // adjust cell Horizontal\n adjustCellContentHorizontalLayout(\n cellGroup,\n frozenColsWidth + table.tableX,\n table.tableNoFrameWidth - table.getRightFrozenColsWidth() + table.tableX,\n changedCells,\n style?.textStickBaseOnAlign,\n table\n );\n }\n });\n }\n}\n\n/*\n * adjust cell content vertical layout\n * @param {Group} cellGroup\n * @param {number} scrollTop\n */\nfunction adjustCellContentVerticalLayout(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n dealVertical(singleCellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealVertical(cellGroup, minTop, maxTop, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealVertical(\n cellGroup: Group,\n minTop: number,\n maxTop: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n\n // const textBaseline = (graphic as any).attribute.textBaseline ?? (graphic as any).textBaseline ?? 'top';\n const textBaseline = (graphic as any).textBaseline ?? 'top';\n\n graphic.AABBBounds.width();\n const textTop = graphic.globalAABBBounds.y1;\n const textBottom = graphic.globalAABBBounds.y2;\n\n if (textBaseline === 'middle' && textStickBaseOnAlign) {\n const cellTop = cellGroup.globalAABBBounds.y1 + ((cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0);\n const cellBottom = cellTop + (cellGroup.contentHeight ?? cellGroup.attribute.height ?? 0);\n if (cellTop < minTop || cellBottom > maxTop) {\n const visibleCellTop = Math.max(cellTop, minTop);\n const visibleCellBottom = Math.min(cellBottom, maxTop);\n const delta = graphic.globalTransMatrix.f - (visibleCellBottom + visibleCellTop) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textTop < minTop) {\n const deltaHeight = textTop - minTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight + 2); // 2 is the buffer\n });\n } else if (textBottom > maxTop) {\n const deltaHeight = textBottom - maxTop;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dy', (child.attribute.dy ?? 0) - deltaHeight); // 2 is the buffer\n });\n }\n}\n\n/*\n * adjust cell content horizontal layout\n * @param {Group} cellGroup\n * @param {number} scrollLeft\n */\nfunction adjustCellContentHorizontalLayout(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined,\n table: BaseTableAPI\n) {\n if (\n isNumber(cellGroup.mergeStartCol) &&\n isNumber(cellGroup.mergeStartRow) &&\n isNumber(cellGroup.mergeEndCol) &&\n isNumber(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, table.scenegraph);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const singleCellGroup = table.scenegraph.getCell(col, row);\n dealHorizontal(singleCellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n }\n } else {\n dealHorizontal(cellGroup, minLeft, maxLeft, changedCells, textStickBaseOnAlign);\n }\n}\n\nfunction dealHorizontal(\n cellGroup: Group,\n minLeft: number,\n maxLeft: number,\n changedCells: Map<string, StickCell>,\n textStickBaseOnAlign: boolean | undefined\n) {\n // get text element\n // const text = cellGroup.getChildByName('text', true) as Text;\n // if (!text) {\n // return;\n // }\n\n // get text element\n const graphic =\n (cellGroup.getChildByName('text', true) as Text) || (cellGroup.getChildByName('image', true) as Image);\n if (!graphic) {\n return;\n }\n if (graphic.type === 'image') {\n const { image: url } = graphic.attribute;\n if (!url || !graphic.resources) {\n return;\n }\n const res = graphic.resources.get(url as any);\n if (res.state !== 'success') {\n return;\n }\n }\n const textAlign = (graphic as any).attribute.textAlign ?? (graphic as any).textAlign ?? 'left';\n graphic.AABBBounds.width();\n const textLeft = graphic.globalAABBBounds.x1;\n const textRight = graphic.globalAABBBounds.x2;\n if (textAlign === 'center' && textStickBaseOnAlign) {\n const cellLeft = cellGroup.globalAABBBounds.x1 + ((cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0);\n const cellRight = cellLeft + (cellGroup.contentWidth ?? cellGroup.attribute.width ?? 0);\n if (cellLeft < minLeft || cellRight > maxLeft) {\n const visibleCellLeft = Math.max(cellLeft, minLeft);\n const visibleCellRight = Math.min(cellRight, maxLeft);\n const delta = graphic.globalTransMatrix.e - (visibleCellRight + visibleCellLeft) / 2;\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - delta + 2); // 2 is the buffer\n });\n }\n } else if (textLeft < minLeft) {\n const deltaWidth = textLeft - minLeft;\n // text is out of view, move all elements right\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth + 2); // 2 is the buffer\n });\n } else if (textRight > maxLeft) {\n const deltaWidth = textRight - maxLeft;\n // text is out of view, move all elements down\n !changedCells.has(`${cellGroup.col}-${cellGroup.row}`) &&\n changedCells.set(`${cellGroup.col}-${cellGroup.row}`, {\n col: cellGroup.col,\n row: cellGroup.row,\n dx: (cellGroup.firstChild as IGraphic)?.attribute.dx ?? 0,\n dy: (cellGroup.firstChild as IGraphic)?.attribute.dy ?? 0\n });\n cellGroup.forEachChildren((child: IGraphic) => {\n child.setAttribute('dx', (child.attribute.dx ?? 0) - deltaWidth); // 2 is the buffer\n });\n }\n}\n\nexport function checkHaveTextStick(table: BaseTableAPI) {\n const headerObjects = table.internalProps.layoutMap.headerObjects;\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < headerObjects.length; i++) {\n const header = headerObjects[i];\n if (header && (header.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column && (column.style as ITextStyleOption)?.textStick) {\n return true;\n }\n }\n const themeStick =\n table.theme.headerStyle.textStick || table.theme.rowHeaderStyle.textStick || table.theme.bodyStyle.textStick;\n if (themeStick) {\n return true;\n }\n return false;\n}\n"]}
@@ -30,3 +30,4 @@ export declare class TextMeasureTool {
30
30
  export declare const textMeasure: TextMeasureTool;
31
31
  export declare function setCustomAlphabetCharSet(str: string): void;
32
32
  export declare function restoreMeasureText(): void;
33
+ export declare function measureTextBounds(attribute: ITextGraphicAttribute): import("@visactor/vutils").AABBBounds;
@@ -1,4 +1,4 @@
1
- import { DefaultTextStyle, getTextBounds, DefaultTextMeasureContribution, TextMeasureContribution, ContainerModule, container } from "./../../vrender";
1
+ import { DefaultTextStyle, getTextBounds, DefaultTextMeasureContribution, TextMeasureContribution, ContainerModule, container, Text } from "./../../vrender";
2
2
 
3
3
  import { TextMeasure } from "@visactor/vutils";
4
4
 
@@ -138,4 +138,12 @@ export function setCustomAlphabetCharSet(str) {
138
138
  export function restoreMeasureText() {
139
139
  textMeasureMode = "canvas", container.load(restoreTextMeasureModule);
140
140
  }
141
+
142
+ const utilTextMark = new Text({
143
+ ignoreBuf: !0
144
+ });
145
+
146
+ export function measureTextBounds(attribute) {
147
+ return utilTextMark.setAttributes(attribute), utilTextMark.AABBBounds;
148
+ }
141
149
  //# sourceMappingURL=text-measure.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/utils/text-measure.ts"],"names":[],"mappings":"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","file":"text-measure.js","sourcesContent":["import type { ITextGraphicAttribute, TextOptionsType } from './../../vrender';\nimport {\n DefaultTextStyle,\n getTextBounds,\n DefaultTextMeasureContribution,\n TextMeasureContribution,\n ContainerModule,\n container\n} from './../../vrender';\n// eslint-disable-next-line max-len\n// import {\n// DefaultTextMeasureContribution,\n// TextMeasureContribution\n// } from '@visactor/vrender/es/core/contributions/textMeasure/textMeasure-contribution';\nimport type { ITextMeasureOption, ITextSize } from '@visactor/vutils';\nimport { TextMeasure } from '@visactor/vutils';\n\nlet customAlphabetCharSet = '';\nlet textMeasureMode: 'quick' | 'canvas' = 'quick';\n\ntype ITextGraphicAttributeFroMeasure = Omit<ITextGraphicAttribute, 'lineHeight'> & {\n lineHeight?: number;\n};\n\nconst textMeasureModule = new ContainerModule((bind, unbind, isBound, rebind) => {\n if (isBound(TextMeasureContribution)) {\n rebind(TextMeasureContribution).to(FastTextMeasureContribution).inSingletonScope();\n } else {\n bind(TextMeasureContribution).to(FastTextMeasureContribution).inSingletonScope();\n }\n});\n\nconst restoreTextMeasureModule = new ContainerModule((bind, unbind, isBound, rebind) => {\n if (isBound(TextMeasureContribution)) {\n rebind(TextMeasureContribution).to(DefaultTextMeasureContribution).inSingletonScope();\n } else {\n bind(TextMeasureContribution).to(DefaultTextMeasureContribution).inSingletonScope();\n }\n});\n\nexport default textMeasureModule;\n\nexport const initTextMeasure = (\n textSpec?: ITextGraphicAttributeFroMeasure,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextGraphicAttributeFroMeasure> => {\n return new TextMeasure<ITextGraphicAttributeFroMeasure>(\n {\n defaultFontParams: {\n fontFamily: DefaultTextStyle.fontFamily,\n fontSize: DefaultTextStyle.fontSize\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: `{}()//&-/: .,@%'\"~…=${\n TextMeasure.ALPHABET_CHAR_SET\n }${TextMeasure.ALPHABET_CHAR_SET.toUpperCase()}0123456789${customAlphabetCharSet}`,\n ...(option ?? {})\n },\n textSpec\n );\n};\n\nconst fastTextMeasureCache: Map<string, TextMeasure<ITextGraphicAttributeFroMeasure>> = new Map();\n\nfunction getFastTextMeasure(\n fontSize: number,\n fontWeight: string | number,\n fontFamily: string,\n fontStyle: string = 'normal'\n) {\n const key = `${fontSize}-${fontWeight}-${fontFamily}-${fontStyle}`;\n const cache = fastTextMeasureCache.get(key);\n if (cache) {\n return cache;\n }\n const fastTextMeasure = initTextMeasure({\n // 16px sans-serif\n fontSize,\n fontFamily,\n fontWeight,\n fontStyle\n });\n fastTextMeasureCache.set(key, fastTextMeasure);\n return fastTextMeasure;\n}\n\nexport class FastTextMeasureContribution extends DefaultTextMeasureContribution {\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: TextOptionsType): number {\n // if (!this.context) {\n // return this.estimate(text, options).width;\n // }\n // this.context.setTextStyleWithoutAlignBaseline(options);\n // const textMeasure = this.context.measureText(text);\n // return textMeasure.width;\n\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure.width;\n }\n\n /**\n * 获取text测量对象\n * @param text\n * @param options\n */\n measureText(text: string, options: TextOptionsType): TextMetrics | { width: number } {\n // if (!this.context) {\n // return this.estimate(text, options);\n // }\n // this.context.setTextStyleWithoutAlignBaseline(options);\n // return this.context.measureText(text);\n\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure;\n }\n}\n\nexport class TextMeasureTool {\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureText(text: string, options: ITextGraphicAttribute): ITextSize {\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure;\n }\n\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: ITextGraphicAttribute): number {\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure.width;\n }\n\n /**\n * 将文本裁剪到width宽\n * @param text\n * @param options\n * @param width\n */\n clipText(\n text: string,\n options: ITextGraphicAttribute,\n width: number\n ): {\n str: string;\n width: number;\n } {\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n let length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n length = this.measureTextWidth(text[0], options);\n if (length > width) {\n return { str: '', width: 0 };\n }\n return this._clipText(text, options, width, 0, text.length - 1);\n }\n\n // 二分法找到最佳宽\n private _clipText(\n text: string,\n options: ITextGraphicAttribute,\n width: number,\n leftIdx: number,\n rightIdx: number\n ): { str: string; width: number } {\n const middleIdx = Math.floor((leftIdx + rightIdx) / 2);\n const subText = text.substring(0, middleIdx + 1);\n const strWidth = this.measureTextWidth(subText, options);\n let length: number;\n if (strWidth > width) {\n // 如果字符串的宽度大于限制宽度\n if (subText.length <= 1) {\n return { str: '', width: 0 };\n } // 如果子字符串长度小于1,而且大于给定宽的话,返回空字符串\n // 先判断是不是左侧的那个字符\n const str = text.substring(0, middleIdx);\n // 如果到左侧的字符小于或等于width,那么说明就是左侧的字符\n length = this.measureTextWidth(str, options);\n if (length <= width) {\n return { str, width: length };\n }\n // 返回leftIdx到middleIdx\n return this._clipText(text, options, width, leftIdx, middleIdx);\n } else if (strWidth < width) {\n // 如果字符串的宽度小于限制宽度\n if (middleIdx >= text.length - 1) {\n return { str: text, width: this.measureTextWidth(text, options) };\n } // 如果已经到结尾了,返回text\n // 先判断是不是右侧的那个字符\n const str = text.substring(0, middleIdx + 2);\n // 如果到右侧的字符大于或等于width,那么说明就是这个字符串\n length = this.measureTextWidth(str, options);\n if (length >= width) {\n return { str: subText, width: strWidth };\n }\n // 返回middleIdx到rightIdx\n return this._clipText(text, options, width, middleIdx, rightIdx);\n }\n // 如果相同,那么就找到text\n return { str: subText, width: strWidth };\n }\n\n clipTextWithSuffix(\n text: string,\n options: ITextGraphicAttribute,\n width: number,\n suffix: string\n ): {\n str: string;\n width: number;\n } {\n if (suffix === '') {\n return this.clipText(text, options, width);\n }\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n const length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return { str: '', width: 0 };\n }\n width -= suffixWidth;\n const data = this._clipText(text, options, width, 0, text.length - 1);\n data.str += suffix;\n data.width += suffixWidth;\n return data;\n }\n}\n\nexport const textMeasure = new TextMeasureTool();\n\n// add user custom alphabet char set into fast measurement\nexport function setCustomAlphabetCharSet(str: string) {\n customAlphabetCharSet = str;\n fastTextMeasureCache.clear();\n // container.load(textMeasureModule);\n}\n\n// change fast textMeasure into canvas textMeasure\nexport function restoreMeasureText() {\n textMeasureMode = 'canvas';\n container.load(restoreTextMeasureModule);\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/utils/text-measure.ts"],"names":[],"mappings":"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","file":"text-measure.js","sourcesContent":["import type { ITextGraphicAttribute, TextOptionsType } from './../../vrender';\nimport {\n DefaultTextStyle,\n getTextBounds,\n DefaultTextMeasureContribution,\n TextMeasureContribution,\n ContainerModule,\n container,\n Text\n} from './../../vrender';\n// eslint-disable-next-line max-len\n// import {\n// DefaultTextMeasureContribution,\n// TextMeasureContribution\n// } from '@visactor/vrender/es/core/contributions/textMeasure/textMeasure-contribution';\nimport type { ITextMeasureOption, ITextSize } from '@visactor/vutils';\nimport { TextMeasure } from '@visactor/vutils';\n\nlet customAlphabetCharSet = '';\nlet textMeasureMode: 'quick' | 'canvas' = 'quick';\n\ntype ITextGraphicAttributeFroMeasure = Omit<ITextGraphicAttribute, 'lineHeight'> & {\n lineHeight?: number;\n};\n\nconst textMeasureModule = new ContainerModule((bind, unbind, isBound, rebind) => {\n if (isBound(TextMeasureContribution)) {\n rebind(TextMeasureContribution).to(FastTextMeasureContribution).inSingletonScope();\n } else {\n bind(TextMeasureContribution).to(FastTextMeasureContribution).inSingletonScope();\n }\n});\n\nconst restoreTextMeasureModule = new ContainerModule((bind, unbind, isBound, rebind) => {\n if (isBound(TextMeasureContribution)) {\n rebind(TextMeasureContribution).to(DefaultTextMeasureContribution).inSingletonScope();\n } else {\n bind(TextMeasureContribution).to(DefaultTextMeasureContribution).inSingletonScope();\n }\n});\n\nexport default textMeasureModule;\n\nexport const initTextMeasure = (\n textSpec?: ITextGraphicAttributeFroMeasure,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextGraphicAttributeFroMeasure> => {\n return new TextMeasure<ITextGraphicAttributeFroMeasure>(\n {\n defaultFontParams: {\n fontFamily: DefaultTextStyle.fontFamily,\n fontSize: DefaultTextStyle.fontSize\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: `{}()//&-/: .,@%'\"~…=${\n TextMeasure.ALPHABET_CHAR_SET\n }${TextMeasure.ALPHABET_CHAR_SET.toUpperCase()}0123456789${customAlphabetCharSet}`,\n ...(option ?? {})\n },\n textSpec\n );\n};\n\nconst fastTextMeasureCache: Map<string, TextMeasure<ITextGraphicAttributeFroMeasure>> = new Map();\n\nfunction getFastTextMeasure(\n fontSize: number,\n fontWeight: string | number,\n fontFamily: string,\n fontStyle: string = 'normal'\n) {\n const key = `${fontSize}-${fontWeight}-${fontFamily}-${fontStyle}`;\n const cache = fastTextMeasureCache.get(key);\n if (cache) {\n return cache;\n }\n const fastTextMeasure = initTextMeasure({\n // 16px sans-serif\n fontSize,\n fontFamily,\n fontWeight,\n fontStyle\n });\n fastTextMeasureCache.set(key, fastTextMeasure);\n return fastTextMeasure;\n}\n\nexport class FastTextMeasureContribution extends DefaultTextMeasureContribution {\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: TextOptionsType): number {\n // if (!this.context) {\n // return this.estimate(text, options).width;\n // }\n // this.context.setTextStyleWithoutAlignBaseline(options);\n // const textMeasure = this.context.measureText(text);\n // return textMeasure.width;\n\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure.width;\n }\n\n /**\n * 获取text测量对象\n * @param text\n * @param options\n */\n measureText(text: string, options: TextOptionsType): TextMetrics | { width: number } {\n // if (!this.context) {\n // return this.estimate(text, options);\n // }\n // this.context.setTextStyleWithoutAlignBaseline(options);\n // return this.context.measureText(text);\n\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure;\n }\n}\n\nexport class TextMeasureTool {\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureText(text: string, options: ITextGraphicAttribute): ITextSize {\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure;\n }\n\n /**\n * 获取text宽度,measureText.width\n * @param text\n * @param options\n */\n measureTextWidth(text: string, options: ITextGraphicAttribute): number {\n const { fontSize, fontFamily = 'Arial,sans-serif', fontWeight = 'normal', fontStyle = 'normal' } = options;\n const fastTextMeasure = getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle);\n const textMeasure = fastTextMeasure.measure(text, textMeasureMode);\n return textMeasure.width;\n }\n\n /**\n * 将文本裁剪到width宽\n * @param text\n * @param options\n * @param width\n */\n clipText(\n text: string,\n options: ITextGraphicAttribute,\n width: number\n ): {\n str: string;\n width: number;\n } {\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n let length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n length = this.measureTextWidth(text[0], options);\n if (length > width) {\n return { str: '', width: 0 };\n }\n return this._clipText(text, options, width, 0, text.length - 1);\n }\n\n // 二分法找到最佳宽\n private _clipText(\n text: string,\n options: ITextGraphicAttribute,\n width: number,\n leftIdx: number,\n rightIdx: number\n ): { str: string; width: number } {\n const middleIdx = Math.floor((leftIdx + rightIdx) / 2);\n const subText = text.substring(0, middleIdx + 1);\n const strWidth = this.measureTextWidth(subText, options);\n let length: number;\n if (strWidth > width) {\n // 如果字符串的宽度大于限制宽度\n if (subText.length <= 1) {\n return { str: '', width: 0 };\n } // 如果子字符串长度小于1,而且大于给定宽的话,返回空字符串\n // 先判断是不是左侧的那个字符\n const str = text.substring(0, middleIdx);\n // 如果到左侧的字符小于或等于width,那么说明就是左侧的字符\n length = this.measureTextWidth(str, options);\n if (length <= width) {\n return { str, width: length };\n }\n // 返回leftIdx到middleIdx\n return this._clipText(text, options, width, leftIdx, middleIdx);\n } else if (strWidth < width) {\n // 如果字符串的宽度小于限制宽度\n if (middleIdx >= text.length - 1) {\n return { str: text, width: this.measureTextWidth(text, options) };\n } // 如果已经到结尾了,返回text\n // 先判断是不是右侧的那个字符\n const str = text.substring(0, middleIdx + 2);\n // 如果到右侧的字符大于或等于width,那么说明就是这个字符串\n length = this.measureTextWidth(str, options);\n if (length >= width) {\n return { str: subText, width: strWidth };\n }\n // 返回middleIdx到rightIdx\n return this._clipText(text, options, width, middleIdx, rightIdx);\n }\n // 如果相同,那么就找到text\n return { str: subText, width: strWidth };\n }\n\n clipTextWithSuffix(\n text: string,\n options: ITextGraphicAttribute,\n width: number,\n suffix: string\n ): {\n str: string;\n width: number;\n } {\n if (suffix === '') {\n return this.clipText(text, options, width);\n }\n if (text.length === 0) {\n return { str: '', width: 0 };\n }\n const length = this.measureTextWidth(text, options);\n if (length <= width) {\n return { str: text, width: length };\n }\n const suffixWidth = this.measureTextWidth(suffix, options);\n if (suffixWidth > width) {\n return { str: '', width: 0 };\n }\n width -= suffixWidth;\n const data = this._clipText(text, options, width, 0, text.length - 1);\n data.str += suffix;\n data.width += suffixWidth;\n return data;\n }\n}\n\nexport const textMeasure = new TextMeasureTool();\n\n// add user custom alphabet char set into fast measurement\nexport function setCustomAlphabetCharSet(str: string) {\n customAlphabetCharSet = str;\n fastTextMeasureCache.clear();\n // container.load(textMeasureModule);\n}\n\n// change fast textMeasure into canvas textMeasure\nexport function restoreMeasureText() {\n textMeasureMode = 'canvas';\n container.load(restoreTextMeasureModule);\n}\n\nconst utilTextMark = new Text({\n ignoreBuf: true\n // autoWrapText: true\n});\n\nexport function measureTextBounds(attribute: ITextGraphicAttribute) {\n utilTextMark.setAttributes(attribute);\n return utilTextMark.AABBBounds;\n}\n"]}
package/es/state/state.js CHANGED
@@ -377,7 +377,7 @@ export class StateManager {
377
377
  this.scroll.verticalBarPos = top, isValid(this.scroll.verticalBarPos) && !isNaN(this.scroll.verticalBarPos) || (this.scroll.verticalBarPos = 0),
378
378
  this.table.scenegraph.setY(-top);
379
379
  const yRatio = top / (totalHeight - this.table.scenegraph.height);
380
- this.table.scenegraph.component.updateVerticalScrollBarPos(yRatio), this.table.fireListeners(TABLE_EVENT_TYPE.SCROLL, {
380
+ this.table.scenegraph.component.updateVerticalScrollBarPos(yRatio), oldVerticalBarPos !== top && (this.table.fireListeners(TABLE_EVENT_TYPE.SCROLL, {
381
381
  scrollTop: this.scroll.verticalBarPos,
382
382
  scrollLeft: this.scroll.horizontalBarPos,
383
383
  scrollHeight: null === (_a = this.table.theme.scrollStyle) || void 0 === _a ? void 0 : _a.width,
@@ -386,10 +386,11 @@ export class StateManager {
386
386
  viewWidth: this.table.tableNoFrameWidth,
387
387
  scrollDirection: "vertical",
388
388
  scrollRatioY: yRatio
389
- }), oldVerticalBarPos !== top && this.checkVerticalScrollBarEnd();
389
+ }), this.checkVerticalScrollBarEnd());
390
390
  }
391
391
  setScrollLeft(left) {
392
392
  var _a, _b;
393
+ this.table.scrollLeft;
393
394
  const totalWidth = this.table.getAllColsWidth();
394
395
  this.table.getFrozenColsWidth();
395
396
  left = Math.max(0, Math.min(left, totalWidth - this.table.scenegraph.width)), (left = Math.ceil(left)) !== this.scroll.horizontalBarPos && this.updateHoverPos(-1, -1);
@@ -397,7 +398,7 @@ export class StateManager {
397
398
  this.scroll.horizontalBarPos = left, isValid(this.scroll.horizontalBarPos) && !isNaN(this.scroll.horizontalBarPos) || (this.scroll.horizontalBarPos = 0),
398
399
  this.table.scenegraph.setX(-left);
399
400
  const xRatio = left / (totalWidth - this.table.scenegraph.width);
400
- this.table.scenegraph.component.updateHorizontalScrollBarPos(xRatio), this.table.fireListeners(TABLE_EVENT_TYPE.SCROLL, {
401
+ this.table.scenegraph.component.updateHorizontalScrollBarPos(xRatio), oldHorizontalBarPos !== left && (this.table.fireListeners(TABLE_EVENT_TYPE.SCROLL, {
401
402
  scrollTop: this.scroll.verticalBarPos,
402
403
  scrollLeft: this.scroll.horizontalBarPos,
403
404
  scrollHeight: null === (_a = this.table.theme.scrollStyle) || void 0 === _a ? void 0 : _a.width,
@@ -406,7 +407,7 @@ export class StateManager {
406
407
  viewWidth: this.table.tableNoFrameWidth,
407
408
  scrollDirection: "horizontal",
408
409
  scrollRatioX: xRatio
409
- }), oldHorizontalBarPos !== left && this.checkHorizontalScrollBarEnd();
410
+ }), this.checkHorizontalScrollBarEnd());
410
411
  }
411
412
  hideVerticalScrollBar() {
412
413
  this.table.scenegraph.component.hideVerticalScrollBar();