UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

1 lines • 3.5 kB
import{n as e}from"./rolldown-runtime-8BhlS34s.js";function t(e){if(!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?(?:px)?$/iu.test(e.trim()))return null;let t=Number.parseFloat(e);return Number.isFinite(t)?t:null}function n(e){if(e.namespaceURI&&e.name!==`xmlns`)return!1;let t=e.value.trim();switch(e.name){case`d`:return v.test(t);case`points`:case`viewBox`:return _.test(t);case`fill`:case`stroke`:return h.test(t);case`clip-rule`:case`fill-rule`:return/^(?:evenodd|nonzero)$/u.test(t);case`stroke-linecap`:return/^(?:butt|round|square)$/u.test(t);case`stroke-linejoin`:return/^(?:bevel|miter|round)$/u.test(t);case`transform`:return/^(?:\s*(?:matrix|rotate|scale|skewX|skewY|translate)\(\s*[0-9eE+.,\s-]+\)\s*)+$/u.test(t);case`cx`:case`cy`:case`height`:case`opacity`:case`r`:case`rx`:case`ry`:case`stroke-miterlimit`:case`stroke-width`:case`width`:case`x`:case`x1`:case`x2`:case`y`:case`y1`:case`y2`:return g.test(t);case`preserveAspectRatio`:return/^(?:none|x(?:Min|Mid|Max)Y(?:Min|Mid|Max)(?:\s+(?:meet|slice))?)$/u.test(t);case`xmlns`:return t===p;case`aria-hidden`:case`focusable`:return/^(?:false|true)$/u.test(t);case`role`:return t===`img`;case`aria-label`:return/^[^<>&]{0,256}$/u.test(t);default:return!1}}async function r(e){let t=new Image;return t.decoding=`async`,await new Promise((n,r)=>{let i=window.setTimeout(()=>{t.src=``,r(Error(`plugin SVG decode timed out`))},c);t.addEventListener(`load`,()=>{window.clearTimeout(i),n()},{once:!0}),t.addEventListener(`error`,()=>{window.clearTimeout(i),r(Error(`plugin SVG decode failed`))},{once:!0}),t.src=e}),t}function i(e){let n=e.getAttribute(`viewBox`),r,i;if(n){let e=n.trim().split(/[\s,]+/u).map(e=>Number(e));if(e.length!==4||e.some(e=>!Number.isFinite(e)))return null;r=e[2],i=e[3]}else r=t(e.getAttribute(`width`)??``),i=t(e.getAttribute(`height`)??``);return!r||!i||r<=0||i<=0||r>f||i>f?null:{width:r,height:i}}async function a(e){let t=await e.text();if(/<!doctype|<!entity/iu.test(t))return null;let r=new DOMParser().parseFromString(t,`image/svg+xml`);if(r.querySelector(`parsererror`))return null;let a=r.documentElement;if(a.namespaceURI!==p||a.localName!==`svg`)return null;let o=[a,...Array.from(a.querySelectorAll(`*`))];if(o.length>l)return null;let s=0;for(let e of o){if(e.namespaceURI!==p||!m.has(e.localName.toLowerCase()))return null;for(let t of Array.from(e.attributes)){if(!n(t))return null;(t.name===`d`||t.name===`points`)&&(s+=t.value.length)}}if(s>u||o.reduce((e,t)=>e+(t.getAttribute(`d`)?.match(/[a-z]/giu)?.length??0),0)>d)return null;let c=i(a);return c?{blob:new Blob([new XMLSerializer().serializeToString(a)],{type:`image/svg+xml`}),...c}:null}async function o(e){let t=await a(e);if(!t)return null;let n=Math.min(s/t.width,s/t.height),i=Math.max(1,Math.round(t.width*n)),o=Math.max(1,Math.round(t.height*n)),c=URL.createObjectURL(t.blob);try{let e=await r(c),t=document.createElement(`canvas`);t.width=s,t.height=s;let n=t.getContext(`2d`);return n?(n.drawImage(e,Math.round((s-i)/2),Math.round((s-o)/2),i,o),await new Promise(e=>{t.toBlob(e,`image/png`)})):null}finally{URL.revokeObjectURL(c)}}var s,c,l,u,d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{s=256,c=5e3,l=4,u=8192,d=1024,f=4096,p=`http://www.w3.org/2000/svg`,m=new Set([`circle`,`desc`,`ellipse`,`g`,`line`,`path`,`polygon`,`polyline`,`rect`,`svg`,`title`]),h=/^(?:none|currentColor|#[0-9a-f]{3,8})$/iu,g=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/iu,_=/^[0-9eE+.,\s-]+$/u,v=/^[0-9a-zA-Z+.,\s-]+$/u})))()}y();export{o as rasterizeSvg};