const makeUnstackedSnippet = function (domElement, canvasSpecs, animationHooks, observerSpecs, includeCanvas) {
const unsupportedElements = ['AREA', 'BASE', 'BR', 'COL', 'EMBED', 'HR', 'IMG', 'INPUT', 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'];
if (!domElement || unsupportedElements.indexOf(domElement.tagName) >= 0) return {};
let myElement,
id = domElement.id;
if (id && unstackedelement[id]) myElement = unstackedelement[id];
else myElement = makeUnstackedElement(domElement);
canvasSpecs.baseMatchesCanvasDimensions = true;
canvasSpecs.checkForResize = true;
let myCanvas = (includeCanvas) ? myElement.addCanvas(canvasSpecs) : false;
animationHooks.name = `${myElement.name}-animation`;
if (myCanvas) {
if (!animationHooks.afterClear) animationHooks.afterClear = () => myElement.updateCanvas();
animationHooks.target = myCanvas;
}
else animationHooks.noTarget = true;
let myAnimation = makeRender(animationHooks);
let myObserver = makeAnimationObserver(myAnimation, myElement, observerSpecs);
let destroy = () => {
myObserver();
myAnimation.kill();
if (myCanvas) myCanvas.demolish();
myElement.demolish(true);
};
return {
element: myElement,
canvas: myCanvas,
animation: myAnimation,
demolish: destroy,
};
};