{"version":3,"file":"compileInputs.mjs","sources":["../../../../../src/rendering/high-shader/compiler/utils/compileInputs.ts"],"sourcesContent":["function extractInputs(fragmentSource: string, out: string[])\n{\n    let match;\n    const regex = /@in\\s+([^;]+);/g;\n\n    while ((match = regex.exec(fragmentSource)) !== null)\n    {\n        out.push(match[1]);\n    }\n}\n\n/**\n * @param fragments\n * @param template\n * @param sort\n * @internal\n */\nexport function compileInputs(fragments: any[], template: string, sort = false)\n{\n    // get all the inputs from the fragments..\n    const results: string[] = [];\n\n    extractInputs(template, results);\n\n    fragments.forEach((fragment) =>\n    {\n        if (fragment.header)\n        {\n            extractInputs(fragment.header, results);\n        }\n    });\n\n    // build the input:\n    const mainInput = results;\n\n    if (sort)\n    {\n        mainInput.sort();\n    }\n\n    const finalString = mainInput\n        .map((inValue, i) => `       @location(${i}) ${inValue},`)\n        .join('\\n');\n\n    // Remove lines from original string\n    let cleanedString = template.replace(/@in\\s+[^;]+;\\s*/g, '');\n\n    cleanedString = cleanedString.replace('{{in}}', `\\n${finalString}\\n`);\n\n    return cleanedString;\n}\n"],"names":[],"mappings":";AAAA,SAAS,aAAA,CAAc,gBAAwB,GAAA,EAC/C;AACI,EAAA,IAAI,KAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,iBAAA;AAEd,EAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,cAAc,OAAO,IAAA,EAChD;AACI,IAAA,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EACrB;AACJ;AAQO,SAAS,aAAA,CAAc,SAAA,EAAkB,QAAA,EAAkB,IAAA,GAAO,KAAA,EACzE;AAEI,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,aAAA,CAAc,UAAU,OAAO,CAAA;AAE/B,EAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,QAAA,KACnB;AACI,IAAA,IAAI,SAAS,MAAA,EACb;AACI,MAAA,aAAA,CAAc,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,IAC1C;AAAA,EACJ,CAAC,CAAA;AAGD,EAAA,MAAM,SAAA,GAAY,OAAA;AAElB,EAAA,IAAI,IAAA,EACJ;AACI,IAAA,SAAA,CAAU,IAAA,EAAK;AAAA,EACnB;AAEA,EAAA,MAAM,WAAA,GAAc,SAAA,CACf,GAAA,CAAI,CAAC,OAAA,EAAS,CAAA,KAAM,CAAA,iBAAA,EAAoB,CAAC,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,CAAG,CAAA,CACxD,KAAK,IAAI,CAAA;AAGd,EAAA,IAAI,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,kBAAA,EAAoB,EAAE,CAAA;AAE3D,EAAA,aAAA,GAAgB,aAAA,CAAc,QAAQ,QAAA,EAAU;AAAA,EAAK,WAAW;AAAA,CAAI,CAAA;AAEpE,EAAA,OAAO,aAAA;AACX;;;;"}