@visactor/vtable 1.26.1-alpha.0 → 1.26.1

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 (69) hide show
  1. package/cjs/body-helper/style.js +1 -2
  2. package/cjs/core/BaseTable.js +3 -2
  3. package/cjs/core/BaseTable.js.map +1 -1
  4. package/cjs/dataset/DataStatistics.js +1 -2
  5. package/cjs/edit/edit-manager.js +1 -0
  6. package/cjs/event/listener/container-dom.js +39 -26
  7. package/cjs/event/listener/container-dom.js.map +1 -1
  8. package/cjs/event/listener/table-group.js +1 -0
  9. package/cjs/event/listener/table-group.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/layout/index.js +1 -1
  14. package/cjs/layout/layout-helper.js +1 -1
  15. package/cjs/layout/pivot-header-layout.js +1 -1
  16. package/cjs/layout/row-height-map.js +1 -1
  17. package/cjs/layout/simple-header-layout.js +1 -1
  18. package/cjs/layout/tree-helper.js +1 -1
  19. package/cjs/plugins/index.js +1 -1
  20. package/cjs/plugins/interface.js +1 -1
  21. package/cjs/plugins/invert-highlight.js +1 -1
  22. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  23. package/cjs/plugins/plugin-manager.js +1 -1
  24. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +2 -0
  25. package/cjs/scenegraph/group-creater/progress/proxy.js +18 -2
  26. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  27. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -1
  28. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  29. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +2 -1
  30. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  31. package/cjs/scenegraph/scenegraph.js +8 -4
  32. package/cjs/scenegraph/scenegraph.js.map +1 -1
  33. package/cjs/vrender.js.map +1 -1
  34. package/dist/vtable.js +87 -32
  35. package/dist/vtable.min.js +1 -1
  36. package/es/body-helper/style.js +1 -2
  37. package/es/core/BaseTable.js +3 -2
  38. package/es/core/BaseTable.js.map +1 -1
  39. package/es/dataset/DataStatistics.js +1 -2
  40. package/es/edit/edit-manager.js +2 -1
  41. package/es/event/listener/container-dom.js +39 -26
  42. package/es/event/listener/container-dom.js.map +1 -1
  43. package/es/event/listener/table-group.js +1 -0
  44. package/es/event/listener/table-group.js.map +1 -1
  45. package/es/index.d.ts +1 -1
  46. package/es/index.js +1 -1
  47. package/es/index.js.map +1 -1
  48. package/es/layout/index.js +1 -1
  49. package/es/layout/layout-helper.js +1 -1
  50. package/es/layout/pivot-header-layout.js +1 -1
  51. package/es/layout/row-height-map.js +1 -1
  52. package/es/layout/simple-header-layout.js +1 -1
  53. package/es/layout/tree-helper.js +1 -1
  54. package/es/plugins/index.js +1 -1
  55. package/es/plugins/interface.js +1 -1
  56. package/es/plugins/invert-highlight.js +1 -1
  57. package/es/plugins/list-tree-stick-cell.js +1 -1
  58. package/es/plugins/plugin-manager.js +1 -1
  59. package/es/scenegraph/group-creater/progress/proxy.d.ts +2 -0
  60. package/es/scenegraph/group-creater/progress/proxy.js +18 -2
  61. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  62. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -1
  63. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  64. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +2 -1
  65. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  66. package/es/scenegraph/scenegraph.js +8 -4
  67. package/es/scenegraph/scenegraph.js.map +1 -1
  68. package/es/vrender.js.map +1 -1
  69. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qEAA0D;AAC1D,kCAAgC;AAChC,yDAAwH;AACxH,yDAqBgC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,SAAgB,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,IAAA,+BAAgB,GAAE,CAAC;IAEnB,IAAI,IAAA,2BAAY,GAAE,EAAE;QAClB,IAAA,6BAAc,EAAC,wBAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,IAAA,wBAAS,GAAE,EAAE;QACtB,IAAA,0BAAW,EAAC,wBAAS,CAAC,CAAC;KACxB;IACD,IAAA,0BAAW,GAAE,CAAC;IAGd,IAAA,6BAAc,GAAE,CAAC;IAEjB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IAIf,IAAA,2BAAY,GAAE,CAAC;IAEf,IAAA,+BAAgB,GAAE,CAAC;IACnB,IAAA,iCAAkB,GAAE,CAAC;IACrB,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,uCAAwB,GAAE,CAAC;IAE3B,IAAA,+BAAU,GAAE,CAAC;IAEb,IAAA,uCAAwB,GAAE,CAAC;AAC7B,CAAC;AAnCD,gDAmCC;AAOD,yDAAuC;AACvC,yDAAuC;AACvC,+DAA6C;AAC7C,4DAA0C","file":"vrender.js","sourcesContent":["import { loadPoptip } from '@visactor/vrender-components';\nimport '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule, registerFlexLayoutPlugin } from '@visactor/vrender-core';\nimport {\n loadBrowserEnv,\n loadNodeEnv,\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"1.26.1-alpha.0\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n // registerArc3d();\n // registerArea();\n registerCircle();\n // registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n // registerPath();\n // registerPolygon();\n // registerPyramid3d();\n registerRect();\n // registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerFlexLayoutPlugin();\n // registerWrapText();\n loadPoptip();\n\n registerFlexLayoutPlugin();\n}\n\nexport type { Direction } from '@visactor/vrender-core';\nexport type { State } from '@visactor/vrender-components';\n// export { GroupFadeIn } from '@visactor/vrender-core';\n// export { GroupFadeOut } from '@visactor/vrender-core';\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\nexport * from '@visactor/vrender-components';\nexport * from '@visactor/vrender-animate';\n"]}
