fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 1.67 kB
JavaScript
import{FabricError as e,SignalAbortedError as t}from"../internals/console.min.mjs";import{noop as n}from"../../constants.min.mjs";import{classRegistry as r}from"../../ClassRegistry.min.mjs";import{createImage as i}from"./dom.min.mjs";const a=(n,{signal:r,crossOrigin:a=null}={})=>new Promise(function(o,s){if(r&&r.aborted)return s(new t(`loadImage`));let c=i(),l;r&&(l=function(e){c.src=``,s(e)},r.addEventListener(`abort`,l,{once:!0}));let u=function(){c.onload=c.onerror=null,l&&(r==null||r.removeEventListener(`abort`,l)),o(c)};n?(c.onload=u,c.onerror=function(){l&&(r==null||r.removeEventListener(`abort`,l)),s(new e(`Error loading ${c.src}`))},a&&(c.crossOrigin=a),c.src=n):u()}),o=(e,{signal:t,reviver:i=n}={})=>new Promise((n,a)=>{let o=[];t&&t.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e.map(e=>r.getClass(e.type).fromObject(e,{signal:t}))).then(async t=>{for(let[n,r]of t.entries())if(r.status===`fulfilled`&&(await i(e[n],r.value),o.push(r.value)),r.status===`rejected`){let t=await i(e[n],void 0,r.reason);t&&o.push(t)}n(o)}).catch(e=>{o.forEach(e=>{e.dispose&&e.dispose()}),a(e)}).finally(()=>{t&&t.removeEventListener(`abort`,a)})}),s=(e,{signal:t}={})=>new Promise((n,i)=>{let a=[];t&&t.addEventListener(`abort`,i,{once:!0});let s=Object.values(e).map(e=>e&&e.type&&r.has(e.type)?o([e],{signal:t}).then(([e])=>(a.push(e),e)):e),c=Object.keys(e);Promise.all(s).then(e=>e.reduce((e,t,n)=>(e[c[n]]=t,e),{})).then(n).catch(e=>{a.forEach(e=>{e.dispose&&e.dispose()}),i(e)}).finally(()=>{t&&t.removeEventListener(`abort`,i)})});export{s as enlivenObjectEnlivables,o as enlivenObjects,a as loadImage};
//# sourceMappingURL=objectEnlive.min.mjs.map