{"version":3,"sources":["jsdelivr-header.js","/npm/@thi.ng/shader-ast-glsl@1.0.53/api.js","/npm/@thi.ng/shader-ast-glsl@1.0.53/target.js"],"names":[],"mappings":"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","file":"/npm/@thi.ng/shader-ast-glsl@1.0.53/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@thi.ng/shader-ast-glsl@1.0.53/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","var GLSLVersion = /* @__PURE__ */ ((GLSLVersion2) => {\n  GLSLVersion2[\"GLES_100\"] = \"100\";\n  GLSLVersion2[\"GLES_300\"] = \"300 es\";\n  return GLSLVersion2;\n})(GLSLVersion || {});\nexport {\n  GLSLVersion\n};\n","import { isBoolean } from \"@thi.ng/checks/is-boolean\";\nimport { isNumber } from \"@thi.ng/checks/is-number\";\nimport { unsupported } from \"@thi.ng/errors/unsupported\";\nimport { F, V2, V4 } from \"@thi.ng/shader-ast/api/types\";\nimport { isMat, isVec } from \"@thi.ng/shader-ast/ast/checks\";\nimport { itemType } from \"@thi.ng/shader-ast/ast/item\";\nimport { sym } from \"@thi.ng/shader-ast/ast/sym\";\nimport { defTarget } from \"@thi.ng/shader-ast/target\";\nimport { GLSLVersion } from \"./api.js\";\nconst RE_SEMI = /[};]$/;\nconst targetGLSL = (opts) => {\n  const _opts = {\n    type: \"fs\",\n    version: GLSLVersion.GLES_300,\n    versionPragma: true,\n    prelude: \"\",\n    ...opts\n  };\n  const isVS = _opts.type === \"vs\";\n  const ff = _opts.prec !== void 0 ? (x) => x === (x | 0) ? x + \".0\" : x.toFixed(_opts.prec) : (x) => x === (x | 0) ? x + \".0\" : String(x);\n  const $type = (t) => t;\n  const $list = (body, sep = \", \") => body.map(emit).join(sep);\n  const $fn = (t) => `${t.id}(${$list(t.args)})`;\n  const $decl = (sym2, arg = false) => {\n    const { id, type, opts: opts2, init } = sym2;\n    const res = [];\n    if (opts2.type) {\n      let type2;\n      if (_opts.version < GLSLVersion.GLES_300) {\n        if (isVS) {\n          type2 = {\n            in: \"attribute\",\n            out: \"varying\",\n            uni: \"uniform\"\n          }[opts2.type];\n        } else {\n          type2 = {\n            in: \"varying\",\n            out: null,\n            uni: \"uniform\"\n          }[opts2.type];\n          !type2 && unsupported(\n            \"GLSL 100 doesn't support fragment shader output variables\"\n          );\n        }\n      } else {\n        opts2.loc != null && res.push(`layout(location=${opts2.loc}) `);\n        opts2.smooth != null && res.push(opts2.smooth + \" \");\n        type2 = opts2.type === \"uni\" ? \"uniform\" : opts2.type;\n      }\n      res.push(type2 + \" \");\n    } else {\n      opts2.const && res.push(\"const \");\n      arg && opts2.q && res.push(opts2.q + \" \");\n    }\n    opts2.prec && res.push(opts2.prec + \" \");\n    res.push($type(itemType(type)), \" \", id);\n    opts2.num && res.push(`[${opts2.num}]`);\n    init && res.push(\" = \", emit(init));\n    return res.join(\"\");\n  };\n  const emitIndex = (t) => `${emit(t.val)}[${emit(t.id)}]`;\n  const emit = defTarget({\n    arg: (t) => $decl(t, true),\n    array_init: (t) => _opts.version >= GLSLVersion.GLES_300 ? `${t.type}(${$list(t.init)})` : unsupported(\n      `array initializers not available in GLSL ${_opts.version}`\n    ),\n    assign: (t) => emit(t.l) + \" = \" + emit(t.r),\n    ctrl: (t) => t.id,\n    call: $fn,\n    call_i: (t) => t.id === \"texture\" && _opts.version < GLSLVersion.GLES_300 ? `${t.id}${t.args[0].type.substring(7)}(${$list(\n      t.args\n    )})` : $fn(t),\n    decl: (t) => $decl(t.id),\n    fn: (t) => `${$type(t.type)} ${t.id}(${$list(t.args)}) ${emit(t.scope)}`,\n    for: (t) => `for(${t.init ? emit(t.init) : \"\"}; ${emit(t.test)}; ${t.iter ? emit(t.iter) : \"\"}) ${emit(t.scope)}`,\n    idx: emitIndex,\n    idxm: emitIndex,\n    if: (t) => {\n      const res = `if (${emit(t.test)}) ` + emit(t.t);\n      return t.f ? res + \" else \" + emit(t.f) : res;\n    },\n    lit: (t) => {\n      const v = t.val;\n      switch (t.type) {\n        case \"bool\":\n          return isBoolean(v) ? String(v) : `bool(${emit(v)})`;\n        case \"float\":\n          return isNumber(v) ? ff(v) : `float(${emit(v)})`;\n        case \"int\":\n          return isNumber(v) ? String(v) : `int(${emit(v)})`;\n        case \"uint\":\n          return isNumber(v) ? `${v}u` : `uint(${emit(v)})`;\n        default: {\n          if (isVec(t) || isMat(t)) {\n            return `${t.type}(${$list(v)})`;\n          }\n          return unsupported(`unknown type: ${t.type}`);\n        }\n      }\n    },\n    op1: (t) => t.post ? `(${emit(t.val)}${t.op})` : `(${t.op}${emit(t.val)})`,\n    op2: (t) => `(${emit(t.l)} ${t.op} ${emit(t.r)})`,\n    ret: (t) => \"return\" + (t.val ? \" \" + emit(t.val) : \"\"),\n    scope: (t) => {\n      let res = t.body.map(emit).reduce(\n        (acc, x) => (acc.push(RE_SEMI.test(x) ? x : x + \";\"), acc),\n        []\n      ).join(\"\\n\");\n      res += t.body.length && !RE_SEMI.test(res) ? \";\" : \"\";\n      if (!t.global) {\n        return `{\n${res}\n}`;\n      }\n      if (_opts.prelude) {\n        res = _opts.prelude + \"\\n\" + res;\n      }\n      if (_opts.versionPragma) {\n        res = `#version ${_opts.version}\n` + res;\n      }\n      return res;\n    },\n    swizzle: (t) => `${emit(t.val)}.${t.id}`,\n    sym: (t) => t.id,\n    ternary: (t) => `(${emit(t.test)} ? ${emit(t.t)} : ${emit(t.f)})`,\n    while: (t) => `while (${emit(t.test)}) ${emit(t.scope)}`\n  });\n  Object.assign(emit, {\n    gl_FragColor: sym(V4, \"gl_FragColor\"),\n    gl_FragCoord: sym(V4, \"gl_FragCoord\", { const: true }),\n    gl_FragData: sym(\"vec4[]\", \"gl_FragData\", { num: 1 }),\n    gl_FrontFacing: sym(\"bool\", \"gl_FrontFacing\", { const: true }),\n    gl_PointCoord: sym(V2, \"gl_PointCoord\", { const: true }),\n    gl_PointSize: sym(F, \"gl_PointSize\"),\n    gl_Position: sym(V4, \"gl_Position\")\n  });\n  return emit;\n};\nexport {\n  targetGLSL\n};\n"]}