@rb-games/core 0.1.2 → 0.1.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.
package/dist/ui/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Align, Flow } from '../chunk-FOZO6TLY.js';
2
2
  import { getNestedValue } from '../chunk-5BLUF2HG.js';
3
+ import { require_lodash } from '../chunk-NAQG7TMS.js';
3
4
  import { __commonJS, __toESM } from '../chunk-G3PMV62Z.js';
4
- import { Rectangle, Color, Texture, Sprite, Graphics, Container, Text, ColorMatrixFilter, Assets } from 'pixi.js';
5
- import { merge } from 'lodash';
5
+ import { Rectangle, Color, Texture, Sprite, Graphics, Container, Text, Assets, ColorMatrixFilter } from 'pixi.js';
6
6
 
7
7
  // ../../node_modules/eventemitter3/index.js
8
8
  var require_eventemitter3 = __commonJS({
@@ -170,34 +170,25 @@ var import_index = __toESM(require_eventemitter3(), 1);
170
170
 
171
171
  // ui/behaviors/ButtonBehavior.ts
172
172
  var ButtonBehavior = class _ButtonBehavior extends import_index.default {
173
- _view = null;
174
- _enabled = true;
175
- _isPressed = false;
176
- _isHolding = false;
177
- _pointerDownOnThis = false;
178
- _isOver = false;
179
- // 👈 isOver added
180
- _holdTimer = null;
181
- _holdInterval = null;
182
- _holdDelay;
183
- _holdIntervalTime;
184
- _cursor = "pointer";
185
- // Toggle properties
186
- _isToggle = false;
187
- _selected = false;
188
- _allowHoldWhenToggle = false;
189
- _holdMode;
190
- // Track if events are bound to current view
191
- _eventsBound = false;
192
- // Static factory methods
193
- static withView(view, options = {}) {
194
- const button = new _ButtonBehavior(options);
195
- button.attachView(view);
196
- return button;
197
- }
198
173
  // Method overloads - now only takes options
199
174
  constructor(options = {}) {
200
175
  super();
176
+ this._view = null;
177
+ this._enabled = true;
178
+ this._isPressed = false;
179
+ this._isHolding = false;
180
+ this._pointerDownOnThis = false;
181
+ this._isOver = false;
182
+ // 👈 isOver added
183
+ this._holdTimer = null;
184
+ this._holdInterval = null;
185
+ this._cursor = "pointer";
186
+ // Toggle properties
187
+ this._isToggle = false;
188
+ this._selected = false;
189
+ this._allowHoldWhenToggle = false;
190
+ // Track if events are bound to current view
191
+ this._eventsBound = false;
201
192
  this._holdDelay = options.holdDelay || 500;
202
193
  this._holdIntervalTime = options.holdInterval || 100;
203
194
  this._holdMode = options.holdMode ?? "none";
@@ -209,6 +200,12 @@ var ButtonBehavior = class _ButtonBehavior extends import_index.default {
209
200
  this.attachView(options.view);
210
201
  }
211
202
  }
203
+ // Static factory methods
204
+ static withView(view, options = {}) {
205
+ const button = new _ButtonBehavior(options);
206
+ button.attachView(view);
207
+ return button;
208
+ }
212
209
  // View Management Methods
213
210
  attachView(view) {
214
211
  if (this._view === view) return;
@@ -553,45 +550,26 @@ var ButtonBehavior = class _ButtonBehavior extends import_index.default {
553
550
  }
554
551
  };
555
552
  var ScrollbarBehavior = class _ScrollbarBehavior extends import_index.default {
556
- _trackView = null;
557
- _knobView = null;
558
- _enabled = true;
559
- _isDragging = false;
560
- _dragStartPosition = 0;
561
- _dragStartValue = 0;
562
- _dragOffset = 0;
563
- // Configuration
564
- _orientation;
565
- _min;
566
- _max;
567
- _value;
568
- _step;
569
- _margin;
570
- // Wheel options
571
- _wheelStep;
572
- _enableWheel;
573
- // Cursor options
574
- _trackCursor;
575
- _knobCursor;
576
- // Track if events are bound
577
- _eventsBound = false;
578
- // Arrow function event handlers for proper cleanup
579
- _onTrackPointerDown = (event) => this._handleTrackPointerDown(event);
580
- _onKnobPointerDown = (event) => this._handleKnobPointerDown(event);
581
- _onKnobPointerUp = (event) => this._handleKnobPointerUp(event);
582
- _onKnobPointerUpOutside = (event) => this._handleKnobPointerUp(event);
583
- _onGlobalPointerMove = (event) => this._handleGlobalPointerMove(event);
584
- _onTrackWheel = (event) => this._handleWheel(event);
585
- _onKnobWheel = (event) => this._handleWheel(event);
586
- // Static factory methods
587
- static withViews(trackView, knobView, options = {}) {
588
- const scrollbar = new _ScrollbarBehavior(options);
589
- scrollbar.attachViews(trackView, knobView);
590
- return scrollbar;
591
- }
592
553
  constructor(options = {}) {
593
554
  var _a, _b;
594
555
  super();
556
+ this._trackView = null;
557
+ this._knobView = null;
558
+ this._enabled = true;
559
+ this._isDragging = false;
560
+ this._dragStartPosition = 0;
561
+ this._dragStartValue = 0;
562
+ this._dragOffset = 0;
563
+ // Track if events are bound
564
+ this._eventsBound = false;
565
+ // Arrow function event handlers for proper cleanup
566
+ this._onTrackPointerDown = (event) => this._handleTrackPointerDown(event);
567
+ this._onKnobPointerDown = (event) => this._handleKnobPointerDown(event);
568
+ this._onKnobPointerUp = (event) => this._handleKnobPointerUp(event);
569
+ this._onKnobPointerUpOutside = (event) => this._handleKnobPointerUp(event);
570
+ this._onGlobalPointerMove = (event) => this._handleGlobalPointerMove(event);
571
+ this._onTrackWheel = (event) => this._handleWheel(event);
572
+ this._onKnobWheel = (event) => this._handleWheel(event);
595
573
  this._orientation = options.orientation || "horizontal";
596
574
  this._margin = {
597
575
  start: ((_a = options.margin) == null ? void 0 : _a.start) || 0,
@@ -606,6 +584,12 @@ var ScrollbarBehavior = class _ScrollbarBehavior extends import_index.default {
606
584
  this._trackCursor = options.trackCursor || "pointer";
607
585
  this._knobCursor = options.knobCursor || "grab";
608
586
  }
587
+ // Static factory methods
588
+ static withViews(trackView, knobView, options = {}) {
589
+ const scrollbar = new _ScrollbarBehavior(options);
590
+ scrollbar.attachViews(trackView, knobView);
591
+ return scrollbar;
592
+ }
609
593
  // View Management Methods
610
594
  attachTrackView(trackView) {
611
595
  if (this._trackView === trackView) return;
@@ -1041,12 +1025,12 @@ var ScrollbarBehavior = class _ScrollbarBehavior extends import_index.default {
1041
1025
 
1042
1026
  // ui/behaviors/InputBehavior.ts
1043
1027
  var InputBehavior = class extends import_index.default {
1044
- _domInput;
1045
- _state;
1046
- _options;
1047
- _view = null;
1048
1028
  constructor(options = {}) {
1049
1029
  super();
1030
+ this._view = null;
1031
+ this._onViewPointerDown = () => {
1032
+ this.activateView();
1033
+ };
1050
1034
  this._options = options;
1051
1035
  const guid = "input-" + Math.random().toString(36).slice(2, 11);
1052
1036
  if (options.multiline) {
@@ -1111,9 +1095,6 @@ var InputBehavior = class extends import_index.default {
1111
1095
  this._view.on("pointerdown", this._onViewPointerDown);
1112
1096
  this.updateDomPosition();
1113
1097
  }
1114
- _onViewPointerDown = () => {
1115
- this.activateView();
1116
- };
1117
1098
  detachView() {
1118
1099
  if (this._view) {
1119
1100
  this._view.off("pointerdown", this._onViewPointerDown);
@@ -1174,33 +1155,46 @@ var InputBehavior = class extends import_index.default {
1174
1155
  this.removeAllListeners();
1175
1156
  }
1176
1157
  };
1158
+
1159
+ // ui/components/ButtonComp.ts
1160
+ var import_lodash2 = __toESM(require_lodash(), 1);
1161
+
1162
+ // ui/components/Skinable.ts
1163
+ var import_lodash = __toESM(require_lodash(), 1);
1177
1164
  var SKIN = Symbol("skinData");
1178
1165
  function Skinable(Base) {
1179
- class SkinableClass extends Base {
1180
- [SKIN] = null;
1181
- // Optional hook implementable by subclasses
1182
- skinApply;
1166
+ var _a, _b;
1167
+ class SkinableClass extends (_b = Base, _a = SKIN, _b) {
1168
+ constructor() {
1169
+ super(...arguments);
1170
+ this[_a] = null;
1171
+ }
1172
+ /**
1173
+ * Prototype hook for subclasses. Must be a method, not a class field:
1174
+ * `skinApply?: (...) => void` is compiled to `this.skinApply = undefined`,
1175
+ * which shadows the subclass override and silently skips skin application.
1176
+ */
1177
+ skinApply(_skin) {
1178
+ }
1183
1179
  setSkinData(data, opts = {}) {
1184
- var _a, _b;
1185
1180
  const { mergeWithExisting = false } = opts;
1186
1181
  if (data === null) {
1187
1182
  this[SKIN] = null;
1188
- (_a = this.skinApply) == null ? void 0 : _a.call(this, null);
1183
+ this.skinApply(null);
1189
1184
  return;
1190
1185
  }
1191
1186
  const current = this[SKIN];
1192
1187
  if (mergeWithExisting && current) {
1193
- this[SKIN] = merge({}, current, data);
1188
+ this[SKIN] = (0, import_lodash.merge)({}, current, data);
1194
1189
  } else {
1195
- this[SKIN] = merge({}, data);
1190
+ this[SKIN] = (0, import_lodash.merge)({}, data);
1196
1191
  }
1197
- (_b = this.skinApply) == null ? void 0 : _b.call(this, this[SKIN] ?? null);
1192
+ this.skinApply(this[SKIN] ?? null);
1198
1193
  }
1199
1194
  getSkinData() {
1200
1195
  return this[SKIN];
1201
1196
  }
1202
- // Subclasses should implement:
1203
- // protected skinApply?(skin: TSkinData | null): void
1197
+ // Subclasses override skinApply(skin) to apply visual properties.
1204
1198
  }
1205
1199
  return SkinableClass;
1206
1200
  }
@@ -2019,38 +2013,36 @@ function resolveSpriteTextAlignment(container, ctx) {
2019
2013
  }
2020
2014
 
2021
2015
  // ui/components/spriteText/SpriteText.ts
2022
- var SpriteText = class _SpriteText extends Skinable(Container) {
2023
- static globalSkin = defineGlobalSkin();
2024
- _glyphs = [];
2025
- _text = "";
2026
- _fonts = [];
2027
- _font = "";
2028
- _bbcodeEnabled = false;
2029
- _richTextExplicit;
2030
- _bbcodeAliases = {};
2031
- _fontStyles = [];
2032
- _runsOverride = null;
2033
- _tint = 16777215;
2034
- _pivotHorizontal = "center";
2035
- _pivotVertical = "middle";
2036
- _lineAlign = "left";
2037
- _letterSpacing = 0;
2038
- _spaceWidth = 0.5;
2039
- _wordWrap = false;
2040
- _wordWrapWidth = 100;
2041
- _breakWord = false;
2042
- _allowLineBreak = false;
2043
- _kerningEnabled = false;
2044
- _kerningMap = /* @__PURE__ */ new Map();
2045
- _glyphAnchor = { x: 0, y: 0 };
2046
- _glyphMap = {};
2047
- _fixedWidth = false;
2048
- _glyphScale = 1;
2049
- _curveEnabled = false;
2050
- _curveControlXPercent = 0.5;
2051
- _curveControlYPercent = -0.5;
2016
+ var _SpriteText = class _SpriteText extends Skinable(Container) {
2052
2017
  constructor(options = {}) {
2053
2018
  super();
2019
+ this._glyphs = [];
2020
+ this._text = "";
2021
+ this._fonts = [];
2022
+ this._font = "";
2023
+ this._bbcodeEnabled = false;
2024
+ this._bbcodeAliases = {};
2025
+ this._fontStyles = [];
2026
+ this._runsOverride = null;
2027
+ this._tint = 16777215;
2028
+ this._pivotHorizontal = "center";
2029
+ this._pivotVertical = "middle";
2030
+ this._lineAlign = "left";
2031
+ this._letterSpacing = 0;
2032
+ this._spaceWidth = 0.5;
2033
+ this._wordWrap = false;
2034
+ this._wordWrapWidth = 100;
2035
+ this._breakWord = false;
2036
+ this._allowLineBreak = false;
2037
+ this._kerningEnabled = false;
2038
+ this._kerningMap = /* @__PURE__ */ new Map();
2039
+ this._glyphAnchor = { x: 0, y: 0 };
2040
+ this._glyphMap = {};
2041
+ this._fixedWidth = false;
2042
+ this._glyphScale = 1;
2043
+ this._curveEnabled = false;
2044
+ this._curveControlXPercent = 0.5;
2045
+ this._curveControlYPercent = -0.5;
2054
2046
  if (options.text !== void 0) {
2055
2047
  this._text = options.text;
2056
2048
  }
@@ -2546,23 +2538,22 @@ var SpriteText = class _SpriteText extends Skinable(Container) {
2546
2538
  }
2547
2539
  }
2548
2540
  };
2541
+ _SpriteText.globalSkin = defineGlobalSkin();
2542
+ var SpriteText = _SpriteText;
2549
2543
 
2550
2544
  // ui/components/ButtonComp.ts
2551
- var ButtonComp = class _ButtonComp extends Skinable(Container) {
2552
- _buttonBehaviors;
2553
- _background;
2554
- _placeHolder;
2555
- _icon;
2556
- _labelText = null;
2557
- _buttonLabel = "";
2558
- _iconTextures = null;
2559
- _currentState = "up";
2560
- _enabled = true;
2561
- _effects = /* @__PURE__ */ new Map();
2562
- _previousState;
2563
- _stateDataCache = /* @__PURE__ */ new Map();
2545
+ var _ButtonComp = class _ButtonComp extends Skinable(Container) {
2564
2546
  constructor(options = {}) {
2565
2547
  super({ label: options.label });
2548
+ this._labelText = null;
2549
+ this._buttonLabel = "";
2550
+ this._iconTextures = null;
2551
+ this._currentState = "up";
2552
+ this._enabled = true;
2553
+ this._effects = /* @__PURE__ */ new Map();
2554
+ this._stateDataCache = /* @__PURE__ */ new Map();
2555
+ this._lastLayout = null;
2556
+ this._lastPlaceHolderLayout = null;
2566
2557
  this.eventMode = "static";
2567
2558
  this._background = new Graphics();
2568
2559
  this._placeHolder = new Container({ label: "placeHolder" });
@@ -2593,12 +2584,6 @@ var ButtonComp = class _ButtonComp extends Skinable(Container) {
2593
2584
  this.updateVisualState();
2594
2585
  this.notifyEffectsStateChange();
2595
2586
  }
2596
- _lastLayout = null;
2597
- _lastPlaceHolderLayout = null;
2598
- _lastBackgroundConfig;
2599
- _lastIconConfig;
2600
- _lastTextConfig;
2601
- _lastZIndex;
2602
2587
  updateVisualState() {
2603
2588
  const currentStateData = this.getCurrentStateData();
2604
2589
  if (!currentStateData) return;
@@ -2658,13 +2643,13 @@ var ButtonComp = class _ButtonComp extends Skinable(Container) {
2658
2643
  base = stateData.base;
2659
2644
  }
2660
2645
  if (stateData.background !== void 0) {
2661
- background = background ? merge({}, background, stateData.background) : stateData.background;
2646
+ background = background ? (0, import_lodash2.merge)({}, background, stateData.background) : stateData.background;
2662
2647
  }
2663
2648
  if (stateData.textConfig !== void 0) {
2664
- textConfig = textConfig ? merge({}, textConfig, stateData.textConfig) : stateData.textConfig;
2649
+ textConfig = textConfig ? (0, import_lodash2.merge)({}, textConfig, stateData.textConfig) : stateData.textConfig;
2665
2650
  }
2666
2651
  if (stateData.icon !== void 0) {
2667
- icon = icon ? merge({}, icon, stateData.icon) : stateData.icon;
2652
+ icon = icon ? (0, import_lodash2.merge)({}, icon, stateData.icon) : stateData.icon;
2668
2653
  }
2669
2654
  if (stateData.layout !== void 0) {
2670
2655
  layout = stateData.layout;
@@ -2680,19 +2665,6 @@ var ButtonComp = class _ButtonComp extends Skinable(Container) {
2680
2665
  this._stateDataCache.set(state, { base, background, textConfig, icon, layout, placeHolderLayout, zIndex });
2681
2666
  }
2682
2667
  }
2683
- static stateFallbackChain = {
2684
- // Normal flow: up -> over -> down
2685
- up: ["up"],
2686
- over: ["up", "over"],
2687
- down: ["up", "over", "down"],
2688
- // Selected flow: selected_up -> selected_over -> selected_down
2689
- selected_up: ["up", "selected_up"],
2690
- selected_over: ["up", "selected_up", "selected_over"],
2691
- selected_down: ["up", "selected_up", "selected_over", "selected_down"],
2692
- // Disabled states
2693
- disabled: ["up", "disabled"],
2694
- selected_disabled: ["up", "selected_up", "selected_disabled"]
2695
- };
2696
2668
  getCurrentStateData() {
2697
2669
  return this._stateDataCache.get(this._currentState) ?? null;
2698
2670
  }
@@ -2939,15 +2911,28 @@ var ButtonComp = class _ButtonComp extends Skinable(Container) {
2939
2911
  return this._buttonBehaviors;
2940
2912
  }
2941
2913
  };
2914
+ _ButtonComp.stateFallbackChain = {
2915
+ // Normal flow: up -> over -> down
2916
+ up: ["up"],
2917
+ over: ["up", "over"],
2918
+ down: ["up", "over", "down"],
2919
+ // Selected flow: selected_up -> selected_over -> selected_down
2920
+ selected_up: ["up", "selected_up"],
2921
+ selected_over: ["up", "selected_up", "selected_over"],
2922
+ selected_down: ["up", "selected_up", "selected_over", "selected_down"],
2923
+ // Disabled states
2924
+ disabled: ["up", "disabled"],
2925
+ selected_disabled: ["up", "selected_up", "selected_disabled"]
2926
+ };
2927
+ var ButtonComp = _ButtonComp;
2928
+
2929
+ // ui/components/InputComp.ts
2930
+ var import_lodash3 = __toESM(require_lodash(), 1);
2942
2931
  var InputComp = class extends Skinable(Container) {
2943
- _background;
2944
- _textMask;
2945
- _textLabel;
2946
- _behavior;
2947
- _currentState = "up";
2948
- _isFocused = false;
2949
2932
  constructor(options = {}) {
2950
2933
  super();
2934
+ this._currentState = "up";
2935
+ this._isFocused = false;
2951
2936
  this.eventMode = "static";
2952
2937
  this._background = new Graphics();
2953
2938
  this._textLabel = new Text({
@@ -3022,7 +3007,7 @@ var InputComp = class extends Skinable(Container) {
3022
3007
  if (!skin) return null;
3023
3008
  const baseData = skin.up;
3024
3009
  const stateData = skin[this._currentState] || {};
3025
- return merge({}, baseData, stateData);
3010
+ return (0, import_lodash3.merge)({}, baseData, stateData);
3026
3011
  }
3027
3012
  updateBackground(stateData) {
3028
3013
  const bg = stateData.background;
@@ -3076,16 +3061,15 @@ var InputComp = class extends Skinable(Container) {
3076
3061
  super.destroy();
3077
3062
  }
3078
3063
  };
3064
+
3065
+ // ui/components/SliderComp.ts
3066
+ var import_lodash4 = __toESM(require_lodash(), 1);
3079
3067
  var SliderComp = class extends Skinable(Container) {
3080
- _slider;
3081
- _trackContainer;
3082
- _progressContainer;
3083
- _knobContainer;
3084
- _currentState = "up";
3085
- _progressGraphics = null;
3086
- _progressConfig = null;
3087
3068
  constructor(options = {}) {
3088
3069
  super();
3070
+ this._currentState = "up";
3071
+ this._progressGraphics = null;
3072
+ this._progressConfig = null;
3089
3073
  this.layout = true;
3090
3074
  this.eventMode = "passive";
3091
3075
  this._trackContainer = new Container();
@@ -3155,7 +3139,7 @@ var SliderComp = class extends Skinable(Container) {
3155
3139
  if (!skin) return null;
3156
3140
  const baseData = skin.up;
3157
3141
  const stateData = skin[this._currentState] || {};
3158
- return merge({}, baseData, stateData);
3142
+ return (0, import_lodash4.merge)({}, baseData, stateData);
3159
3143
  }
3160
3144
  updateTrack(stateData) {
3161
3145
  var _a, _b;
@@ -3540,24 +3524,22 @@ function createFlatButtonEffect(options) {
3540
3524
  }
3541
3525
  });
3542
3526
  }
3527
+
3528
+ // ui/components/StepperComp.ts
3529
+ var import_lodash5 = __toESM(require_lodash(), 1);
3543
3530
  var StepperComp = class extends Skinable(Container) {
3544
- _minusButton;
3545
- _plusButton;
3546
- _displayContainer;
3547
- _displayBackground;
3548
- _displayText;
3549
- _value = 0;
3550
- _min = 0;
3551
- _max = 100;
3552
- _step = 1;
3553
- _formatFunction = (val) => val.toString();
3554
- _enabled = true;
3555
- _currentState = "up";
3556
- _holdEnabled = true;
3557
- _holdDelay = 500;
3558
- _holdInterval = 100;
3559
3531
  constructor(options = {}) {
3560
3532
  super();
3533
+ this._value = 0;
3534
+ this._min = 0;
3535
+ this._max = 100;
3536
+ this._step = 1;
3537
+ this._formatFunction = (val) => val.toString();
3538
+ this._enabled = true;
3539
+ this._currentState = "up";
3540
+ this._holdEnabled = true;
3541
+ this._holdDelay = 500;
3542
+ this._holdInterval = 100;
3561
3543
  this.layout = true;
3562
3544
  this.eventMode = "passive";
3563
3545
  this._min = options.min ?? 0;
@@ -3664,7 +3646,7 @@ var StepperComp = class extends Skinable(Container) {
3664
3646
  if (!skin) return null;
3665
3647
  const baseData = skin.up;
3666
3648
  const stateData = skin[this._currentState] || {};
3667
- return merge({}, baseData, stateData);
3649
+ return (0, import_lodash5.merge)({}, baseData, stateData);
3668
3650
  }
3669
3651
  updateDisplay(stateData) {
3670
3652
  const displayConfig = stateData.display;
@@ -3831,13 +3813,14 @@ var StepperComp = class extends Skinable(Container) {
3831
3813
  super.destroy();
3832
3814
  }
3833
3815
  };
3816
+
3817
+ // ui/components/LabelBox.ts
3818
+ var import_lodash6 = __toESM(require_lodash(), 1);
3834
3819
  var LabelBox = class extends Skinable(Container) {
3835
- _background;
3836
- _text;
3837
- _currentState = "default";
3838
- _stateDataCache = /* @__PURE__ */ new Map();
3839
3820
  constructor(options = {}) {
3840
3821
  super({ label: options.label });
3822
+ this._currentState = "default";
3823
+ this._stateDataCache = /* @__PURE__ */ new Map();
3841
3824
  this.eventMode = "passive";
3842
3825
  this._background = new Graphics();
3843
3826
  this._text = new Text({
@@ -3875,7 +3858,7 @@ var LabelBox = class extends Skinable(Container) {
3875
3858
  if (!skin) return {};
3876
3859
  const baseState = skin.default;
3877
3860
  const stateOverride = skin[state];
3878
- const merged = stateOverride ? merge({}, baseState, stateOverride) : baseState;
3861
+ const merged = stateOverride ? (0, import_lodash6.merge)({}, baseState, stateOverride) : baseState;
3879
3862
  this._stateDataCache.set(state, merged);
3880
3863
  return merged;
3881
3864
  }
@@ -3932,27 +3915,13 @@ var LabelBox = class extends Skinable(Container) {
3932
3915
  }
3933
3916
  };
3934
3917
  var ListTableComp = class extends Skinable(Container) {
3935
- _columns;
3936
- _tableWidth;
3937
- _tableHeight;
3938
- _rowHeight;
3939
- _headerHeight;
3940
- _rowGap;
3941
- _cellGap;
3942
- _showHeader;
3943
- _showScrollbar;
3944
- _headerContainer;
3945
- _headerCells = [];
3946
- _listContainer;
3947
- _listContent;
3948
- _listMask;
3949
- _scrollbar;
3950
- _data = [];
3951
- _rowViews = [];
3952
- _hoveredRowIndex = -1;
3953
- _scrollValue = 0;
3954
3918
  constructor(options) {
3955
3919
  super();
3920
+ this._headerCells = [];
3921
+ this._data = [];
3922
+ this._rowViews = [];
3923
+ this._hoveredRowIndex = -1;
3924
+ this._scrollValue = 0;
3956
3925
  this.eventMode = "static";
3957
3926
  this._columns = options.columns;
3958
3927
  this._tableWidth = options.tableWidth;