UNPKG

svg-inplace-rasterize

Version:

Rasterize parts of an SVG to keep it animatable while reducing size and improving render time.

40 lines (39 loc) 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const specialCharacters = { '!': { n: '!', i: '_x21_' }, '@': { n: '@', i: '_x40_' }, '&': { n: '&', i: '_x26_' } }; const s = specialCharacters; function getFilter(y) { return function filter($) { const sel = `*[id]:not([id^=XMLID]):not([id^=SVGID]):not(svg):not([id$="${s['!'][y]}"])`; const x = $(sel).toArray(); return x.filter(el => { const forceNotRasterize = $(el).is(`[id$="${s['@'][y]}"]`); if (forceNotRasterize) return false; const forceRasterize = $(el).is(`[id$="${s['&'][y]}"]`); if (forceRasterize) return true; const parentsHaveForce = !!$(el).parents(`[id$="${s['&'][y]}"], [id$="${s['@'][y]}"]`).length; if (parentsHaveForce) return false; const childrenHaveId = !!$(el).children(sel).length; if (childrenHaveId) return false; return true; }); }; } exports.getFilter = getFilter;