pixi.js 7.2.0-rc → 7.2.0-rc.2

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  PixiJS — The HTML5 Creation Engine
2
2
  =============
3
3
 
4
- ![pixi.js logo](https://pixijs.download/pixijs-banner-no-version.png)
4
+ ![pixi.js logo](https://pixijs.download/pixijs-banner-no-version.png?v=1)
5
5
 
6
6
  The aim of this project is to provide a fast lightweight 2D library that works
7
7
  across all devices. The PixiJS renderer allows everyone to enjoy the power of
package/dist/pixi.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * pixi.js - v7.2.0-rc
3
- * Compiled Thu, 02 Mar 2023 15:20:48 UTC
2
+ * pixi.js - v7.2.0-rc.2
3
+ * Compiled Fri, 10 Mar 2023 14:31:11 UTC
4
4
  *
5
5
  * pixi.js is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -8821,7 +8821,7 @@ ${this.fragmentSrc}`;
8821
8821
  }
8822
8822
  }
8823
8823
  if (fbo.blitFramebuffer) {
8824
- fbo.blitFramebuffer.dispose();
8824
+ this.disposeFramebuffer(fbo.blitFramebuffer, contextLost);
8825
8825
  }
8826
8826
  }
8827
8827
  disposeAll(contextLost) {
@@ -10358,7 +10358,7 @@ ${this.fragmentSrc}`;
10358
10358
  const { renderer } = this;
10359
10359
  renderer.runners.init.emit(renderer.options);
10360
10360
  if (options.hello) {
10361
- console.log(`PixiJS ${"7.2.0-rc"} - ${renderer.rendererLogId} - https://pixijs.com`);
10361
+ console.log(`PixiJS ${"7.2.0-rc.2"} - ${renderer.rendererLogId} - https://pixijs.com`);
10362
10362
  }
10363
10363
  renderer.resize(renderer.screen.width, renderer.screen.height);
10364
10364
  }
@@ -12544,7 +12544,7 @@ ${this.fragmentSrc}`;
12544
12544
  }
12545
12545
  }
12546
12546
 
12547
- const VERSION = "7.2.0-rc";
12547
+ const VERSION = "7.2.0-rc.2";
12548
12548
 
12549
12549
  class Bounds {
12550
12550
  constructor() {
@@ -15129,10 +15129,14 @@ ${this.fragmentSrc}`;
15129
15129
  constructor(rootTarget) {
15130
15130
  this.dispatch = new eventemitter3();
15131
15131
  this.moveOnAll = false;
15132
+ this.enableGlobalMoveEvents = true;
15132
15133
  this.mappingState = {
15133
15134
  trackingData: {}
15134
15135
  };
15135
15136
  this.eventPool = /* @__PURE__ */ new Map();
15137
+ this._allInteractiveElements = [];
15138
+ this._hitElements = [];
15139
+ this._collectInteractiveElements = false;
15136
15140
  this.rootTarget = rootTarget;
15137
15141
  this.hitPruneFn = this.hitPruneFn.bind(this);
15138
15142
  this.hitTestFn = this.hitTestFn.bind(this);
@@ -15212,24 +15216,17 @@ ${this.fragmentSrc}`;
15212
15216
  return;
15213
15217
  }
15214
15218
  }
15215
- all(e, type, target = this.rootTarget) {
15219
+ all(e, type, targets = this._allInteractiveElements) {
15220
+ if (targets.length === 0)
15221
+ return;
15216
15222
  e.eventPhase = e.BUBBLING_PHASE;
15217
- const children = target.children;
15218
- const interactionNone = target.eventMode === "none";
15219
- const interactionPassive = target.eventMode === "passive" && !target.interactiveChildren;
15220
- const interactiveChildren = target.interactiveChildren;
15221
- const shouldIterateChildren = !interactionNone && interactiveChildren && !interactionPassive;
15222
- if (children && children.length > 0) {
15223
- if (shouldIterateChildren) {
15224
- for (let i = 0; i < children.length; i++) {
15225
- this.all(e, type, children[i]);
15226
- }
15227
- }
15223
+ const events = Array.isArray(type) ? type : [type];
15224
+ for (let i = targets.length - 1; i >= 0; i--) {
15225
+ events.forEach((event) => {
15226
+ e.currentTarget = targets[i];
15227
+ this.notifyTarget(e, event);
15228
+ });
15228
15229
  }
15229
- e.currentTarget = target;
15230
- if (!target.isInteractive())
15231
- return;
15232
- this.notifyTarget(e, type);
15233
15230
  }
15234
15231
  propagationPath(target) {
15235
15232
  const propagationPath = [target];
@@ -15244,9 +15241,6 @@ ${this.fragmentSrc}`;
15244
15241
  return propagationPath;
15245
15242
  }
15246
15243
  hitTestRecursive(currentTarget, eventMode, location, testFn, pruneFn) {
15247
- if (!currentTarget || !currentTarget.visible) {
15248
- return null;
15249
- }
15250
15244
  if (pruneFn(currentTarget, location)) {
15251
15245
  return null;
15252
15246
  }
@@ -15262,15 +15256,29 @@ ${this.fragmentSrc}`;
15262
15256
  if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {
15263
15257
  continue;
15264
15258
  }
15265
- if (nestedHit.length > 0 || currentTarget.isInteractive()) {
15259
+ const isInteractive = currentTarget.isInteractive();
15260
+ if (nestedHit.length > 0 || isInteractive) {
15261
+ if (isInteractive)
15262
+ this._allInteractiveElements.push(currentTarget);
15266
15263
  nestedHit.push(currentTarget);
15267
15264
  }
15268
- return nestedHit;
15265
+ if (this._hitElements.length === 0)
15266
+ this._hitElements = nestedHit;
15267
+ if (!this._collectInteractiveElements)
15268
+ return nestedHit;
15269
15269
  }
15270
15270
  }
15271
15271
  }
15272
- if (this._isInteractive(eventMode) && testFn(currentTarget, location)) {
15273
- return currentTarget.isInteractive() ? [currentTarget] : [];
15272
+ const isInteractiveMode = this._isInteractive(eventMode);
15273
+ const isInteractiveTarget = currentTarget.isInteractive();
15274
+ if (this._collectInteractiveElements) {
15275
+ if (isInteractiveMode && isInteractiveTarget)
15276
+ this._allInteractiveElements.push(currentTarget);
15277
+ if (this._hitElements.length > 0)
15278
+ return null;
15279
+ }
15280
+ if (isInteractiveMode && testFn(currentTarget, location)) {
15281
+ return isInteractiveTarget ? [currentTarget] : [];
15274
15282
  }
15275
15283
  return null;
15276
15284
  }
@@ -15278,6 +15286,9 @@ ${this.fragmentSrc}`;
15278
15286
  return int === "static" || int === "dynamic";
15279
15287
  }
15280
15288
  hitPruneFn(displayObject, location) {
15289
+ if (!displayObject || displayObject.isMask || !displayObject.visible || !displayObject.renderable) {
15290
+ return true;
15291
+ }
15281
15292
  if (displayObject.eventMode === "none") {
15282
15293
  return true;
15283
15294
  }
@@ -15287,6 +15298,8 @@ ${this.fragmentSrc}`;
15287
15298
  if (displayObject.isMask) {
15288
15299
  return true;
15289
15300
  }
15301
+ if (this._hitElements.length > 0)
15302
+ return false;
15290
15303
  if (displayObject.hitArea) {
15291
15304
  displayObject.worldTransform.applyInverse(location, tempLocalMapping);
15292
15305
  if (!displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {
@@ -15345,7 +15358,11 @@ ${this.fragmentSrc}`;
15345
15358
  console.warn("EventBoundary cannot map a non-pointer event as a pointer event");
15346
15359
  return;
15347
15360
  }
15361
+ this._allInteractiveElements.length = 0;
15362
+ this._hitElements.length = 0;
15363
+ this._collectInteractiveElements = true;
15348
15364
  const e = this.createPointerEvent(from);
15365
+ this._collectInteractiveElements = false;
15349
15366
  const isMouse = e.pointerType === "mouse" || e.pointerType === "pen";
15350
15367
  const trackingData = this.trackingData(from.pointerId);
15351
15368
  const outTarget = this.findMountedTarget(trackingData.overTargets);
@@ -15396,18 +15413,24 @@ ${this.fragmentSrc}`;
15396
15413
  }
15397
15414
  this.freeEvent(overEvent);
15398
15415
  }
15399
- const propagationMethod = this.moveOnAll ? "all" : "dispatchEvent";
15400
- this[propagationMethod](e, "pointermove");
15401
- this.all(e, "globalpointermove");
15416
+ const allMethods = [];
15417
+ const allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? true;
15418
+ this.moveOnAll ? allMethods.push("pointermove") : this.dispatchEvent(e, "pointermove");
15419
+ allowGlobalPointerEvents && allMethods.push("globalpointermove");
15402
15420
  if (e.pointerType === "touch") {
15403
- this[propagationMethod](e, "touchmove");
15404
- this.all(e, "globaltouchmove");
15421
+ this.moveOnAll ? allMethods.splice(1, 0, "touchmove") : this.dispatchEvent(e, "touchmove");
15422
+ allowGlobalPointerEvents && allMethods.push("globaltouchmove");
15405
15423
  }
15406
15424
  if (isMouse) {
15407
- this[propagationMethod](e, "mousemove");
15408
- this.all(e, "globalmousemove");
15425
+ this.moveOnAll ? allMethods.splice(1, 0, "mousemove") : this.dispatchEvent(e, "mousemove");
15426
+ allowGlobalPointerEvents && allMethods.push("globalmousemove");
15409
15427
  this.cursor = e.target?.cursor;
15410
15428
  }
15429
+ if (allMethods.length > 0) {
15430
+ this.all(e, allMethods);
15431
+ }
15432
+ this._allInteractiveElements.length = 0;
15433
+ this._hitElements.length = 0;
15411
15434
  trackingData.overTargets = e.composedPath();
15412
15435
  this.freeEvent(e);
15413
15436
  }
@@ -15583,7 +15606,7 @@ ${this.fragmentSrc}`;
15583
15606
  this.copyData(from, event);
15584
15607
  event.nativeEvent = from.nativeEvent;
15585
15608
  event.originalEvent = from;
15586
- event.target = target ?? this.hitTest(event.global.x, event.global.y);
15609
+ event.target = target ?? this.hitTest(event.global.x, event.global.y) ?? this._hitElements[0];
15587
15610
  if (typeof type === "string") {
15588
15611
  event.type = type;
15589
15612
  }
@@ -15642,6 +15665,7 @@ ${this.fragmentSrc}`;
15642
15665
  to.metaKey = from.metaKey;
15643
15666
  to.movement.copyFrom(from.movement);
15644
15667
  to.screen.copyFrom(from.screen);
15668
+ to.shiftKey = from.shiftKey;
15645
15669
  to.global.copyFrom(from.global);
15646
15670
  }
15647
15671
  copyData(from, to) {
@@ -15730,6 +15754,15 @@ ${this.fragmentSrc}`;
15730
15754
  default: "inherit",
15731
15755
  pointer: "pointer"
15732
15756
  };
