aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-js-templates.min.js
blob: 0a4a47fa7710520902cd9b07445938d2a1f83550 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
!(function (e) {
  var t = e.languages.javascript['template-string'],
    n = t.pattern.source,
    r = t.inside.interpolation,
    a = r.inside['interpolation-punctuation'],
    i = r.pattern.source;
  function o(t, r) {
    if (e.languages[t])
      return {
        pattern: RegExp('((?:' + r + ')\\s*)' + n),
        lookbehind: !0,
        greedy: !0,
        inside: {
          'template-punctuation': { pattern: /^`|`$/, alias: 'string' },
          'embedded-code': { pattern: /[\s\S]+/, alias: t },
        },
      };
  }
  function s(e, t) {
    return '___' + t.toUpperCase() + '_' + e + '___';
  }
  function p(t, n, r) {
    var a = { code: t, grammar: n, language: r };
    return (
      e.hooks.run('before-tokenize', a),
      (a.tokens = e.tokenize(a.code, a.grammar)),
      e.hooks.run('after-tokenize', a),
      a.tokens
    );
  }
  function l(t) {
    var n = {};
    n['interpolation-punctuation'] = a;
    var i = e.tokenize(t, n);
    if (3 === i.length) {
      var o = [1, 1];
      o.push.apply(o, p(i[1], e.languages.javascript, 'javascript')),
        i.splice.apply(i, o);
    }
    return new e.Token('interpolation', i, r.alias, t);
  }
  function g(t, n, r) {
    var a = e.tokenize(t, {
        interpolation: { pattern: RegExp(i), lookbehind: !0 },
      }),
      o = 0,
      g = {},
      u = p(
        a
          .map(function (e) {
            if ('string' == typeof e) return e;
            for (var n, a = e.content; -1 !== t.indexOf((n = s(o++, r))); );
            return (g[n] = a), n;
          })
          .join(''),
        n,
        r
      ),
      c = Object.keys(g);
    return (
      (o = 0),
      (function e(t) {
        for (var n = 0; n < t.length; n++) {
          if (o >= c.length) return;
          var r = t[n];
          if ('string' == typeof r || 'string' == typeof r.content) {
            var a = c[o],
              i = 'string' == typeof r ? r : r.content,
              s = i.indexOf(a);
            if (-1 !== s) {
              ++o;
              var p = i.substring(0, s),
                u = l(g[a]),
                f = i.substring(s + a.length),
                y = [];
              if ((p && y.push(p), y.push(u), f)) {
                var v = [f];
                e(v), y.push.apply(y, v);
              }
              'string' == typeof r
                ? (t.splice.apply(t, [n, 1].concat(y)), (n += y.length - 1))
                : (r.content = y);
            }
          } else {
            var d = r.content;
            Array.isArray(d) ? e(d) : e([d]);
          }
        }
      })(u),
      new e.Token(r, u, 'language-' + r, t)
    );
  }
  e.languages.javascript['template-string'] = [
    o(
      'css',
      '\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)'
    ),
    o('html', '\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?='),
    o('svg', '\\bsvg'),
    o('markdown', '\\b(?:markdown|md)'),
    o('graphql', '\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)'),
    o('sql', '\\bsql'),
    t,
  ].filter(Boolean);
  var u = { javascript: !0, js: !0, typescript: !0, ts: !0, jsx: !0, tsx: !0 };
  function c(e) {
    return 'string' == typeof e
      ? e
      : Array.isArray(e)
      ? e.map(c).join('')
      : c(e.content);
  }
  e.hooks.add('after-tokenize', function (t) {
    t.language in u &&
      (function t(n) {
        for (var r = 0, a = n.length; r < a; r++) {
          var i = n[r];
          if ('string' != typeof i) {
            var o = i.content;
            if (Array.isArray(o))
              if ('template-string' === i.type) {
                var s = o[1];
                if (
                  3 === o.length &&
                  'string' != typeof s &&
                  'embedded-code' === s.type
                ) {
                  var p = c(s),
                    l = s.alias,
                    u = Array.isArray(l) ? l[0] : l,
                    f = e.languages[u];
                  if (!f) continue;
                  o[1] = g(p, f, u);
                }
              } else t(o);
            else 'string' != typeof o && t([o]);
          }
        }
      })(t.tokens);
  });
})(Prism);