@ngroznykh/papirus 0.9.7 → 0.9.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.
|
@@ -62,6 +62,8 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> impleme
|
|
|
62
62
|
/** Node/edge layout changed — edge endpoints must be resynced before paint. */
|
|
63
63
|
private _contentDirty;
|
|
64
64
|
private _destroyed;
|
|
65
|
+
/** Chrome may drop the accelerated 2D backing store; nothing can be painted until it returns. */
|
|
66
|
+
private _contextLost;
|
|
65
67
|
private _canvasRect;
|
|
66
68
|
private _nodeObstaclesCache;
|
|
67
69
|
private animationFrameId;
|
|
@@ -76,6 +78,8 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> impleme
|
|
|
76
78
|
get attachToOutline(): boolean;
|
|
77
79
|
set attachToOutline(value: boolean);
|
|
78
80
|
constructor(canvas: HTMLCanvasElement | string, options?: DiagramOptions);
|
|
81
|
+
private readonly handleContextLost;
|
|
82
|
+
private readonly handleContextRestored;
|
|
79
83
|
/**
|
|
80
84
|
* Current zoom level
|
|
81
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/core/DiagramRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAU,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/core/DiagramRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/papirus.js
CHANGED
|
@@ -8316,6 +8316,17 @@ var InteractionManager = class {
|
|
|
8316
8316
|
}
|
|
8317
8317
|
};
|
|
8318
8318
|
//#endregion
|
|
8319
|
+
//#region src/utils/software2dContext.ts
|
|
8320
|
+
/**
|
|
8321
|
+
* Chrome/Blink can drop the GPU backing store of a large accelerated 2D canvas.
|
|
8322
|
+
* A software context (`willReadFrequently`) avoids that path. Safari/WebKit
|
|
8323
|
+
* does not lose 2D contexts this way, so it stays on the default renderer.
|
|
8324
|
+
*/
|
|
8325
|
+
function shouldPreferSoftware2dContext(userAgent = typeof navigator === "undefined" ? "" : navigator.userAgent) {
|
|
8326
|
+
if (/CriOS|FxiOS|EdgiOS/.test(userAgent)) return false;
|
|
8327
|
+
return /Chrome\/|Chromium\/|Edg\/|OPR\//.test(userAgent);
|
|
8328
|
+
}
|
|
8329
|
+
//#endregion
|
|
8319
8330
|
//#region src/core/AnimationManager.ts
|
|
8320
8331
|
var DEFAULT_OPTIONS$3 = {
|
|
8321
8332
|
enabled: false,
|
|
@@ -9293,6 +9304,7 @@ var DiagramRenderer = class extends EventEmitter {
|
|
|
9293
9304
|
this._styleDirty = true;
|
|
9294
9305
|
this._contentDirty = true;
|
|
9295
9306
|
this._destroyed = false;
|
|
9307
|
+
this._contextLost = false;
|
|
9296
9308
|
this._canvasRect = null;
|
|
9297
9309
|
this._nodeObstaclesCache = null;
|
|
9298
9310
|
this.animationFrameId = null;
|
|
@@ -9301,12 +9313,22 @@ var DiagramRenderer = class extends EventEmitter {
|
|
|
9301
9313
|
this._groups = /* @__PURE__ */ new Map();
|
|
9302
9314
|
this._attachToOutline = false;
|
|
9303
9315
|
this._nodeEdgeIndex = /* @__PURE__ */ new Map();
|
|
9316
|
+
this.handleContextLost = () => {
|
|
9317
|
+
this._contextLost = true;
|
|
9318
|
+
};
|
|
9319
|
+
this.handleContextRestored = () => {
|
|
9320
|
+
if (this.canvas.getContext("2d") === null) return;
|
|
9321
|
+
this._contextLost = false;
|
|
9322
|
+
this.ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
9323
|
+
this.ctx.scale(this.devicePixelRatio, this.devicePixelRatio);
|
|
9324
|
+
this.markDirty();
|
|
9325
|
+
};
|
|
9304
9326
|
this.canvas = this.resolveCanvas(canvas);
|
|
9305
9327
|
this.options = {
|
|
9306
9328
|
...DEFAULT_OPTIONS$1,
|
|
9307
9329
|
...options
|
|
9308
9330
|
};
|
|
9309
|
-
const ctx = this.canvas.getContext("2d");
|
|
9331
|
+
const ctx = shouldPreferSoftware2dContext() ? this.canvas.getContext("2d", { willReadFrequently: true }) : this.canvas.getContext("2d");
|
|
9310
9332
|
if (ctx === null) throw new Error("Failed to get 2D rendering context");
|
|
9311
9333
|
this.ctx = ctx;
|
|
9312
9334
|
this.devicePixelRatio = this.options.retina ? window.devicePixelRatio || 1 : 1;
|
|
@@ -9336,6 +9358,8 @@ var DiagramRenderer = class extends EventEmitter {
|
|
|
9336
9358
|
getNodeObstacles: () => this.getNodeObstacles()
|
|
9337
9359
|
});
|
|
9338
9360
|
this.setupCanvas();
|
|
9361
|
+
this.canvas.addEventListener("contextlost", this.handleContextLost);
|
|
9362
|
+
this.canvas.addEventListener("contextrestored", this.handleContextRestored);
|
|
9339
9363
|
this.startRenderLoop();
|
|
9340
9364
|
}
|
|
9341
9365
|
/**
|
|
@@ -9817,6 +9841,8 @@ var DiagramRenderer = class extends EventEmitter {
|
|
|
9817
9841
|
cancelAnimationFrame(this.animationFrameId);
|
|
9818
9842
|
this.animationFrameId = null;
|
|
9819
9843
|
}
|
|
9844
|
+
this.canvas.removeEventListener("contextlost", this.handleContextLost);
|
|
9845
|
+
this.canvas.removeEventListener("contextrestored", this.handleContextRestored);
|
|
9820
9846
|
this.disableInteractions();
|
|
9821
9847
|
this.disableContextMenu();
|
|
9822
9848
|
for (const plugin of this.plugins) plugin.destroy?.(this);
|
|
@@ -9870,7 +9896,7 @@ var DiagramRenderer = class extends EventEmitter {
|
|
|
9870
9896
|
if (this.animationManager.update(now) || this.animationManager.hasActive()) this._dirty = true;
|
|
9871
9897
|
if (this.scrollbarController.updateAnimation(now)) this._dirty = true;
|
|
9872
9898
|
this._canvasRect = null;
|
|
9873
|
-
if (this._dirty) {
|
|
9899
|
+
if (this._dirty && !this._contextLost) {
|
|
9874
9900
|
this._dirty = false;
|
|
9875
9901
|
this.renderFrame(now);
|
|
9876
9902
|
}
|