15757
+ this.features = new Proxy({ ..._EventSystem.defaultEventFeatures }, {
15758
+ set: (target, key, value) => {
15759
+ if (key === "globalMove") {
15760
+ this.rootBoundary.enableGlobalMoveEvents = value;
15761
+ }
15762
+ target[key] = value;
15763
+ return true;
15764
+ }
15765
+ });
15733
15766
  this.onPointerDown = this.onPointerDown.bind(this);
15734
15767
  this.onPointerMove = this.onPointerMove.bind(this);
15735
15768
  this.onPointerUp = this.onPointerUp.bind(this);
@@ -15744,6 +15777,8 @@ ${this.fragmentSrc}`;
15744
15777
  this.setTargetElement(view);
15745
15778
  this.resolution = resolution;
15746
15779
  _EventSystem._defaultEventMode = options.eventMode ?? "auto";
15780
+ Object.assign(this.features, options.eventFeatures ?? {});
15781
+ this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;
15747
15782
  }
15748
15783
  resolutionChange(resolution) {
15749
15784
  this.resolution = resolution;
@@ -15783,7 +15818,12 @@ ${this.fragmentSrc}`;
15783
15818
  this.domElement.style.cursor = mode;
15784
15819
  }
15785
15820
  }
15821
+ get pointer() {
15822
+ return this.rootPointerEvent;
15823
+ }
15786
15824
  onPointerDown(nativeEvent) {
15825
+ if (!this.features.click)
15826
+ return;
15787
15827
  this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
15788
15828
  if (this.supportsTouchEvents && nativeEvent.pointerType === "touch")
15789
15829
  return;
@@ -15802,6 +15842,8 @@ ${this.fragmentSrc}`;
15802
15842
  this.setCursor(this.rootBoundary.cursor);
15803
15843
  }
15804
15844
  onPointerMove(nativeEvent) {
15845
+ if (!this.features.move)
15846
+ return;
15805
15847
  this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
15806
15848
  if (this.supportsTouchEvents && nativeEvent.pointerType === "touch")
15807
15849
  return;
@@ -15814,6 +15856,8 @@ ${this.fragmentSrc}`;
15814
15856
  this.setCursor(this.rootBoundary.cursor);
15815
15857
  }
