fixes #2842 using unregistered renderer or missing path
diff --git a/player/js/animation/AnimationItem.js b/player/js/animation/AnimationItem.js
index a299026..8930fae 100644
--- a/player/js/animation/AnimationItem.js
+++ b/player/js/animation/AnimationItem.js
@@ -20,7 +20,7 @@
import dataManager from '../utils/DataManager';
import markerParser from '../utils/markers/markerParser';
import ProjectInterface from '../utils/expressions/ProjectInterface';
-import { getRenderer } from '../renderers/renderersManager';
+import { getRenderer, getRegisteredRenderer } from '../renderers/renderersManager';
const AnimationItem = function () {
this._cbs = [];
@@ -153,7 +153,7 @@
? wrapperAttributes.getNamedItem('data-bm-renderer').value
: wrapperAttributes.getNamedItem('bm-renderer')
? wrapperAttributes.getNamedItem('bm-renderer').value
- : 'canvas';
+ : getRegisteredRenderer() || 'canvas';
var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary
? wrapperAttributes.getNamedItem('data-anim-loop').value
@@ -196,7 +196,11 @@
if (prerender === 'false') {
params.prerender = false;
}
- this.setParams(params);
+ if (!params.path) {
+ this.trigger('destroy');
+ } else {
+ this.setParams(params);
+ }
};
AnimationItem.prototype.includeLayers = function (data) {
diff --git a/player/js/renderers/renderersManager.js b/player/js/renderers/renderersManager.js
index 79e3900..13bc111 100644
--- a/player/js/renderers/renderersManager.js
+++ b/player/js/renderers/renderersManager.js
@@ -8,7 +8,22 @@
return renderers[key];
}
+function getRegisteredRenderer() {
+ // Returns canvas by default for compatibility
+ if (renderers.canvas) {
+ return 'canvas';
+ }
+ // Returns any renderer that is registered
+ for (const key in renderers) {
+ if (renderers[key]) {
+ return key;
+ }
+ }
+ return '';
+}
+
export {
registerRenderer,
getRenderer,
+ getRegisteredRenderer,
};