import {
  __commonJS
} from "/build/_shared/chunk-PNG5AS42.js";

// ../../node_modules/refractor/lang/naniscript.js
var require_naniscript = __commonJS({
  "../../node_modules/refractor/lang/naniscript.js"(exports, module) {
    module.exports = naniscript;
    naniscript.displayName = "naniscript";
    naniscript.aliases = [];
    function naniscript(Prism) {
      ;
      (function(Prism2) {
        var expressionDef = /\{[^\r\n\[\]{}]*\}/;
        var params = {
          "quoted-string": {
            pattern: /"(?:[^"\\]|\\.)*"/,
            alias: "operator"
          },
          "command-param-id": {
            pattern: /(\s)\w+:/,
            lookbehind: true,
            alias: "property"
          },
          "command-param-value": [
            {
              pattern: expressionDef,
              alias: "selector"
            },
            {
              pattern: /([\t ])\S+/,
              lookbehind: true,
              greedy: true,
              alias: "operator"
            },
            {
              pattern: /\S(?:.*\S)?/,
              alias: "operator"
            }
          ]
        };
        Prism2.languages.naniscript = {
          // ; ...
          comment: {
            pattern: /^([\t ]*);.*/m,
            lookbehind: true
          },
          // > ...
          // Define is a control line starting with '>' followed by a word, a space and a text.
          define: {
            pattern: /^>.+/m,
            alias: "tag",
            inside: {
              value: {
                pattern: /(^>\w+[\t ]+)(?!\s)[^{}\r\n]+/,
                lookbehind: true,
                alias: "operator"
              },
              key: {
                pattern: /(^>)\w+/,
                lookbehind: true
              }
            }
          },
          // # ...
          label: {
            pattern: /^([\t ]*)#[\t ]*\w+[\t ]*$/m,
            lookbehind: true,
            alias: "regex"
          },
          command: {
            pattern: /^([\t ]*)@\w+(?=[\t ]|$).*/m,
            lookbehind: true,
            alias: "function",
            inside: {
              "command-name": /^@\w+/,
              expression: {
                pattern: expressionDef,
                greedy: true,
                alias: "selector"
              },
              "command-params": {
                pattern: /\s*\S[\s\S]*/,
                inside: params
              }
            }
          },
          // Generic is any line that doesn't start with operators: ;>#@
          "generic-text": {
            pattern: /(^[ \t]*)[^#@>;\s].*/m,
            lookbehind: true,
            alias: "punctuation",
            inside: {
              // \{ ... \} ... \[ ... \] ... \"
              "escaped-char": /\\[{}\[\]"]/,
              expression: {
                pattern: expressionDef,
                greedy: true,
                alias: "selector"
              },
              "inline-command": {
                pattern: /\[[\t ]*\w[^\r\n\[\]]*\]/,
                greedy: true,
                alias: "function",
                inside: {
                  "command-params": {
                    pattern: /(^\[[\t ]*\w+\b)[\s\S]+(?=\]$)/,
                    lookbehind: true,
                    inside: params
                  },
                  "command-param-name": {
                    pattern: /^(\[[\t ]*)\w+/,
                    lookbehind: true,
                    alias: "name"
                  },
                  "start-stop-char": /[\[\]]/
                }
              }
            }
          }
        };
        Prism2.languages.nani = Prism2.languages["naniscript"];
        Prism2.hooks.add("after-tokenize", function(env) {
          var tokens = env.tokens;
          tokens.forEach(function(token) {
            if (typeof token !== "string" && token.type === "generic-text") {
              var content = getTextContent(token);
              if (!isBracketsBalanced(content)) {
                token.type = "bad-line";
                token.content = content;
              }
            }
          });
        });
        function isBracketsBalanced(input) {
          var brackets = "[]{}";
          var stack = [];
          for (var i = 0; i < input.length; i++) {
            var bracket = input[i];
            var bracketsIndex = brackets.indexOf(bracket);
            if (bracketsIndex !== -1) {
              if (bracketsIndex % 2 === 0) {
                stack.push(bracketsIndex + 1);
              } else if (stack.pop() !== bracketsIndex) {
                return false;
              }
            }
          }
          return stack.length === 0;
        }
        function getTextContent(token) {
          if (typeof token === "string") {
            return token;
          } else if (Array.isArray(token)) {
            return token.map(getTextContent).join("");
          } else {
            return getTextContent(token.content);
          }
        }
      })(Prism);
    }
  }
});

export {
  require_naniscript
};
//# sourceMappingURL=/build/_shared/chunk-2UMR6Q35.js.map