1
+ {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qEAA0D;AAC1D,kCAAgC;AAChC,yDAAwH;AACxH,yDAqBgC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,SAAgB,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,IAAA,+BAAgB,GAAE,CAAC;IAEnB,IAAI,IAAA,2BAAY,GAAE,EAAE;QAClB,IAAA,6BAAc,EAAC,wBAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,IAAA,wBAAS,GAAE,EAAE;QACtB,IAAA,0BAAW,EAAC,wBAAS,CAAC,CAAC;KACxB;IACD,IAAA,0BAAW,GAAE,CAAC;IAGd,IAAA,6BAAc,GAAE,CAAC;IAEjB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IAIf,IAAA,2BAAY,GAAE,CAAC;IAEf,IAAA,+BAAgB,GAAE,CAAC;IACnB,IAAA,iCAAkB,GAAE,CAAC;IACrB,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,uCAAwB,GAAE,CAAC;IAE3B,IAAA,+BAAU,GAAE,CAAC;IAEb,IAAA,uCAAwB,GAAE,CAAC;AAC7B,CAAC;AAnCD,gDAmCC;AAOD,yDAAuC;AACvC,yDAAuC;AACvC,+DAA6C;AAC7C,4DAA0C","file":"vrender.js","sourcesContent":["import { loadPoptip } from '@visactor/vrender-components';\nimport '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule, registerFlexLayoutPlugin } from '@visactor/vrender-core';\nimport {\n loadBrowserEnv,\n loadNodeEnv,\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"1.26.1\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n // registerArc3d();\n // registerArea();\n registerCircle();\n // registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n // registerPath();\n // registerPolygon();\n // registerPyramid3d();\n registerRect();\n // registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerFlexLayoutPlugin();\n // registerWrapText();\n loadPoptip();\n\n registerFlexLayoutPlugin();\n}\n\nexport type { Direction } from '@visactor/vrender-core';\nexport type { State } from '@visactor/vrender-components';\n// export { GroupFadeIn } from '@visactor/vrender-core';\n// export { GroupFadeOut } from '@visactor/vrender-core';\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\nexport * from '@visactor/vrender-components';\nexport * from '@visactor/vrender-animate';\n"]}
package/dist/vtable.js CHANGED
@@ -54387,6 +54387,9 @@
54387
54387
 
54388
54388
  async function dynamicSetX(x, screenLeft, isEnd, proxy) {
54389
54389
  if (!screenLeft) {
54390
+ proxy.updateDeltaX(x);
54391
+ proxy.table.scenegraph.setBodyAndColHeaderX(-x + proxy.deltaX);
54392
+ proxy.table.scenegraph.updateNextFrame();
54390
54393
  return;
54391
54394
  }
54392
54395
  const screenLeftCol = screenLeft.col;
@@ -54697,6 +54700,9 @@
54697
54700
 
54698
54701
  async function dynamicSetY(y, screenTop, isEnd, proxy) {
54699
54702
  if (!screenTop) {
54703
+ proxy.updateDeltaY(y);
54704
+ proxy.updateBody(y - proxy.deltaY);
54705
+ proxy.table.scenegraph.updateNextFrame();
54700
54706
  return;
54701
54707
  }
54702
54708
  const screenTopRow = screenTop.row;
@@ -55611,7 +55617,7 @@
55611
55617
  async setY(y, isEnd = false) {
55612
55618
  const yLimitTop = this.table.getRowsHeight(this.bodyTopRow, this.bodyTopRow + (this.rowEnd - this.rowStart + 1)) / 2;
55613
55619
  const yLimitBottom = this.table.getAllRowsHeight() - yLimitTop;
55614
- const screenTop = this.table.getTargetRowAt(y + this.table.scenegraph.colHeaderGroup.attribute.height);
55620
+ const screenTop = this.resolveTargetRowInfo(y + this.table.scenegraph.colHeaderGroup.attribute.height);
55615
55621
  if (screenTop) {
55616
55622
  this.screenTopRow = screenTop.row;
55617
55623
  }
@@ -55639,7 +55645,7 @@
55639
55645
  async setX(x, isEnd = false) {
55640
55646
  const xLimitLeft = this.table.getColsWidth(this.bodyLeftCol, this.bodyLeftCol + (this.colEnd - this.colStart + 1)) / 2;
55641
55647
  const xLimitRight = this.table.getAllColsWidth() - xLimitLeft;
55642
- const screenLeft = this.table.getTargetColAt(x + this.table.scenegraph.rowHeaderGroup.attribute.width + (this.table.getFrozenColsOffset?.() ?? 0));
55648
+ const screenLeft = this.resolveTargetColInfo(x + this.table.scenegraph.rowHeaderGroup.attribute.width + (this.table.getFrozenColsOffset?.() ?? 0));
55643
55649
  if (screenLeft) {
55644
55650
  this.screenLeftCol = screenLeft.col;
55645
55651
  }
@@ -55667,6 +55673,26 @@
55667
55673
  async dynamicSetX(x, screenLeft, isEnd = false) {
55668
55674
  dynamicSetX(x, screenLeft, isEnd, this);
55669
55675
  }
55676
+ resolveTargetColInfo(absoluteX) {
55677
+ const offsets = [0, -1, 1, -2, 2];
55678
+ for (let i = 0; i < offsets.length; i++) {
55679
+ const screenLeft = this.table.getTargetColAt(absoluteX + offsets[i]);
55680
+ if (screenLeft) {
55681
+ return screenLeft;
55682
+ }
55683
+ }
55684
+ return null;
55685
+ }
55686
+ resolveTargetRowInfo(absoluteY) {
55687
+ const offsets = [0, -1, 1, -2, 2];
55688
+ for (let i = 0; i < offsets.length; i++) {
55689
+ const screenTop = this.table.getTargetRowAt(absoluteY + offsets[i]);
55690
+ if (screenTop) {
55691
+ return screenTop;
55692
+ }
55693
+ }
55694
+ return null;
55695
+ }
55670
55696
  updateBody(y) {
55671
55697
  this.table.scenegraph.setBodyAndRowHeaderY(-y);
55672
55698
  }
@@ -59791,8 +59817,13 @@
59791
59817
  this.table.scenegraph.proxy.setY(-y, isEnd);
59792
59818
  }
59793
59819
  setBodyAndRowHeaderY(y) {
59794
- const firstBodyCell = this.bodyGroup.firstChild?.firstChild ?? this.rowHeaderGroup.firstChild?.firstChild;
59795
- const lastBodyCell = this.bodyGroup.firstChild?.lastChild ?? this.rowHeaderGroup.firstChild?.lastChild;
59820
+ const firstBodyColGroup = this.bodyGroup.firstChild;
59821
+ const firstRowHeaderColGroup = this.rowHeaderGroup.firstChild;
59822
+ const firstBodyCell = firstBodyColGroup?.firstChild ?? firstRowHeaderColGroup?.firstChild;
59823
+ let lastBodyCell = (firstBodyColGroup?.lastChild ?? firstRowHeaderColGroup?.lastChild);
59824
+ if (lastBodyCell && lastBodyCell.type !== 'group') {
59825
+ lastBodyCell = lastBodyCell._prev;
59826
+ }
59796
59827
  if (y === 0 &&
59797
59828
  firstBodyCell &&
59798
59829
  firstBodyCell.row === this.table.frozenRowCount &&
@@ -59836,7 +59867,10 @@
59836
59867
  }
59837
59868
  setBodyAndColHeaderX(x) {
59838
59869
  const firstBodyCol = this.bodyGroup.firstChild;
59839
- const lastBodyCol = this.bodyGroup.lastChild;
59870
+ let lastBodyCol = this.bodyGroup.lastChild;
59871
+ if (lastBodyCol && lastBodyCol.type !== 'group') {
59872
+ lastBodyCol = lastBodyCol._prev;
59873
+ }
59840
59874
  if (x === 0 && firstBodyCol && firstBodyCol.col === this.table.frozenColCount && firstBodyCol.attribute.x + x < 0) {
59841
59875
  x = -firstBodyCol.attribute.x;
59842
59876
  }
@@ -65629,6 +65663,9 @@
65629
65663
  });
65630
65664
  }
65631
65665
  function dblclickHandler(e, table) {
65666
+ if (typeof e.button === 'number' && e.button !== 0) {
65667
+ return;
65668
+ }
65632
65669
  const eventArgsSet = getCellEventArgsSetWithTable(e, table);
65633
65670
  let col = -1;
65634
65671
  let row = -1;
@@ -65990,6 +66027,18 @@
65990
66027
  const table = eventManager.table;
65991
66028
  const stateManager = table.stateManager;
65992
66029
  const handler = table.internalProps.handler;
66030
+ const focusEditingInput = () => {
66031
+ table.editorManager?.editingEditor?.getInputElement?.()?.focus?.();
66032
+ };
66033
+ const afterCompleteEdit = (completeEditResult, onSuccess) => {
66034
+ getPromiseValue(completeEditResult, (isCompleteEdit) => {
66035
+ if (isCompleteEdit === false) {
66036
+ focusEditingInput();
66037
+ return;
66038
+ }
66039
+ onSuccess();
66040
+ });
66041
+ };
65993
66042
  handler.on(table.getElement(), 'blur', (e) => {
65994
66043
  const relatedTarget = e.relatedTarget;
65995
66044
  if (relatedTarget) {
@@ -66092,15 +66141,17 @@
66092
66141
  return;
66093
66142
  }
66094
66143
  const isEditingCell = !!table.editorManager?.editingEditor;
66095
- table.editorManager?.completeEdit();
66096
- table.getElement().focus();
66097
- const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;
66098
- table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);
66099
- if ((table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) && isEditingCell) {
66100
- if (table.getEditor(targetCol, targetRow)) {
66101
- table.editorManager?.startEditCell(targetCol, targetRow);
66144
+ const completeEditResult = table.editorManager?.completeEdit();
66145
+ afterCompleteEdit(completeEditResult, () => {
66146
+ table.getElement().focus();
66147
+ const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;
66148
+ table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);
66149
+ if ((table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) && isEditingCell) {
66150
+ if (table.getEditor(targetCol, targetRow)) {
66151
+ table.editorManager?.startEditCell(targetCol, targetRow);
66152
+ }
66102
66153
  }
66103
- }
66154
+ });
66104
66155
  }
66105
66156
  else if (e.key === 'Escape') {
66106
66157
  table.editorManager?.cancelEdit();
@@ -66109,17 +66160,19 @@
66109
66160
  else if (e.key === 'Enter') {
66110
66161
  if (table.editorManager?.editingEditor) {
66111
66162
  handleKeydownListener(e);
66112
- table.editorManager?.completeEdit();
66113
- table.getElement().focus();
66114
- if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {
66115
- const targetCol = stateManager.select.cellPos.col;
66116
- const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));
66117
- if (isCellDisableSelect(table, targetCol, targetRow)) {
66118
- return;
66163
+ const completeEditResult = table.editorManager?.completeEdit();
66164
+ afterCompleteEdit(completeEditResult, () => {
66165
+ table.getElement().focus();
66166
+ if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {
66167
+ const targetCol = stateManager.select.cellPos.col;
66168
+ const targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));
66169
+ if (isCellDisableSelect(table, targetCol, targetRow)) {
66170
+ return;
66171
+ }
66172
+ const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;
66173
+ table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);
66119
66174
  }
66120
- const enableShiftSelectMode = table.options.keyboardOptions?.shiftMultiSelect ?? true;
66121
- table.selectCell(targetCol, targetRow, e.shiftKey && enableShiftSelectMode);
66122
- }
66175
+ });
66123
66176
  return;
66124
66177
  }
66125
66178
  if (table.options.keyboardOptions?.moveFocusCellOnEnter === true) {
@@ -66167,14 +66220,16 @@
66167
66220
  return;
66168
66221
  }
66169
66222
  const isEditingCell = !!table.editorManager?.editingEditor;
66170
- table.editorManager?.completeEdit();
66171
- table.getElement().focus();
66172
- table.selectCell(targetCol, targetRow);
66173
- if (isEditingCell) {
66174
- if (table.getEditor(targetCol, targetRow)) {
66175
- table.editorManager?.startEditCell(targetCol, targetRow);
66223
+ const completeEditResult = table.editorManager?.completeEdit();
66224
+ afterCompleteEdit(completeEditResult, () => {
66225
+ table.getElement().focus();
66226
+ table.selectCell(targetCol, targetRow);
66227
+ if (isEditingCell) {
66228
+ if (table.getEditor(targetCol, targetRow)) {
66229
+ table.editorManager?.startEditCell(targetCol, targetRow);
66230
+ }
66176
66231
  }
66177
- }
66232
+ });
66178
66233
  }
66179
66234
  }
66180
66235
  }
@@ -71962,7 +72017,7 @@
71962
72017
  return TABLE_EVENT_TYPE;
71963
72018
  }
71964
72019
  options;
71965
- version = "1.26.1-alpha.0";
72020
+ version = "1.26.1";
71966
72021
  pagination;
71967
72022
  id = `VTable${Date.now()}`;
71968
72023
  headerStyleCache;
@@ -96535,7 +96590,7 @@
96535
96590
  }
96536
96591
 
96537
96592
  registerForVrender();
96538
- const version = "1.26.1-alpha.0";
96593
+ const version = "1.26.1";
96539
96594
  function getIcons() {
96540
96595
  return get$2();
96541
96596
  }