15816
15858
  onPointerUp(nativeEvent) {
15859
+ if (!this.features.click)
15860
+ return;
15817
15861
  this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
15818
15862
  if (this.supportsTouchEvents && nativeEvent.pointerType === "touch")
15819
15863
  return;
@@ -15831,6 +15875,8 @@ ${this.fragmentSrc}`;
15831
15875
  this.setCursor(this.rootBoundary.cursor);
15832
15876
  }
15833
15877
  onPointerOverOut(nativeEvent) {
15878
+ if (!this.features.click)
15879
+ return;
15834
15880
  this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
15835
15881
  if (this.supportsTouchEvents && nativeEvent.pointerType === "touch")
15836
15882
  return;
@@ -15842,6 +15888,8 @@ ${this.fragmentSrc}`;
15842
15888
  this.setCursor(this.rootBoundary.cursor);
15843
15889
  }
15844
15890
  onWheel(nativeEvent) {
15891
+ if (!this.features.wheel)
15892
+ return;
15845
15893
  const wheelEvent = this.normalizeWheelEvent(nativeEvent);
15846
15894
  this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
15847
15895
  this.rootBoundary.mapEvent(wheelEvent);
@@ -16080,6 +16128,12 @@ ${this.fragmentSrc}`;
16080
16128
  ExtensionType.CanvasRendererSystem
16081
16129
  ]
16082
16130
  };
16131
+ EventSystem.defaultEventFeatures = {
16132
+ move: true,
16133
+ globalMove: true,
16134
+ click: true,
16135
+ wheel: true
16136
+ };
16083
16137
  extensions$1.add(EventSystem);
16084
16138
 
16085
16139
  function convertEventModeToInteractiveMode(mode) {
@@ -18648,6 +18702,9 @@ ${e}`);
18648
18702
  }
