aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-js-templates.min.js
blob: c3171c148b110ab0edc05f494bc0e0f6fd0d7d64 (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
142
143
144
145
146
!(function (u) {
  var e = u.languages.javascript['template-string'],
    n = e.pattern.source,
    a = e.inside.interpolation,
    i = a.inside['interpolation-punctuation'],
    r = a.pattern.source;
  function t(e, t) {
    if (u.languages[e])
      return {
        pattern: RegExp('((?:' + t + ')\\s*)' + n),
        lookbehind: !0,
        greedy: !0,
        inside: {
          'template-punctuation': { pattern: /^`|`$/, alias: 'string' },
          'embedded-code': { pattern: /[\s\S]+/, alias: e },
        },
      };
  }
  function s(e, t, n) {
    var r = { code: e, grammar: t, language: n };
    return (
      u.hooks.run('before-tokenize', r),
      (r.tokens = u.tokenize(r.code, r.grammar)),
      u.hooks.run('after-tokenize', r),
      r.tokens
    );
  }
  function d(e) {
    var t = {};
    t['interpolation-punctuation'] = i;
    var n = u.tokenize(e, t);
    if (3 === n.length) {
      var r = [1, 1];
      r.push.apply(r, s(n[1], u.languages.javascript, 'javascript')),
        n.splice.apply(n, r);
    }
    return new u.Token('interpolation', n, a.alias, e);
  }
  function c(a, e, i) {
    var t = u.tokenize(a, {
        interpolation: { pattern: RegExp(r), lookbehind: !0 },
      }),
      f = 0,
      y = {},
      n = s(
        t
          .map(function (e) {
            if ('string' == typeof e) return e;
            for (
              var t, n = e.content;
              -1 !==
              a.indexOf(
                ((r = f++), (t = '___' + i.toUpperCase() + '_' + r + '___'))
              );

            );
            return (y[t] = n), t;
            var r;
          })
          .join(''),
        e,
        i
      ),
      v = Object.keys(y);
    return (
      (f = 0),
      (function e(t) {
        for (var n = 0; n < t.length; n++) {
          if (f >= v.length) return;
          var r = t[n];
          if ('string' == typeof r || 'string' == typeof r.content) {
            var a = v[f],
              i = 'string' == typeof r ? r : r.content,
              s = i.indexOf(a);
            if (-1 !== s) {
              ++f;
              var o = i.substring(0, s),
                p = d(y[a]),
                l = i.substring(s + a.length),
                g = [];
              if ((o && g.push(o), g.push(p), l)) {
                var u = [l];
                e(u), g.push.apply(g, u);
              }
              'string' == typeof r
                ? (t.splice.apply(t, [n, 1].concat(g)), (n += g.length - 1))
                : (r.content = g);
            }
          } else {
            var c = r.content;
            Array.isArray(c) ? e(c) : e([c]);
          }
        }
      })(n),
      new u.Token(i, n, 'language-' + i, a)
    );
  }
  u.languages.javascript['template-string'] = [
    t(
      'css',
      '\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)'
    ),
    t('html', '\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?='),
    t('svg', '\\bsvg'),
    t('markdown', '\\b(?:markdown|md)'),
    t('graphql', '\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)'),
    t('sql', '\\bsql'),
    e,
  ].filter(Boolean);
  var o = { javascript: !0, js: !0, typescript: !0, ts: !0, jsx: !0, tsx: !0 };
  function f(e) {
    return 'string' == typeof e
      ? e
      : Array.isArray(e)
      ? e.map(f).join('')
      : f(e.content);
  }
  u.hooks.add('after-tokenize', function (e) {
    e.language in o &&
      !(function e(t) {
        for (var n = 0, r = t.length; n < r; n++) {
          var a = t[n];
          if ('string' != typeof a) {
            var i = a.content;
            if (Array.isArray(i))
              if ('template-string' === a.type) {
                var s = i[1];
                if (
                  3 === i.length &&
                  'string' != typeof s &&
                  'embedded-code' === s.type
                ) {
                  var o = f(s),
                    p = s.alias,
                    l = Array.isArray(p) ? p[0] : p,
                    g = u.languages[l];
                  if (!g) continue;
                  i[1] = c(o, g, l);
                }
              } else e(i);
            else 'string' != typeof i && e([i]);
          }
        }
      })(e.tokens);
  });
})(Prism);