@galacean/engine-ui 1.4.7 → 1.4.8

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