@galacean/engine-ui 1.4.7 → 1.4.9

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/browser.js CHANGED
@@ -2880,7 +2880,9 @@
2880
2880
  exports.UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
2881
2881
  _inherits(UIPointerEventEmitter, PointerEventEmitter1);
2882
2882
  function UIPointerEventEmitter() {
2883
- return PointerEventEmitter1.apply(this, arguments) || this;
2883
+ var _this;
2884
+ _this = PointerEventEmitter1.apply(this, arguments) || this, _this._enteredPath = [], _this._pressedPath = [], _this._draggedPath = [];
2885
+ return _this;
2884
2886
  }
2885
2887
  var _proto = UIPointerEventEmitter.prototype;
2886
2888
  _proto._init = function _init() {
@@ -2949,89 +2951,86 @@
2949
2951
  }
2950
2952
  };
2951
2953
  _proto.processDrag = function processDrag(pointer) {
2952
- if (this._draggedElement) {
2953
- this._bubble(this._composedPath(this._draggedElement, UIPointerEventEmitter._path0), pointer, this._fireDrag);
2954
+ var draggedPath = this._draggedPath;
2955
+ if (draggedPath.length > 0) {
2956
+ this._bubble(draggedPath, pointer, this._fireDrag);
2957
+ draggedPath.length = 0;
2954
2958
  }
2955
2959
  };
2956
2960
  _proto.processDown = function processDown(pointer) {
2957
- var element = this._pressedElement = this._draggedElement = this._enteredElement;
2958
- if (element) {
2959
- var path = this._composedPath(element, UIPointerEventEmitter._path0);
2960
- this._bubble(path, pointer, this._fireDown);
2961
- this._bubble(path, pointer, this._fireBeginDrag);
2961
+ var enteredPath = this._enteredPath;
2962
+ var pressedPath = this._pressedPath;
2963
+ var draggedPath = this._draggedPath;
2964
+ var length = draggedPath.length = pressedPath.length = enteredPath.length;
2965
+ if (length > 0) {
2966
+ for(var i = 0; i < length; i++){
2967
+ pressedPath[i] = draggedPath[i] = enteredPath[i];
2968
+ }
2969
+ this._bubble(pressedPath, pointer, this._fireDown);
2970
+ this._bubble(draggedPath, pointer, this._fireBeginDrag);
2962
2971
  }
2963
2972
  };
2964
2973
  _proto.processUp = function processUp(pointer) {
2965
- var liftedPath = UIPointerEventEmitter._path0;
2966
- var enteredElement = this._enteredElement;
2967
- if (enteredElement) {
2968
- this._composedPath(enteredElement, liftedPath);
2969
- this._bubble(liftedPath, pointer, this._fireUp);
2970
- if (this._pressedElement) {
2971
- var pressedPath = this._composedPath(this._pressedElement, UIPointerEventEmitter._path1);
2972
- var enterLength = liftedPath.length;
2973
- var pressLength = pressedPath.length;
2974
- var minLength = Math.min(enterLength, pressLength);
2975
- var i = 0;
2976
- for(; i < minLength; i++){
2977
- if (liftedPath[enterLength - 1 - i] !== pressedPath[pressLength - 1 - i]) {
2978
- break;
2974
+ var enteredPath = this._enteredPath;
2975
+ var pressedPath = this._pressedPath;
2976
+ if (enteredPath.length > 0) {
2977
+ this._bubble(enteredPath, pointer, this._fireUp);
2978
+ if (pressedPath.length > 0) {
2979
+ var common = UIPointerEventEmitter._tempArray0;
2980
+ if (this._findCommonInPath(enteredPath, pressedPath, common)) {
2981
+ var eventData = this._createEventData(pointer);
2982
+ for(var i = 0, n = common.length; i < n; i++){
2983
+ this._fireClick(common[i], eventData);
2979
2984
  }
2985
+ common.length = 0;
2980
2986
  }
2981
- var targetIndex = enterLength - i;
2982
- var eventData = this._createEventData(pointer);
2983
- for(var j = targetIndex; j < enterLength; j++){
2984
- this._fireClick(liftedPath[j], eventData);
2985
- }
2986
- this._pressedElement = null;
2987
2987
  }
2988
2988
  }
2989
- if (this._draggedElement) {
2990
- this._bubble(this._composedPath(this._draggedElement, UIPointerEventEmitter._path1), pointer, this._fireEndDrag);
2991
- this._draggedElement = null;
2989
+ pressedPath.length = 0;
2990
+ var draggedPath = this._draggedPath;
2991
+ if (draggedPath.length > 0) {
2992
+ this._bubble(draggedPath, pointer, this._fireEndDrag);
2993
+ draggedPath.length = 0;
2992
2994
  }
2993
- if (enteredElement) {
2994
- this._bubble(liftedPath, pointer, this._fireDrop);
2995
+ if (enteredPath.length > 0) {
2996
+ this._bubble(enteredPath, pointer, this._fireDrop);
2995
2997
  }
2996
2998
  };
2997
2999
  _proto.processLeave = function processLeave(pointer) {
2998
- var path = UIPointerEventEmitter._path0;
2999
- if (this._enteredElement) {
3000
- this._bubble(this._composedPath(this._enteredElement, path), pointer, this._fireExit);
3001
- this._enteredElement = null;
3000
+ var enteredPath = this._enteredPath;
3001
+ if (enteredPath.length > 0) {
3002
+ this._bubble(enteredPath, pointer, this._fireExit);
3003
+ enteredPath.length = 0;
3002
3004
  }
3003
- if (this._draggedElement) {
3004
- this._bubble(this._composedPath(this._draggedElement, path), pointer, this._fireEndDrag);
3005
- this._draggedElement = null;
3005
+ var draggedPath = this._draggedPath;
3006
+ if (draggedPath.length > 0) {
3007
+ this._bubble(draggedPath, pointer, this._fireEndDrag);
3008
+ draggedPath.length = 0;
3006
3009
  }
3007
- this._pressedElement = null;
3010
+ this._pressedPath.length = 0;
3008
3011
  };
3009
3012
  _proto.dispose = function dispose() {
3010
- this._enteredElement = this._pressedElement = this._draggedElement = null;
3013
+ this._enteredPath.length = this._pressedPath.length = this._draggedPath.length = 0;
3011
3014
  };
3012
3015
  _proto._updateRaycast = function _updateRaycast(element, pointer) {
3013
3016
  if (pointer === void 0) pointer = null;
3014
- var enteredElement = this._enteredElement;
3015
- if (element !== enteredElement) {
3016
- var prePath = this._composedPath(enteredElement, UIPointerEventEmitter._path0);
3017
- var curPath = this._composedPath(element, UIPointerEventEmitter._path1);
3018
- var preLength = prePath.length;
3019
- var curLength = curPath.length;
3020
- var minLength = Math.min(preLength, curLength);
3021
- var i = 0;
3022
- for(; i < minLength; i++){
3023
- if (prePath[preLength - i - 1] !== curPath[curLength - i - 1]) {
3024
- break;
3025
- }
3026
- }
3017
+ var enteredPath = this._enteredPath;
3018
+ var curPath = this._composedPath(element, UIPointerEventEmitter._path);
3019
+ var add = UIPointerEventEmitter._tempArray0;
3020
+ var del = UIPointerEventEmitter._tempArray1;
3021
+ if (this._findDiffInPath(enteredPath, curPath, add, del)) {
3027
3022
  var eventData = this._createEventData(pointer);
3028
- for(var j = 0, n = preLength - i; j < n; j++){
3029
- this._fireExit(prePath[j], eventData);
3023
+ for(var i = 0, n = add.length; i < n; i++){
3024
+ this._fireEnter(add[i], eventData);
3030
3025
  }
3031
- for(var j1 = 0, n1 = curLength - i; j1 < n1; j1++){
3032
- this._fireEnter(curPath[j1], eventData);
3026
+ for(var i1 = 0, n1 = del.length; i1 < n1; i1++){
3027
+ this._fireExit(del[i1], eventData);
3033
3028
  }
3034
- this._enteredElement = element;
3029
+ var length = enteredPath.length = curPath.length;
3030
+ for(var i2 = 0; i2 < length; i2++){
3031
+ enteredPath[i2] = curPath[i2];
3032
+ }
3033
+ add.length = del.length = 0;
3035
3034
  }
3036
3035
  };
3037
3036
  _proto._composedPath = function _composedPath(element, path) {
@@ -3048,6 +3047,49 @@
3048
3047
  path.length = i;
3049
3048
  return path;
3050
3049
  };
3050
+ _proto._findCommonInPath = function _findCommonInPath(prePath, curPath, common) {
3051
+ var idSet = UIPointerEventEmitter._tempSet;
3052
+ idSet.clear();
3053
+ for(var i = 0, n = prePath.length; i < n; i++){
3054
+ idSet.add(prePath[i].instanceId);
3055
+ }
3056
+ var hasCommon = false;
3057
+ for(var i1 = 0, n1 = curPath.length; i1 < n1; i1++){
3058
+ var entity = curPath[i1];
3059
+ if (idSet.has(entity.instanceId)) {
3060
+ common.push(entity);
3061
+ hasCommon = true;
3062
+ }
3063
+ }
3064
+ return hasCommon;
3065
+ };
3066
+ _proto._findDiffInPath = function _findDiffInPath(prePath, curPath, add, del) {
3067
+ var idSet = UIPointerEventEmitter._tempSet;
3068
+ idSet.clear();
3069
+ var changed = false;
3070
+ for(var i = 0, n = prePath.length; i < n; i++){
3071
+ idSet.add(prePath[i].instanceId);
3072
+ }
3073
+ for(var i1 = 0, n1 = curPath.length; i1 < n1; i1++){
3074
+ var entity = curPath[i1];
3075
+ if (!idSet.has(entity.instanceId)) {
3076
+ add.push(entity);
3077
+ changed = true;
3078
+ }
3079
+ }
3080
+ idSet.clear();
3081
+ for(var i2 = 0, n2 = curPath.length; i2 < n2; i2++){
3082
+ idSet.add(curPath[i2].instanceId);
3083
+ }
3084
+ for(var i3 = 0, n3 = prePath.length; i3 < n3; i3++){
3085
+ var entity1 = prePath[i3];
3086
+ if (!idSet.has(entity1.instanceId)) {
3087
+ del.push(entity1);
3088
+ changed = true;
3089
+ }
3090
+ }
3091
+ return changed;
3092
+ };
3051
3093
  _proto._bubble = function _bubble(path, pointer, fireEvent) {
3052
3094
  var length = path.length;
3053
3095
  if (length <= 0) return;
@@ -3059,8 +3101,10 @@
3059
3101
  return UIPointerEventEmitter;
3060
3102
  }(engine.PointerEventEmitter);
3061
3103
  exports.UIPointerEventEmitter._MAX_PATH_DEPTH = 2048;
3062
- exports.UIPointerEventEmitter._path0 = [];
3063
- exports.UIPointerEventEmitter._path1 = [];
3104
+ exports.UIPointerEventEmitter._tempSet = new Set();
3105
+ exports.UIPointerEventEmitter._path = [];
3106
+ exports.UIPointerEventEmitter._tempArray0 = [];
3107
+ exports.UIPointerEventEmitter._tempArray1 = [];
3064
3108
  exports.UIPointerEventEmitter = __decorate([
3065
3109
  engine.registerPointerEventEmitter()
3066
3110
  ], exports.UIPointerEventEmitter);