0.0.1Updated 3 days ago
import { SVGAttributes } from "preact";


export async function loadSvg(name: string) {
  const url = import.meta.url.startsWith('http') ? import.meta.url.replace(/\/_fresh\/(?:server\/)?/, '/assets/') : import.meta.url;

  const assetUrl = new URL(`./svg/${name}.svg`, url);

  let svg_code!: string;

  if (assetUrl.protocol === 'file:') {
    svg_code = Deno.readTextFileSync(assetUrl);
  } else {
    const res = await fetch(assetUrl);
    if (!res.ok) throw new Error(`Failed to load SVG: ${assetUrl}`);
    svg_code = await res.text();
  }

  return (props: SVGAttributes) => (
    // deno-lint-ignore react-no-danger
    <div class="contents" dangerouslySetInnerHTML={{
      __html: svg_code
        .replace(/\<svg /, `<svg ${Object.entries(props).map(([key, value]) => `${key}="${value}"`).join(', ')} `)
    }} />
  )
}

// export const Logo = decodeURIComponent(LogoUnparsed.replace(/^.+\+xml,/, ''));
export const Logo = await loadSvg('logo');