{"version":3,"sources":["jsdelivr-header.js","/npm/@thi.ng/webgl-msdf@2.1.257/convert.js","/npm/@thi.ng/webgl-msdf@2.1.257/shader.js","/npm/@thi.ng/webgl-msdf@2.1.257/text.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,4sDCNK,MAAC,EAAiB,IAAG,CACxB,SAAU,EAAI,KAAK,KACnB,SAAU,EAAI,KAAK,KACnB,WAAY,EAAI,OAAO,WACvB,SAAU,EAAI,OAAO,KACrB,IAAK,EAAI,MAAM,GACf,KAAM,CAAC,EAAI,OAAO,OAAQ,EAAI,OAAO,QACrC,MAAO,EAAI,MAAM,OAAO,CAAC,EAAK,KAC5B,EAAI,OAAO,aAAa,EAAG,KAAO,CAChC,IAAK,CAAC,EAAG,EAAG,EAAG,GACf,OAAQ,CAAC,EAAG,QAAS,EAAG,SACxB,KAAM,CAAC,EAAG,MAAO,EAAG,QACpB,KAAM,EAAG,UAEJ,GACN,MCGC,EAAU,EAAK,EAAG,UAAW,CAAC,GAAM,GAAM,CAC9C,EAAI,EAAI,EAAI,EAAG,GAAI,EAAG,IAAK,EAAI,EAAI,EAAG,GAAI,EAAG,IAAK,EAAG,QAEjD,EAAa,EAAK,EAAI,aAAc,CAAC,EAAK,GAAK,CAAC,EAAK,KACzD,IAAI,EACA,EACJ,MAAO,CACL,EAAK,EAAI,EAAI,EAAQ,EAAK,EAAQ,EAAK,KAAO,IAC9C,EAAI,EAAI,EAAM,EAAI,EAAI,EAAI,EAAO,IAAM,GAAU,EAAQ,IACzD,EAAI,EAAK,EAAI,OAGX,EAAa,CAAC,EAAO,MAAE,CAC3B,GAAI,CAAC,EAAI,EAAM,EAAK,IAAS,CAC3B,EAAQ,IAAM,CACZ,EAAO,EAAK,IAAK,EAAI,IACrB,EAAK,MAAQ,EAAO,EAAK,OAAQ,EAAI,OAAS,KAC9C,EACE,EAAG,YACH,EAAI,EAAI,EAAK,KAAM,EAAK,WAAY,EAAK,EAAI,SAAU,QAI7D,GAAI,CAAC,EAAG,EAAM,EAAK,IAAS,CAC1B,EAAQ,KACN,IAAI,EACJ,MAAO,CACL,EAAI,EAAI,EAAW,EAAK,IAAK,EAAI,MACjC,EACE,EAAK,UACL,EAAI,EAAK,GAAI,EAAK,MAAQ,EAAI,OAAS,EAAK,GAAI,EAAG,KAErD,EAAO,EAAG,EAAG,GAAI,EAAK,QAAS,CAAC,QAItC,IAAK,CACH,0BAA0B,GAE5B,QAAS,CACP,SAAU,EACV,GAAI,KACD,EAAK,MAAQ,CAAE,MAAO,GAAO,MAElC,QAAS,CACP,IAAK,KACF,EAAK,MAAQ,CAAE,OAAQ,GAAO,MAEnC,SAAU,CACR,UAAW,EACX,KAAM,EACN,IAAK,EACL,OAAQ,CAAC,EAAG,MACZ,GAAI,CAAC,EAAI,MACL,EAAK,MAA6B,KAArB,CAAE,GAAI,CAAC,EAAI,KAE9B,MAAO,CACL,OAAO,EACP,QAAS,KCjEP,EAAO,CAAC,EAAQ,EAAK,KAUzB,MAAM,EAAM,EATZ,EAAO,CACL,MAAO,EACP,QAAS,EACT,QAAS,EACT,KAAM,EACN,KAAM,EACN,MAAO,KACJ,IAEa,KAAM,EAAK,MACvB,EAAa,EAAO,WAAa,EAAK,QAAU,EAAK,KACrD,EAAM,EAAI,QAAQ,KAAM,IAAI,OAC5B,EAAU,IAAI,EAAW,CAC7B,QAAS,CACP,SAAU,CAAE,KAAM,MAAO,KAAM,EAAG,WAAY,GAC9C,GAAI,CAAE,KAAM,MAAO,KAAM,EAAG,WAAY,OACrC,EAAK,SAAW,CACjB,MAAO,CACL,KAAM,MACN,QAAS,EAAK,MACd,KAAM,EACN,WAAY,KAEZ,MAEN,IAAW,EAAN,EACL,IAAK,CACH,KAAY,EAAN,GAAW,EAAK,SAAW,GAAK,IAAM,EAC5C,MAGE,EAAQ,EAAI,MAAM,MAClB,EAAU,EAAQ,GAAI,EAAO,MACnC,IAAK,IAAI,EAAI,EAAG,EAAK,EAAG,EAAK,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrD,MAAM,EAAO,EAAM,GACnB,IAAI,EAAK,EAAK,MAAM,EAAQ,EAAM,GAClC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,IAAM,CAC1C,MAAM,IAAE,EAAG,KAAE,EAAI,OAAE,EAAM,KAAE,GAAS,EAAO,MAAM,EAAK,KAC/C,EAAI,GAAM,EAAK,GAAI,EAAM,IACzB,EAAG,GAAK,EAAM,GAAI,EAAQ,EAAK,CAAC,EAAI,IAC3C,EAAQ,gBACN,WACA,CACE,CAAC,EAAG,EAAG,GACP,CAAC,EAAI,EAAI,EAAG,GACZ,CAAC,EAAI,EAAI,EAAI,EAAI,GACjB,CAAC,EAAG,EAAI,EAAI,IAET,EAAL,GAEF,EAAQ,gBACN,KACA,CACE,EAAK,GAAI,EAAK,GACd,EAAK,GAAI,CAAC,EAAI,GAAK,EAAK,GAAI,EAAI,IAAK,GACrC,EAAM,GAAI,EAAK,EAAM,GACrB,EAAK,GAAI,CAAC,EAAI,GAAI,EAAI,GAAK,EAAK,IAAK,IAElC,EAAL,GAEF,GAAM,EAAO,EAAK,KAAO,EAAK,OACpC,CACI,GAAM,CACV,CACE,MAAO,CACL,WAAY,EACZ,QAAS,CACP,KAAM,IAAI,YACR,EACG,GAAM,CAAC,EAAG,EAAI,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAI,GACvC,EAAM,EAAS,EAAN,EAAS,MAIxB,SAAU,GACV,IAAW,EAAN,EACL,KAAM,IAIJ,EAAY,CAAC,EAAM,EAAM,KAC7B,MAAM,OAA0B,IAAtB,EAAK,QAAqB,EAAK,QAAU,EACnD,OAAO,EACL,EAAK,GAAM,EAAK,MAAM,GAAG,KAAO,GAChC,IACA,IAGE,EAAY,IAAM,EAClB,EAAa,CAAC,EAAM,EAAM,MAAW,EAAK,MAAQ,GAAK,EAAU,EAAM,EAAM,GAC7E,GAAc,CAAC,EAAM,EAAM,MAAW,EAAK,MAAQ,GAAK,EAAU,EAAM,EAAM,GAAQ,S","file":"/npm/@thi.ng/webgl-msdf@2.1.257/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.48.0.\n * Original file: /npm/@thi.ng/webgl-msdf@2.1.257/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const convertGlyphs = (raw) => ({\n  fontFace: raw.info.face,\n  fontSize: raw.info.size,\n  lineHeight: raw.common.lineHeight,\n  baseLine: raw.common.base,\n  tex: raw.pages[0],\n  size: [raw.common.scaleW, raw.common.scaleH],\n  chars: raw.chars.reduce((acc, ch) => {\n    acc[String.fromCharCode(ch.id)] = {\n      pos: [ch.x, ch.y],\n      offset: [ch.xoffset, ch.yoffset],\n      size: [ch.width, ch.height],\n      step: ch.xadvance\n    };\n    return acc;\n  }, {})\n});\nexport {\n  convertGlyphs\n};\n","import { F, M4, S2D, V2, V3, V4 } from \"@thi.ng/shader-ast/api/types\";\nimport { assign } from \"@thi.ng/shader-ast/ast/assign\";\nimport { discard, ifThen } from \"@thi.ng/shader-ast/ast/controlflow\";\nimport { defMain, defn, ret } from \"@thi.ng/shader-ast/ast/function\";\nimport {\n  FLOAT0,\n  FLOAT05,\n  FLOAT1,\n  vec2,\n  vec4\n} from \"@thi.ng/shader-ast/ast/lit\";\nimport { add, div, lt, mul, sub } from \"@thi.ng/shader-ast/ast/ops\";\nimport { $x, $xyz, $y, $z } from \"@thi.ng/shader-ast/ast/swizzle\";\nimport { sym } from \"@thi.ng/shader-ast/ast/sym\";\nimport { clamp, max, min, mix } from \"@thi.ng/shader-ast/builtin/math\";\nimport { fwidth, texture } from \"@thi.ng/shader-ast/builtin/texture\";\nimport { ONE4, ZERO4 } from \"@thi.ng/vectors/api\";\nimport { BLEND_NORMAL } from \"@thi.ng/webgl/api/blend\";\nconst median3 = defn(F, \"median3\", [V3], (v) => [\n  ret(max(min($x(v), $y(v)), min(max($x(v), $y(v)), $z(v))))\n]);\nconst msdfSample = defn(V2, \"msdfSample\", [S2D, V2], (tex, uv) => {\n  let sd;\n  let w;\n  return [\n    sd = sym(sub(median3($xyz(texture(tex, uv))), FLOAT05)),\n    w = sym(clamp(add(div(sd, fwidth(sd)), FLOAT05), FLOAT0, FLOAT1)),\n    ret(vec2(sd, w))\n  ];\n});\nconst msdfShader = (opts = {}) => ({\n  vs: (gl, unis, ins, outs) => [\n    defMain(() => [\n      assign(outs.vuv, ins.uv),\n      opts.color ? assign(outs.vcolor, ins.color) : null,\n      assign(\n        gl.gl_Position,\n        mul(mul(unis.proj, unis.modelview), vec4(ins.position, 1))\n      )\n    ])\n  ],\n  fs: (_, unis, ins, outs) => [\n    defMain(() => {\n      let w;\n      return [\n        w = sym(msdfSample(unis.tex, ins.vuv)),\n        assign(\n          outs.fragColor,\n          mix(unis.bg, opts.color ? ins.vcolor : unis.fg, $y(w))\n        ),\n        ifThen(lt($x(w), unis.thresh), [discard])\n      ];\n    })\n  ],\n  ext: {\n    OES_standard_derivatives: true\n  },\n  attribs: {\n    position: V3,\n    uv: V2,\n    ...opts.color ? { color: V4 } : null\n  },\n  varying: {\n    vuv: V2,\n    ...opts.color ? { vcolor: V4 } : null\n  },\n  uniforms: {\n    modelview: M4,\n    proj: M4,\n    tex: S2D,\n    thresh: [F, 1e-3],\n    bg: [V4, ZERO4],\n    ...!opts.color ? { fg: [V4, ONE4] } : null\n  },\n  state: {\n    blend: true,\n    blendFn: BLEND_NORMAL\n  }\n});\nexport {\n  median3,\n  msdfSample,\n  msdfShader\n};\n","import { add } from \"@thi.ng/transducers/add\";\nimport { map } from \"@thi.ng/transducers/map\";\nimport { mapcat } from \"@thi.ng/transducers/mapcat\";\nimport { range } from \"@thi.ng/transducers/range\";\nimport { transduce } from \"@thi.ng/transducers/transduce\";\nimport { AttribPool } from \"@thi.ng/vector-pools/attrib-pool\";\nimport { addm2 } from \"@thi.ng/vectors/addm\";\nimport { ONE4 } from \"@thi.ng/vectors/api\";\nimport { invert2 } from \"@thi.ng/vectors/invert\";\nimport { madd2 } from \"@thi.ng/vectors/madd\";\nimport { mul2 } from \"@thi.ng/vectors/mul\";\nconst text = (glyphs, txt, opts) => {\n  opts = {\n    align: alignLeft,\n    spacing: 1,\n    leading: 1,\n    dirX: 1,\n    dirY: 1,\n    color: ONE4,\n    ...opts\n  };\n  const dir = [opts.dirX, opts.dirY];\n  const lineHeight = glyphs.lineHeight * opts.leading * opts.dirY;\n  const len = txt.replace(\"\\n\", \"\").length;\n  const attribs = new AttribPool({\n    attribs: {\n      position: { type: \"f32\", size: 3, byteOffset: 0 },\n      uv: { type: \"f32\", size: 2, byteOffset: 12 },\n      ...opts.useColor ? {\n        color: {\n          type: \"f32\",\n          default: opts.color,\n          size: 4,\n          byteOffset: 20\n        }\n      } : null\n    },\n    num: len * 4,\n    mem: {\n      size: len * 4 * (opts.useColor ? 36 : 20) + 8 + /* FIXME */\n      40\n    }\n  });\n  const lines = txt.split(\"\\n\");\n  const invSize = invert2([], glyphs.size);\n  for (let i = 0, yy = 0, id = 0; i < lines.length; i++) {\n    const line = lines[i];\n    let xx = opts.align(glyphs, opts, line);\n    for (let j = 0; j < line.length; j++, id++) {\n      const { pos, size, offset, step } = glyphs.chars[line[j]];\n      const [sx, sy] = mul2([], size, dir);\n      const [x, y] = madd2([], offset, dir, [xx, yy]);\n      attribs.setAttribValues(\n        \"position\",\n        [\n          [x, y, 0],\n          [x + sx, y, 0],\n          [x + sx, y + sy, 0],\n          [x, y + sy, 0]\n        ],\n        id * 4\n      );\n      attribs.setAttribValues(\n        \"uv\",\n        [\n          mul2([], pos, invSize),\n          mul2([], [pos[0] + size[0], pos[1]], invSize),\n          addm2([], pos, size, invSize),\n          mul2([], [pos[0], pos[1] + size[1]], invSize)\n        ],\n        id * 4\n      );\n      xx += step * opts.dirX * opts.spacing;\n    }\n    yy += lineHeight;\n  }\n  return {\n    attribPool: attribs,\n    indices: {\n      data: new Uint16Array(\n        mapcat(\n          (i) => [i, i + 1, i + 2, i, i + 2, i + 3],\n          range(0, len * 4, 4)\n        )\n      )\n    },\n    uniforms: {},\n    num: len * 6,\n    mode: 4\n    // TRIANGLES\n  };\n};\nconst textWidth = (font, opts, txt) => {\n  const s = opts.spacing !== void 0 ? opts.spacing : 1;\n  return transduce(\n    map((x) => font.chars[x].step * s),\n    add(),\n    txt\n  );\n};\nconst alignLeft = () => 0;\nconst alignRight = (font, opts, line) => -(opts.dirX || 1) * textWidth(font, opts, line);\nconst alignCenter = (font, opts, line) => -(opts.dirX || 1) * textWidth(font, opts, line) / 2;\nexport {\n  alignCenter,\n  alignLeft,\n  alignRight,\n  text,\n  textWidth\n};\n"]}