PageSourceSearch

https://www.tomorrow.city/wp-content/themes/tc/base/jwplayer-8.30.1/vttparser.js

js tomorrow.city collected 2026-10-02 03:06:12 UTC 9,728 bytes, 275 lines download raw bytes

1/*!
2   JW Player version 8.30.1
3   Copyright (c) 2023, JW Player, All Rights Reserved
4   This source code and its use and distribution is subject to the terms
5   and conditions of the applicable license agreement.
6   https://www.jwplayer.com/tos/
7   This product includes portions of other software. For the full text of licenses, see
8   https://ssl.p.jwpcdn.com/player/v/8.30.1/notice.txt
9*/
10'use strict';
11(self.webpackChunkjwplayer = self.webpackChunkjwplayer || []).push([
12  [347],
13  {
14    2776: (e, t, s) => {
15      s.r(t), s.d(t, { default: () => k });
16      var n = s(1776),
17        r = s(7477);
18      const i = /^(\d+):(\d{2})(:\d{2})?\.(\d{3})/,
19        a = /^-?\d+$/,
20        o = /\r\n|\n/,
21        c = /^NOTE($|[ \t])/,
22        l = /^[^\sa-zA-Z-]+/,
23        u = /:/,
24        f = /\s/,
25        h = /^\s+/,
26        g = /-->/,
27        d = /^WEBVTT([ \t].*)?$/,
28        p = function () {
29          return {
30            decode(e) {
31              if (!e) return '';
32              if ('string' != typeof e) throw new Error('Error - expected string data.');
33              return decodeURIComponent(encodeURIComponent(e));
34            },
35          };
36        },
37        b = function (e, t, s) {
38          (this.window = e),
39            (this.state = 'INITIAL'),
40            (this.buffer = ''),
41            (this.decoder = t || new p()),
42            (this.syncCueParsing = s),
43            (this.regionList = []),
44            (this.maxCueBatch = 1e3);
45        },
46        E = function () {
47          this.values = Object.create(null);
48        };
49      E.prototype = {
50        set(e, t) {
51          this.get(e) || '' === t || (this.values[e] = t);
52        },
53        get(e, t, s) {
54          return s ? (this.has(e) ? this.values[e] : t[s]) : this.has(e) ? this.values[e] : t;
55        },
56        has(e) {
57          return e in this.values;
58        },
59        alt(e, t, s) {
60          for (let n = 0; n < s.length; ++n)
61            if (t === s[n]) {
62              this.set(e, t);
63              break;
64            }
65        },
66        integer(e, t) {
67          a.test(t) && this.set(e, parseInt(t, 10));
68        },
69        percent(e, t) {
70          return (t = parseFloat(t)) >= 0 && t <= 100 && (this.set(e, t), !0);
71        },
72      };
73      const T = new r.Z(0, 0, 0),
74        m = 'middle' === T.align ? 'middle' : 'center',
75        w = function (e, t, s) {
76          const n = e,
77            r = () => {
78              const t = ((e) => {
79                const t = (e, t, s, n) => 3600 * (0 | e) + 60 * (0 | t) + (0 | s) + (0 | n) / 1e3,
80                  s = e.match(i);
81                return s
82                  ? s[3]
83                    ? t(s[1], s[2], s[3].replace(':', ''), s[4])
84                    : s[1] > 59
85                      ? t(s[1], s[2], 0, s[4])
86                      : t(0, s[1], s[2], s[4])
87                  : null;
88              })(e);
89              if (null === t) throw new Error(`Malformed timestamp: ${n}`);
90              return (e = e.replace(l, '')), t;
91            },
92            a = () => {
93              e = e.replace(h, '');
94            };
95          if ((a(), (t.startTime = r()), a(), '--\x3e' !== e.substr(0, 3)))
96            throw new Error(
97              `Malformed time stamp (time stamps must be separated by '--\x3e'): ${n}`,
98            );
99          (e = e.substr(3)),
100            a(),
101            (t.endTime = r()),
102            a(),
103            (function (e, t) {
104              const n = new E();
105              ((e, t, s, n) => {
106                const r = n ? e.split(n) : [e];
107                for (let e = 0; e <= r.length; e += 1) {
108                  if ('string' != typeof r[e]) continue;
109                  const n = r[e].split(s);
110                  2 === n.length && t(n[0], n[1]);
111                }
112              })(
113                e,
114                function (e, t) {
115                  switch (e) {
116                    case 'region':
117                      for (let r = s.length - 1; r >= 0; r--)
118                        if (s[r].id === t) {
119                          n.set(e, s[r].region);
120                          break;
121                        }
122                      break;
123                    case 'vertical':
124                      n.alt(e, t, ['rl', 'lr']);
125                      break;
126                    case 'line': {
127                      const s = t.split(','),
128                        r = s[0];
129                      n.integer(e, r),
130                        n.percent(e, r) && n.set('snapToLines', !1),
131                        n.alt(e, r, ['auto']),
132                        2 === s.length && n.alt('lineAlign', s[1], ['start', m, 'end']);
133                      break;
134                    }
135                    case 'position': {
136                      const s = t.split(',');
137                      n.percent(e, s[0]),
138                        2 === s.length &&
139                          n.alt('positionAlign', s[1], [
140                            'start',
141                            m,
142                            'end',
143                            'line-left',
144                            'line-right',
145                            'auto',
146                          ]);
147                      break;
148                    }
149                    case 'size':
150                      n.percent(e, t);
151                      break;
152                    case 'align':
153                      n.alt(e, t, ['start', m, 'end', 'left', 'right']);
154                  }
155                },
156                u,
157                f,
158              ),
159                (t.region = n.get('region', null)),
160                (t.vertical = n.get('vertical', ''));
161              let r = n.get('line', 'auto');
162              'auto' === r && -1 === T.line && (r = -1),
163                (t.line = r),
164                (t.lineAlign = n.get('lineAlign', 'start')),
165                (t.snapToLines = n.get('snapToLines', !0)),
166                (t.size = n.get('size', 100)),
167                (t.align = n.get('align', m));
168              let i = n.get('position', 'auto');
169              'auto' === i &&
170                50 === T.position &&
171                (i =
172                  'start' === t.align || 'left' === t.align
173                    ? 0
174                    : 'end' === t.align || 'right' === t.align
175                      ? 100
176                      : 50),
177                (t.position = i);
178            })(e, t);
179        };
180      b.prototype = {
181        parse(e, t) {
182          const s = this;
183          e && (s.buffer += s.decoder.decode(e, { stream: !0 }));
184          const i = function () {
185              const e = s.buffer;
186              let t = 0;
187              for (; t < e.length && '\r' !== e[t] && '\n' !== e[t]; ) ++t;
188              const n = e.substr(0, t);
189              return '\r' === e[t] && ++t, '\n' === e[t] && ++t, (s.buffer = e.substr(t)), n;
190            },
191            a = function () {
192              'CUETEXT' === s.state && s.cue && s.oncue && s.oncue(s.cue),
193                (s.cue = null),
194                (s.state = 'INITIAL' === s.state ? 'BADWEBVTT' : 'BADCUE');
195            };
196          let l;
197          try {
198            if ('INITIAL' === s.state) {
199              if (!o.test(s.buffer)) return this;
200              l = i();
201              const e = l.match(d);
202              if (!e || !e[0]) throw new Error('Malformed WebVTT signature.');
203              s.state = 'HEADER';
204            }
205          } catch (e) {
206            return a(), this;
207          }
208          let f = !1,
209            h = 0;
210          const p = function () {
211            try {
212              for (; s.buffer && (h <= s.maxCueBatch || s.syncCueParsing); ) {
213                if (!o.test(s.buffer)) return s.flush(), this;
214                switch ((f ? (f = !1) : (l = i()), s.state)) {
215                  case 'HEADER':
216                    u.test(l) || l || (s.state = 'ID');
217                    break;
218                  case 'NOTE':
219                    l || (s.state = 'ID');
220                    break;
221                  case 'ID':
222                    if (c.test(l)) {
223                      s.state = 'NOTE';
224                      break;
225                    }
226                    if (!l) break;
227                    if (((s.cue = new r.Z(0, 0, '')), (s.state = 'CUE'), !g.test(l))) {
228                      s.cue.id = l;
229                      break;
230                    }
231                  case 'CUE':
232                    try {
233                      w(l, s.cue, s.regionList);
234                    } catch (e) {
235                      (s.cue = null), (s.state = 'BADCUE');
236                      break;
237                    }
238                    s.state = 'CUETEXT';
239                    break;
240                  case 'CUETEXT': {
241                    const e = g.test(l);
242                    if ((!l || e) && (f = !0)) {
243                      s.oncue && ((h += 1), s.oncue(s.cue)), (s.cue = null), (s.state = 'ID');
244                      break;
245                    }
246                    s.cue.text && (s.cue.text += '\n'), (s.cue.text += l);
247                    break;
248                  }
249                  case 'BADCUE':
250                    l || (s.state = 'ID');
251                }
252              }
253              if (((h = 0), s.buffer)) (0, n.U)(p);
254              else if (!t) return s.flush(), this;
255            } catch (e) {
256              return a(), this;
257            }
258          };
259          p();
260        },
261        flush() {
262          const e = this;
263          if (
264            ((e.buffer += e.decoder.decode()),
265            (e.cue || 'HEADER' === e.state) && ((e.buffer += '\n\n'), e.parse(void 0, !0)),
266            'INITIAL' === e.state)
267          )
268            throw new Error('Malformed WebVTT signature.');
269          return e.onflush && e.onflush(), this;
270        },
271      };
272      const k = b;
273    },
274  },
275]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.