18649
18703
  _rawPixels(target, frame) {
18650
18704
  const renderer = this.renderer;
18705
+ if (!renderer) {
18706
+ throw new Error("The Extract has already been destroyed");
18707
+ }
18651
18708
  let resolution;
18652
18709
  let flipY = false;
18653
18710
  let renderTexture;
@@ -18657,7 +18714,7 @@ ${e}`);
18657
18714
  renderTexture = target;
18658
18715
  } else {
18659
18716
  const multisample = renderer.context.webGLVersion >= 2 ? renderer.multisample : MSAA_QUALITY.NONE;
18660
- renderTexture = this.renderer.generateTexture(target, { multisample });
18717
+ renderTexture = renderer.generateTexture(target, { multisample });
18661
18718
  if (multisample !== MSAA_QUALITY.NONE) {
18662
18719
  const resolvedTexture = RenderTexture.create({
18663
18720
  width: renderTexture.width,
@@ -18665,7 +18722,7 @@ ${e}`);
18665
18722
  });
18666
18723
  renderer.framebuffer.bind(renderTexture.framebuffer);
18667
18724
  renderer.framebuffer.blit(resolvedTexture.framebuffer);
18668
- renderer.framebuffer.bind(null);
18725
+ renderer.framebuffer.bind();
18669
18726
  renderTexture.destroy(true);
18670
18727
  renderTexture = resolvedTexture;
18671
18728
  }
@@ -18685,7 +18742,7 @@ ${e}`);
18685
18742
  frame.height = renderer.height;
18686
18743
  }
18687
18744
  flipY = true;
18688
- renderer.renderTexture.bind(null);
18745
+ renderer.renderTexture.bind();
18689
18746
  }
18690
18747
  const width = Math.round(frame.width * resolution);
18691
18748
  const height = Math.round(frame.height * resolution);
@@ -18693,7 +18750,7 @@ ${e}`);
18693
18750
  const gl = renderer.gl;
18694
18751
  gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
18695
18752
  if (generated) {
18696
- renderTexture.destroy(true);
18753
+ renderTexture?.destroy(true);
18697
18754
  }
18698
18755
  return { pixels, width, height, flipY };
18699
18756
  }