markmap-lib 0.17.2-alpha.0 → 0.17.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,8 +79,7 @@
79
79
  }
80
80
  revoke(fn) {
81
81
  const i = this.listeners.indexOf(fn);
82
- if (i >= 0)
83
- this.listeners.splice(i, 1);
82
+ if (i >= 0) this.listeners.splice(i, 1);
84
83
  }
85
84
  revokeAll() {
86
85
  this.listeners.splice(0);
@@ -151,12 +150,9 @@
151
150
  }
152
151
  function jsx(type, props) {
153
152
  let vtype;
154
- if (typeof type === "string")
155
- vtype = VTYPE_ELEMENT;
156
- else if (typeof type === "function")
157
- vtype = VTYPE_FUNCTION;
158
- else
159
- throw new Error("Invalid VNode type");
153
+ if (typeof type === "string") vtype = VTYPE_ELEMENT;
154
+ else if (typeof type === "function") vtype = VTYPE_FUNCTION;
155
+ else throw new Error("Invalid VNode type");
160
156
  return {
161
157
  vtype,
162
158
  type,
@@ -170,22 +166,18 @@
170
166
  isSvg: false
171
167
  };
172
168
  function insertDom(parent2, nodes) {
173
- if (!Array.isArray(nodes))
174
- nodes = [nodes];
169
+ if (!Array.isArray(nodes)) nodes = [nodes];
175
170
  nodes = nodes.filter(Boolean);
176
- if (nodes.length)
177
- parent2.append(...nodes);
171
+ if (nodes.length) parent2.append(...nodes);
178
172
  }
179
173
  function mountAttributes(domElement, props, env) {
180
174
  for (const key in props) {
181
- if (key === "key" || key === "children" || key === "ref")
182
- continue;
175
+ if (key === "key" || key === "children" || key === "ref") continue;
183
176
  if (key === "dangerouslySetInnerHTML") {
184
177
  domElement.innerHTML = props[key].__html;
185
178
  } else if (key === "innerHTML" || key === "textContent" || key === "innerText" || key === "value" && ["textarea", "select"].includes(domElement.tagName)) {
186
179
  const value = props[key];
187
- if (value != null)
188
- domElement[key] = value;
180
+ if (value != null) domElement[key] = value;
189
181
  } else if (key.startsWith("on")) {
190
182
  domElement[key.toLowerCase()] = props[key];
191
183
  } else {
@@ -212,11 +204,11 @@
212
204
  }
213
205
  }
214
206
  }
215
- function flatten$1(arr) {
207
+ function flatten(arr) {
216
208
  return arr.reduce((prev2, item) => prev2.concat(item), []);
217
209
  }
218
210
  function mountChildren(children2, env) {
219
- return Array.isArray(children2) ? flatten$1(children2.map((child) => mountChildren(child, env))) : mount(children2, env);
211
+ return Array.isArray(children2) ? flatten(children2.map((child) => mountChildren(child, env))) : mount(children2, env);
220
212
  }
221
213
  function mount(vnode, env = DEFAULT_ENV) {
222
214
  if (vnode == null || typeof vnode === "boolean") {
@@ -269,14 +261,12 @@
269
261
  });
270
262
  }
271
263
  const children2 = mountChildren(props.children, childEnv);
272
- if (children2 != null)
273
- insertDom(node, children2);
264
+ if (children2 != null) insertDom(node, children2);
274
265
  }
275
266
  const {
276
267
  ref
277
268
  } = props;
278
- if (typeof ref === "function")
279
- ref(node);
269
+ if (typeof ref === "function") ref(node);
280
270
  return node;
281
271
  }
282
272
  throw new Error("mount: Invalid Vnode!");
@@ -357,17 +347,6 @@
357
347
  }
358
348
  };
359
349
  }
360
- const defaultOpts$2 = {
361
- xml: false,
362
- decodeEntities: true
363
- };
364
- const xmlModeDefault = {
365
- _useHtmlParser2: true,
366
- xmlMode: true
367
- };
368
- function flatten(options) {
369
- return (options === null || options === void 0 ? void 0 : options.xml) ? typeof options.xml === "boolean" ? xmlModeDefault : { ...xmlModeDefault, ...options.xml } : options !== null && options !== void 0 ? options : void 0;
370
- }
371
350
  var ElementType;
372
351
  (function(ElementType2) {
373
352
  ElementType2["Root"] = "root";
@@ -653,7 +632,7 @@
653
632
  }
654
633
  return children2;
655
634
  }
656
- const defaultOpts$1 = {
635
+ const defaultOpts$2 = {
657
636
  withStartIndices: false,
658
637
  withEndIndices: false,
659
638
  xmlMode: false
@@ -673,14 +652,14 @@
673
652
  this.parser = null;
674
653
  if (typeof options === "function") {
675
654
  elementCB = options;
676
- options = defaultOpts$1;
655
+ options = defaultOpts$2;
677
656
  }
678
657
  if (typeof callback === "object") {
679
658
  options = callback;
680
659
  callback = void 0;
681
660
  }
682
661
  this.callback = callback !== null && callback !== void 0 ? callback : null;
683
- this.options = options !== null && options !== void 0 ? options : defaultOpts$1;
662
+ this.options = options !== null && options !== void 0 ? options : defaultOpts$2;
684
663
  this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
685
664
  }
686
665
  onparserinit(parser) {
@@ -867,14 +846,14 @@
867
846
  BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
868
847
  BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
869
848
  })(BinTrieFlags || (BinTrieFlags = {}));
870
- function isNumber$1(code2) {
849
+ function isNumber(code2) {
871
850
  return code2 >= CharCodes$1.ZERO && code2 <= CharCodes$1.NINE;
872
851
  }
873
852
  function isHexadecimalCharacter(code2) {
874
853
  return code2 >= CharCodes$1.UPPER_A && code2 <= CharCodes$1.UPPER_F || code2 >= CharCodes$1.LOWER_A && code2 <= CharCodes$1.LOWER_F;
875
854
  }
876
855
  function isAsciiAlphaNumeric$1(code2) {
877
- return code2 >= CharCodes$1.UPPER_A && code2 <= CharCodes$1.UPPER_Z || code2 >= CharCodes$1.LOWER_A && code2 <= CharCodes$1.LOWER_Z || isNumber$1(code2);
856
+ return code2 >= CharCodes$1.UPPER_A && code2 <= CharCodes$1.UPPER_Z || code2 >= CharCodes$1.LOWER_A && code2 <= CharCodes$1.LOWER_Z || isNumber(code2);
878
857
  }
879
858
  function isEntityInAttributeInvalidEnd$1(code2) {
880
859
  return code2 === CharCodes$1.EQUALS || isAsciiAlphaNumeric$1(code2);
@@ -991,7 +970,7 @@
991
970
  const startIdx = offset;
992
971
  while (offset < str.length) {
993
972
  const char = str.charCodeAt(offset);
994
- if (isNumber$1(char) || isHexadecimalCharacter(char)) {
973
+ if (isNumber(char) || isHexadecimalCharacter(char)) {
995
974
  offset += 1;
996
975
  } else {
997
976
  this.addToNumericResult(str, startIdx, offset, 16);
@@ -1014,7 +993,7 @@
1014
993
  const startIdx = offset;
1015
994
  while (offset < str.length) {
1016
995
  const char = str.charCodeAt(offset);
1017
- if (isNumber$1(char)) {
996
+ if (isNumber(char)) {
1018
997
  offset += 1;
1019
998
  } else {
1020
999
  this.addToNumericResult(str, startIdx, offset, 10);
@@ -2055,20 +2034,42 @@
2055
2034
  textContent,
2056
2035
  uniqueSort
2057
2036
  }, Symbol.toStringTag, { value: "Module" }));
2037
+ const defaultOpts$1 = {
2038
+ _useHtmlParser2: false
2039
+ };
2040
+ function flattenOptions(options, baseOptions) {
2041
+ if (!options) {
2042
+ return baseOptions !== null && baseOptions !== void 0 ? baseOptions : defaultOpts$1;
2043
+ }
2044
+ const opts = {
2045
+ _useHtmlParser2: !!options.xmlMode,
2046
+ ...baseOptions,
2047
+ ...options
2048
+ };
2049
+ if (options.xml) {
2050
+ opts._useHtmlParser2 = true;
2051
+ opts.xmlMode = true;
2052
+ if (options.xml !== true) {
2053
+ Object.assign(opts, options.xml);
2054
+ }
2055
+ } else if (options.xmlMode) {
2056
+ opts._useHtmlParser2 = true;
2057
+ }
2058
+ return opts;
2059
+ }
2058
2060
  function render(that, dom, options) {
2059
2061
  if (!that)
2060
2062
  return "";
2061
2063
  return that(dom !== null && dom !== void 0 ? dom : that._root.children, null, void 0, options).toString();
2062
2064
  }
2063
2065
  function isOptions(dom, options) {
2064
- return !options && typeof dom === "object" && dom != null && !("length" in dom) && !("type" in dom);
2066
+ return typeof dom === "object" && dom != null && !("length" in dom) && !("type" in dom);
2065
2067
  }
2066
2068
  function html$1(dom, options) {
2067
2069
  const toRender = isOptions(dom) ? (options = dom, void 0) : dom;
2068
2070
  const opts = {
2069
- ...defaultOpts$2,
2070
2071
  ...this === null || this === void 0 ? void 0 : this._options,
2071
- ...flatten(options !== null && options !== void 0 ? options : {})
2072
+ ...flattenOptions(options)
2072
2073
  };
2073
2074
  return render(this, toRender, opts);
2074
2075
  }
@@ -2077,7 +2078,7 @@
2077
2078
  return render(this, dom, options);
2078
2079
  }
2079
2080
  function text$2(elements) {
2080
- const elems = elements ? elements : this ? this.root() : [];
2081
+ const elems = elements !== null && elements !== void 0 ? elements : this ? this.root() : [];
2081
2082
  let ret = "";
2082
2083
  for (let i = 0; i < elems.length; i++) {
2083
2084
  ret += textContent(elems[i]);
@@ -2091,11 +2092,11 @@
2091
2092
  if (typeof context === "boolean") {
2092
2093
  keepScripts = context;
2093
2094
  }
2094
- const parsed = this.load(data2, defaultOpts$2, false);
2095
+ const parsed = this.load(data2, this._options, false);
2095
2096
  if (!keepScripts) {
2096
2097
  parsed("script").remove();
2097
2098
  }
2098
- return parsed.root()[0].children.slice();
2099
+ return [...parsed.root()[0].children];
2099
2100
  }
2100
2101
  function root() {
2101
2102
  return this(this._root);
@@ -2113,6 +2114,9 @@
2113
2114
  }
2114
2115
  return false;
2115
2116
  }
2117
+ function extract$1(map2) {
2118
+ return this.root().extract(map2);
2119
+ }
2116
2120
  function merge(arr1, arr2) {
2117
2121
  if (!isArrayLike(arr1) || !isArrayLike(arr2)) {
2118
2122
  return;
@@ -2129,7 +2133,7 @@
2129
2133
  if (Array.isArray(item)) {
2130
2134
  return true;
2131
2135
  }
2132
- if (typeof item !== "object" || !Object.prototype.hasOwnProperty.call(item, "length") || typeof item.length !== "number" || item.length < 0) {
2136
+ if (typeof item !== "object" || item === null || !("length" in item) || typeof item.length !== "number" || item.length < 0) {
2133
2137
  return false;
2134
2138
  }
2135
2139
  for (let i = 0; i < item.length; i++) {
@@ -2142,6 +2146,7 @@
2142
2146
  const staticMethods = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2143
2147
  __proto__: null,
2144
2148
  contains,
2149
+ extract: extract$1,
2145
2150
  html: html$1,
2146
2151
  merge,
2147
2152
  parseHTML,
@@ -2153,7 +2158,7 @@
2153
2158
  return maybeCheerio.cheerio != null;
2154
2159
  }
2155
2160
  function camelCase(str) {
2156
- return str.replace(/[_.-](\w|$)/g, (_, x) => x.toUpperCase());
2161
+ return str.replace(/[._-](\w|$)/g, (_, x) => x.toUpperCase());
2157
2162
  }
2158
2163
  function cssCase(str) {
2159
2164
  return str.replace(/[A-Z]/g, "-$&").toLowerCase();
@@ -2164,14 +2169,6 @@
2164
2169
  fn(array[i], i);
2165
2170
  return array;
2166
2171
  }
2167
- function cloneDom(dom) {
2168
- const clone2 = "length" in dom ? Array.prototype.map.call(dom, (el) => cloneNode(el, true)) : [cloneNode(dom, true)];
2169
- const root2 = new Document$1(clone2);
2170
- clone2.forEach((node) => {
2171
- node.parent = root2;
2172
- });
2173
- return clone2;
2174
- }
2175
2172
  var CharacterCodes;
2176
2173
  (function(CharacterCodes2) {
2177
2174
  CharacterCodes2[CharacterCodes2["LowerA"] = 97] = "LowerA";
@@ -2190,11 +2187,6 @@
2190
2187
  const hasOwn = Object.prototype.hasOwnProperty;
2191
2188
  const rspace = /\s+/;
2192
2189
  const dataAttrPrefix = "data-";
2193
- const primitives = {
2194
- null: null,
2195
- true: true,
2196
- false: false
2197
- };
2198
2190
  const rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;
2199
2191
  const rbrace = /^{[^]*}$|^\[[^]*]$/;
2200
2192
  function getAttr(elem, name2, xmlMode) {
@@ -2240,10 +2232,10 @@
2240
2232
  if (!isTag(el))
2241
2233
  return;
2242
2234
  if (typeof name2 === "object") {
2243
- Object.keys(name2).forEach((objName) => {
2235
+ for (const objName of Object.keys(name2)) {
2244
2236
  const objValue = name2[objName];
2245
2237
  setAttr(el, objName, objValue);
2246
- });
2238
+ }
2247
2239
  } else {
2248
2240
  setAttr(el, name2, value);
2249
2241
  }
@@ -2274,9 +2266,9 @@
2274
2266
  case "style": {
2275
2267
  const property = this.css();
2276
2268
  const keys = Object.keys(property);
2277
- keys.forEach((p, i) => {
2278
- property[i] = p;
2279
- });
2269
+ for (let i = 0; i < keys.length; i++) {
2270
+ property[i] = keys[i];
2271
+ }
2280
2272
  property.length = keys.length;
2281
2273
  return property;
2282
2274
  }
@@ -2287,7 +2279,7 @@
2287
2279
  case "href":
2288
2280
  case "src": {
2289
2281
  const prop2 = (_a2 = el.attribs) === null || _a2 === void 0 ? void 0 : _a2[name2];
2290
- if (typeof URL !== "undefined" && (name2 === "href" && (el.tagName === "a" || el.name === "link") || name2 === "src" && (el.tagName === "img" || el.tagName === "iframe" || el.tagName === "audio" || el.tagName === "video" || el.tagName === "source")) && prop2 !== void 0 && this.options.baseURI) {
2282
+ if (typeof URL !== "undefined" && (name2 === "href" && (el.tagName === "a" || el.tagName === "link") || name2 === "src" && (el.tagName === "img" || el.tagName === "iframe" || el.tagName === "audio" || el.tagName === "video" || el.tagName === "source")) && prop2 !== void 0 && this.options.baseURI) {
2291
2283
  return new URL(prop2, this.options.baseURI).href;
2292
2284
  }
2293
2285
  return prop2;
@@ -2298,18 +2290,21 @@
2298
2290
  case "textContent": {
2299
2291
  return textContent(el);
2300
2292
  }
2301
- case "outerHTML":
2293
+ case "outerHTML": {
2302
2294
  return this.clone().wrap("<container />").parent().html();
2303
- case "innerHTML":
2295
+ }
2296
+ case "innerHTML": {
2304
2297
  return this.html();
2305
- default:
2298
+ }
2299
+ default: {
2306
2300
  return getProp(el, name2, this.options.xmlMode);
2301
+ }
2307
2302
  }
2308
2303
  }
2309
2304
  if (typeof name2 === "object" || value !== void 0) {
2310
2305
  if (typeof value === "function") {
2311
2306
  if (typeof name2 === "object") {
2312
- throw new Error("Bad combination of arguments.");
2307
+ throw new TypeError("Bad combination of arguments.");
2313
2308
  }
2314
2309
  return domEach(this, (el, i) => {
2315
2310
  if (isTag(el)) {
@@ -2321,10 +2316,10 @@
2321
2316
  if (!isTag(el))
2322
2317
  return;
2323
2318
  if (typeof name2 === "object") {
2324
- Object.keys(name2).forEach((key) => {
2319
+ for (const key of Object.keys(name2)) {
2325
2320
  const val2 = name2[key];
2326
2321
  setProp(el, key, val2, this.options.xmlMode);
2327
- });
2322
+ }
2328
2323
  } else {
2329
2324
  setProp(el, name2, value, this.options.xmlMode);
2330
2325
  }
@@ -2332,9 +2327,8 @@
2332
2327
  }
2333
2328
  return void 0;
2334
2329
  }
2335
- function setData(el, name2, value) {
2330
+ function setData(elem, name2, value) {
2336
2331
  var _a2;
2337
- const elem = el;
2338
2332
  (_a2 = elem.data) !== null && _a2 !== void 0 ? _a2 : elem.data = {};
2339
2333
  if (typeof name2 === "object")
2340
2334
  Object.assign(elem.data, name2);
@@ -2342,36 +2336,46 @@
2342
2336
  elem.data[name2] = value;
2343
2337
  }
2344
2338
  }
2339
+ function readAllData(el) {
2340
+ for (const domName of Object.keys(el.attribs)) {
2341
+ if (!domName.startsWith(dataAttrPrefix)) {
2342
+ continue;
2343
+ }
2344
+ const jsName = camelCase(domName.slice(dataAttrPrefix.length));
2345
+ if (!hasOwn.call(el.data, jsName)) {
2346
+ el.data[jsName] = parseDataValue(el.attribs[domName]);
2347
+ }
2348
+ }
2349
+ return el.data;
2350
+ }
2345
2351
  function readData(el, name2) {
2346
- let domNames;
2347
- let jsNames;
2348
- let value;
2349
- if (name2 == null) {
2350
- domNames = Object.keys(el.attribs).filter((attrName) => attrName.startsWith(dataAttrPrefix));
2351
- jsNames = domNames.map((domName) => camelCase(domName.slice(dataAttrPrefix.length)));
2352
- } else {
2353
- domNames = [dataAttrPrefix + cssCase(name2)];
2354
- jsNames = [name2];
2355
- }
2356
- for (let idx = 0; idx < domNames.length; ++idx) {
2357
- const domName = domNames[idx];
2358
- const jsName = jsNames[idx];
2359
- if (hasOwn.call(el.attribs, domName) && !hasOwn.call(el.data, jsName)) {
2360
- value = el.attribs[domName];
2361
- if (hasOwn.call(primitives, value)) {
2362
- value = primitives[value];
2363
- } else if (value === String(Number(value))) {
2364
- value = Number(value);
2365
- } else if (rbrace.test(value)) {
2366
- try {
2367
- value = JSON.parse(value);
2368
- } catch (e) {
2369
- }
2370
- }
2371
- el.data[jsName] = value;
2352
+ const domName = dataAttrPrefix + cssCase(name2);
2353
+ const data2 = el.data;
2354
+ if (hasOwn.call(data2, name2)) {
2355
+ return data2[name2];
2356
+ }
2357
+ if (hasOwn.call(el.attribs, domName)) {
2358
+ return data2[name2] = parseDataValue(el.attribs[domName]);
2359
+ }
2360
+ return void 0;
2361
+ }
2362
+ function parseDataValue(value) {
2363
+ if (value === "null")
2364
+ return null;
2365
+ if (value === "true")
2366
+ return true;
2367
+ if (value === "false")
2368
+ return false;
2369
+ const num = Number(value);
2370
+ if (value === String(num))
2371
+ return num;
2372
+ if (rbrace.test(value)) {
2373
+ try {
2374
+ return JSON.parse(value);
2375
+ } catch {
2372
2376
  }
2373
2377
  }
2374
- return name2 == null ? el.data : value;
2378
+ return value;
2375
2379
  }
2376
2380
  function data(name2, value) {
2377
2381
  var _a2;
@@ -2380,8 +2384,8 @@
2380
2384
  return;
2381
2385
  const dataEl = elem;
2382
2386
  (_a2 = dataEl.data) !== null && _a2 !== void 0 ? _a2 : dataEl.data = {};
2383
- if (!name2) {
2384
- return readData(dataEl);
2387
+ if (name2 == null) {
2388
+ return readAllData(dataEl);
2385
2389
  }
2386
2390
  if (typeof name2 === "object" || value !== void 0) {
2387
2391
  domEach(this, (el) => {
@@ -2394,9 +2398,6 @@
2394
2398
  });
2395
2399
  return this;
2396
2400
  }
2397
- if (hasOwn.call(dataEl.data, name2)) {
2398
- return dataEl.data[name2];
2399
- }
2400
2401
  return readData(dataEl, name2);
2401
2402
  }
2402
2403
  function val(value) {
@@ -2405,8 +2406,9 @@
2405
2406
  if (!element || !isTag(element))
2406
2407
  return querying ? void 0 : this;
2407
2408
  switch (element.name) {
2408
- case "textarea":
2409
+ case "textarea": {
2409
2410
  return this.text(value);
2411
+ }
2410
2412
  case "select": {
2411
2413
  const option = this.find("option:selected");
2412
2414
  if (!querying) {
@@ -2414,17 +2416,18 @@
2414
2416
  return this;
2415
2417
  }
2416
2418
  this.find("option").removeAttr("selected");
2417
- const values = typeof value !== "object" ? [value] : value;
2418
- for (let i = 0; i < values.length; i++) {
2419
- this.find(`option[value="${values[i]}"]`).attr("selected", "");
2419
+ const values = typeof value === "object" ? value : [value];
2420
+ for (const val2 of values) {
2421
+ this.find(`option[value="${val2}"]`).attr("selected", "");
2420
2422
  }
2421
2423
  return this;
2422
2424
  }
2423
2425
  return this.attr("multiple") ? option.toArray().map((el) => text$2(el.children)) : option.attr("value");
2424
2426
  }
2425
2427
  case "input":
2426
- case "option":
2428
+ case "option": {
2427
2429
  return querying ? this.attr("value") : this.attr("value", value);
2430
+ }
2428
2431
  }
2429
2432
  return void 0;
2430
2433
  }
@@ -2438,10 +2441,10 @@
2438
2441
  }
2439
2442
  function removeAttr(name2) {
2440
2443
  const attrNames = splitNames(name2);
2441
- for (let i = 0; i < attrNames.length; i++) {
2444
+ for (const attrName of attrNames) {
2442
2445
  domEach(this, (elem) => {
2443
2446
  if (isTag(elem))
2444
- removeAttribute(elem, attrNames[i]);
2447
+ removeAttribute(elem, attrName);
2445
2448
  });
2446
2449
  }
2447
2450
  return this;
@@ -2450,7 +2453,7 @@
2450
2453
  return this.toArray().some((elem) => {
2451
2454
  const clazz = isTag(elem) && elem.attribs["class"];
2452
2455
  let idx = -1;
2453
- if (clazz && className.length) {
2456
+ if (clazz && className.length > 0) {
2454
2457
  while ((idx = clazz.indexOf(className, idx + 1)) > -1) {
2455
2458
  const end2 = idx + className.length;
2456
2459
  if ((idx === 0 || rspace.test(clazz[idx - 1])) && (end2 === clazz.length || rspace.test(clazz[end2]))) {
@@ -2479,16 +2482,16 @@
2479
2482
  if (!isTag(el))
2480
2483
  continue;
2481
2484
  const className = getAttr(el, "class", false);
2482
- if (!className) {
2483
- setAttr(el, "class", classNames.join(" ").trim());
2484
- } else {
2485
+ if (className) {
2485
2486
  let setClass = ` ${className} `;
2486
- for (let j = 0; j < classNames.length; j++) {
2487
- const appendClass = `${classNames[j]} `;
2487
+ for (const cn of classNames) {
2488
+ const appendClass = `${cn} `;
2488
2489
  if (!setClass.includes(` ${appendClass}`))
2489
2490
  setClass += appendClass;
2490
2491
  }
2491
2492
  setAttr(el, "class", setClass.trim());
2493
+ } else {
2494
+ setAttr(el, "class", classNames.join(" ").trim());
2492
2495
  }
2493
2496
  }
2494
2497
  return this;
@@ -2729,209 +2732,208 @@
2729
2732
  if (selector.length === selectorIndex) {
2730
2733
  return selectorIndex;
2731
2734
  }
2732
- loop:
2733
- while (selectorIndex < selector.length) {
2734
- const firstChar = selector.charCodeAt(selectorIndex);
2735
- switch (firstChar) {
2736
- case 32:
2737
- case 9:
2738
- case 10:
2739
- case 12:
2740
- case 13: {
2741
- if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) {
2742
- ensureNotTraversal();
2743
- tokens.push({ type: SelectorType.Descendant });
2744
- }
2745
- stripWhitespace(1);
2746
- break;
2747
- }
2748
- case 62: {
2749
- addTraversal(SelectorType.Child);
2750
- stripWhitespace(1);
2751
- break;
2752
- }
2753
- case 60: {
2754
- addTraversal(SelectorType.Parent);
2755
- stripWhitespace(1);
2756
- break;
2735
+ loop: while (selectorIndex < selector.length) {
2736
+ const firstChar = selector.charCodeAt(selectorIndex);
2737
+ switch (firstChar) {
2738
+ case 32:
2739
+ case 9:
2740
+ case 10:
2741
+ case 12:
2742
+ case 13: {
2743
+ if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) {
2744
+ ensureNotTraversal();
2745
+ tokens.push({ type: SelectorType.Descendant });
2757
2746
  }
2758
- case 126: {
2759
- addTraversal(SelectorType.Sibling);
2760
- stripWhitespace(1);
2761
- break;
2747
+ stripWhitespace(1);
2748
+ break;
2749
+ }
2750
+ case 62: {
2751
+ addTraversal(SelectorType.Child);
2752
+ stripWhitespace(1);
2753
+ break;
2754
+ }
2755
+ case 60: {
2756
+ addTraversal(SelectorType.Parent);
2757
+ stripWhitespace(1);
2758
+ break;
2759
+ }
2760
+ case 126: {
2761
+ addTraversal(SelectorType.Sibling);
2762
+ stripWhitespace(1);
2763
+ break;
2764
+ }
2765
+ case 43: {
2766
+ addTraversal(SelectorType.Adjacent);
2767
+ stripWhitespace(1);
2768
+ break;
2769
+ }
2770
+ case 46: {
2771
+ addSpecialAttribute("class", AttributeAction.Element);
2772
+ break;
2773
+ }
2774
+ case 35: {
2775
+ addSpecialAttribute("id", AttributeAction.Equals);
2776
+ break;
2777
+ }
2778
+ case 91: {
2779
+ stripWhitespace(1);
2780
+ let name2;
2781
+ let namespace = null;
2782
+ if (selector.charCodeAt(selectorIndex) === 124) {
2783
+ name2 = getName2(1);
2784
+ } else if (selector.startsWith("*|", selectorIndex)) {
2785
+ namespace = "*";
2786
+ name2 = getName2(2);
2787
+ } else {
2788
+ name2 = getName2(0);
2789
+ if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) {
2790
+ namespace = name2;
2791
+ name2 = getName2(1);
2792
+ }
2762
2793
  }
2763
- case 43: {
2764
- addTraversal(SelectorType.Adjacent);
2794
+ stripWhitespace(0);
2795
+ let action = AttributeAction.Exists;
2796
+ const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));
2797
+ if (possibleAction) {
2798
+ action = possibleAction;
2799
+ if (selector.charCodeAt(selectorIndex + 1) !== 61) {
2800
+ throw new Error("Expected `=`");
2801
+ }
2802
+ stripWhitespace(2);
2803
+ } else if (selector.charCodeAt(selectorIndex) === 61) {
2804
+ action = AttributeAction.Equals;
2765
2805
  stripWhitespace(1);
2766
- break;
2767
- }
2768
- case 46: {
2769
- addSpecialAttribute("class", AttributeAction.Element);
2770
- break;
2771
- }
2772
- case 35: {
2773
- addSpecialAttribute("id", AttributeAction.Equals);
2774
- break;
2775
2806
  }
2776
- case 91: {
2777
- stripWhitespace(1);
2778
- let name2;
2779
- let namespace = null;
2780
- if (selector.charCodeAt(selectorIndex) === 124) {
2781
- name2 = getName2(1);
2782
- } else if (selector.startsWith("*|", selectorIndex)) {
2783
- namespace = "*";
2784
- name2 = getName2(2);
2807
+ let value = "";
2808
+ let ignoreCase = null;
2809
+ if (action !== "exists") {
2810
+ if (isQuote(selector.charCodeAt(selectorIndex))) {
2811
+ const quote = selector.charCodeAt(selectorIndex);
2812
+ let sectionEnd = selectorIndex + 1;
2813
+ while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) {
2814
+ sectionEnd += 1;
2815
+ }
2816
+ if (selector.charCodeAt(sectionEnd) !== quote) {
2817
+ throw new Error("Attribute value didn't end");
2818
+ }
2819
+ value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));
2820
+ selectorIndex = sectionEnd + 1;
2785
2821
  } else {
2786
- name2 = getName2(0);
2787
- if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) {
2788
- namespace = name2;
2789
- name2 = getName2(1);
2822
+ const valueStart = selectorIndex;
2823
+ while (selectorIndex < selector.length && (!isWhitespace$2(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) {
2824
+ selectorIndex += 1;
2790
2825
  }
2826
+ value = unescapeCSS(selector.slice(valueStart, selectorIndex));
2791
2827
  }
2792
2828
  stripWhitespace(0);
2793
- let action = AttributeAction.Exists;
2794
- const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));
2795
- if (possibleAction) {
2796
- action = possibleAction;
2797
- if (selector.charCodeAt(selectorIndex + 1) !== 61) {
2798
- throw new Error("Expected `=`");
2799
- }
2800
- stripWhitespace(2);
2801
- } else if (selector.charCodeAt(selectorIndex) === 61) {
2802
- action = AttributeAction.Equals;
2829
+ const forceIgnore = selector.charCodeAt(selectorIndex) | 32;
2830
+ if (forceIgnore === 115) {
2831
+ ignoreCase = false;
2832
+ stripWhitespace(1);
2833
+ } else if (forceIgnore === 105) {
2834
+ ignoreCase = true;
2803
2835
  stripWhitespace(1);
2804
2836
  }
2805
- let value = "";
2806
- let ignoreCase = null;
2807
- if (action !== "exists") {
2808
- if (isQuote(selector.charCodeAt(selectorIndex))) {
2809
- const quote = selector.charCodeAt(selectorIndex);
2810
- let sectionEnd = selectorIndex + 1;
2811
- while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) {
2812
- sectionEnd += 1;
2813
- }
2814
- if (selector.charCodeAt(sectionEnd) !== quote) {
2815
- throw new Error("Attribute value didn't end");
2816
- }
2817
- value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));
2818
- selectorIndex = sectionEnd + 1;
2819
- } else {
2820
- const valueStart = selectorIndex;
2821
- while (selectorIndex < selector.length && (!isWhitespace$2(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) {
2822
- selectorIndex += 1;
2823
- }
2824
- value = unescapeCSS(selector.slice(valueStart, selectorIndex));
2837
+ }
2838
+ if (selector.charCodeAt(selectorIndex) !== 93) {
2839
+ throw new Error("Attribute selector didn't terminate");
2840
+ }
2841
+ selectorIndex += 1;
2842
+ const attributeSelector = {
2843
+ type: SelectorType.Attribute,
2844
+ name: name2,
2845
+ action,
2846
+ value,
2847
+ namespace,
2848
+ ignoreCase
2849
+ };
2850
+ tokens.push(attributeSelector);
2851
+ break;
2852
+ }
2853
+ case 58: {
2854
+ if (selector.charCodeAt(selectorIndex + 1) === 58) {
2855
+ tokens.push({
2856
+ type: SelectorType.PseudoElement,
2857
+ name: getName2(2).toLowerCase(),
2858
+ data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null
2859
+ });
2860
+ continue;
2861
+ }
2862
+ const name2 = getName2(1).toLowerCase();
2863
+ let data2 = null;
2864
+ if (selector.charCodeAt(selectorIndex) === 40) {
2865
+ if (unpackPseudos.has(name2)) {
2866
+ if (isQuote(selector.charCodeAt(selectorIndex + 1))) {
2867
+ throw new Error(`Pseudo-selector ${name2} cannot be quoted`);
2825
2868
  }
2826
- stripWhitespace(0);
2827
- const forceIgnore = selector.charCodeAt(selectorIndex) | 32;
2828
- if (forceIgnore === 115) {
2829
- ignoreCase = false;
2830
- stripWhitespace(1);
2831
- } else if (forceIgnore === 105) {
2832
- ignoreCase = true;
2833
- stripWhitespace(1);
2869
+ data2 = [];
2870
+ selectorIndex = parseSelector(data2, selector, selectorIndex + 1);
2871
+ if (selector.charCodeAt(selectorIndex) !== 41) {
2872
+ throw new Error(`Missing closing parenthesis in :${name2} (${selector})`);
2834
2873
  }
2835
- }
2836
- if (selector.charCodeAt(selectorIndex) !== 93) {
2837
- throw new Error("Attribute selector didn't terminate");
2838
- }
2839
- selectorIndex += 1;
2840
- const attributeSelector = {
2841
- type: SelectorType.Attribute,
2842
- name: name2,
2843
- action,
2844
- value,
2845
- namespace,
2846
- ignoreCase
2847
- };
2848
- tokens.push(attributeSelector);
2849
- break;
2850
- }
2851
- case 58: {
2852
- if (selector.charCodeAt(selectorIndex + 1) === 58) {
2853
- tokens.push({
2854
- type: SelectorType.PseudoElement,
2855
- name: getName2(2).toLowerCase(),
2856
- data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null
2857
- });
2858
- continue;
2859
- }
2860
- const name2 = getName2(1).toLowerCase();
2861
- let data2 = null;
2862
- if (selector.charCodeAt(selectorIndex) === 40) {
2863
- if (unpackPseudos.has(name2)) {
2864
- if (isQuote(selector.charCodeAt(selectorIndex + 1))) {
2865
- throw new Error(`Pseudo-selector ${name2} cannot be quoted`);
2866
- }
2867
- data2 = [];
2868
- selectorIndex = parseSelector(data2, selector, selectorIndex + 1);
2869
- if (selector.charCodeAt(selectorIndex) !== 41) {
2870
- throw new Error(`Missing closing parenthesis in :${name2} (${selector})`);
2871
- }
2872
- selectorIndex += 1;
2873
- } else {
2874
- data2 = readValueWithParenthesis();
2875
- if (stripQuotesFromPseudos.has(name2)) {
2876
- const quot = data2.charCodeAt(0);
2877
- if (quot === data2.charCodeAt(data2.length - 1) && isQuote(quot)) {
2878
- data2 = data2.slice(1, -1);
2879
- }
2874
+ selectorIndex += 1;
2875
+ } else {
2876
+ data2 = readValueWithParenthesis();
2877
+ if (stripQuotesFromPseudos.has(name2)) {
2878
+ const quot = data2.charCodeAt(0);
2879
+ if (quot === data2.charCodeAt(data2.length - 1) && isQuote(quot)) {
2880
+ data2 = data2.slice(1, -1);
2880
2881
  }
2881
- data2 = unescapeCSS(data2);
2882
2882
  }
2883
+ data2 = unescapeCSS(data2);
2883
2884
  }
2884
- tokens.push({ type: SelectorType.Pseudo, name: name2, data: data2 });
2885
- break;
2886
2885
  }
2887
- case 44: {
2888
- finalizeSubselector();
2889
- tokens = [];
2890
- stripWhitespace(1);
2886
+ tokens.push({ type: SelectorType.Pseudo, name: name2, data: data2 });
2887
+ break;
2888
+ }
2889
+ case 44: {
2890
+ finalizeSubselector();
2891
+ tokens = [];
2892
+ stripWhitespace(1);
2893
+ break;
2894
+ }
2895
+ default: {
2896
+ if (selector.startsWith("/*", selectorIndex)) {
2897
+ const endIndex = selector.indexOf("*/", selectorIndex + 2);
2898
+ if (endIndex < 0) {
2899
+ throw new Error("Comment was not terminated");
2900
+ }
2901
+ selectorIndex = endIndex + 2;
2902
+ if (tokens.length === 0) {
2903
+ stripWhitespace(0);
2904
+ }
2891
2905
  break;
2892
2906
  }
2893
- default: {
2894
- if (selector.startsWith("/*", selectorIndex)) {
2895
- const endIndex = selector.indexOf("*/", selectorIndex + 2);
2896
- if (endIndex < 0) {
2897
- throw new Error("Comment was not terminated");
2898
- }
2899
- selectorIndex = endIndex + 2;
2900
- if (tokens.length === 0) {
2901
- stripWhitespace(0);
2902
- }
2907
+ let namespace = null;
2908
+ let name2;
2909
+ if (firstChar === 42) {
2910
+ selectorIndex += 1;
2911
+ name2 = "*";
2912
+ } else if (firstChar === 124) {
2913
+ name2 = "";
2914
+ if (selector.charCodeAt(selectorIndex + 1) === 124) {
2915
+ addTraversal(SelectorType.ColumnCombinator);
2916
+ stripWhitespace(2);
2903
2917
  break;
2904
2918
  }
2905
- let namespace = null;
2906
- let name2;
2907
- if (firstChar === 42) {
2908
- selectorIndex += 1;
2919
+ } else if (reName.test(selector.slice(selectorIndex))) {
2920
+ name2 = getName2(0);
2921
+ } else {
2922
+ break loop;
2923
+ }
2924
+ if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) {
2925
+ namespace = name2;
2926
+ if (selector.charCodeAt(selectorIndex + 1) === 42) {
2909
2927
  name2 = "*";
2910
- } else if (firstChar === 124) {
2911
- name2 = "";
2912
- if (selector.charCodeAt(selectorIndex + 1) === 124) {
2913
- addTraversal(SelectorType.ColumnCombinator);
2914
- stripWhitespace(2);
2915
- break;
2916
- }
2917
- } else if (reName.test(selector.slice(selectorIndex))) {
2918
- name2 = getName2(0);
2928
+ selectorIndex += 2;
2919
2929
  } else {
2920
- break loop;
2921
- }
2922
- if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) {
2923
- namespace = name2;
2924
- if (selector.charCodeAt(selectorIndex + 1) === 42) {
2925
- name2 = "*";
2926
- selectorIndex += 2;
2927
- } else {
2928
- name2 = getName2(1);
2929
- }
2930
+ name2 = getName2(1);
2930
2931
  }
2931
- tokens.push(name2 === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name: name2, namespace });
2932
2932
  }
2933
+ tokens.push(name2 === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name: name2, namespace });
2933
2934
  }
2934
2935
  }
2936
+ }
2935
2937
  finalizeSubselector();
2936
2938
  return selectorIndex;
2937
2939
  }
@@ -3729,8 +3731,7 @@
3729
3731
  return e === PLACEHOLDER_ELEMENT || parent2 && adapter2.isTag(parent2);
3730
3732
  }));
3731
3733
  for (const t of token) {
3732
- if (t.length > 0 && isTraversal(t[0]) && t[0].type !== SelectorType.Descendant)
3733
- ;
3734
+ if (t.length > 0 && isTraversal(t[0]) && t[0].type !== SelectorType.Descendant) ;
3734
3735
  else if (hasContext && !t.some(includesScopePseudo)) {
3735
3736
  t.unshift(DESCENDANT_TOKEN);
3736
3737
  } else {
@@ -3754,8 +3755,7 @@
3754
3755
  const query = token.map((rules) => {
3755
3756
  if (rules.length >= 2) {
3756
3757
  const [first2, second] = rules;
3757
- if (first2.type !== SelectorType.Pseudo || first2.name !== "scope")
3758
- ;
3758
+ if (first2.type !== SelectorType.Pseudo || first2.name !== "scope") ;
3759
3759
  else if (isArrayContext && second.type === SelectorType.Descendant) {
3760
3760
  rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
3761
3761
  } else if (second.type === SelectorType.Adjacent || second.type === SelectorType.Sibling) {
@@ -4041,18 +4041,22 @@
4041
4041
  const query = _compileToken(sel, options);
4042
4042
  return query === boolbase.trueFunc ? els : els.filter(query);
4043
4043
  }
4044
- const reSiblingSelector = /^\s*[~+]/;
4044
+ const reSiblingSelector = /^\s*[+~]/;
4045
4045
  function find(selectorOrHaystack) {
4046
- var _a2;
4047
4046
  if (!selectorOrHaystack) {
4048
4047
  return this._make([]);
4049
4048
  }
4050
- const context = this.toArray();
4051
4049
  if (typeof selectorOrHaystack !== "string") {
4052
4050
  const haystack = isCheerio(selectorOrHaystack) ? selectorOrHaystack.toArray() : [selectorOrHaystack];
4051
+ const context = this.toArray();
4053
4052
  return this._make(haystack.filter((elem) => context.some((node) => contains(node, elem))));
4054
4053
  }
4055
- const elems = reSiblingSelector.test(selectorOrHaystack) ? context : this.children().toArray();
4054
+ return this._findBySelector(selectorOrHaystack, Number.POSITIVE_INFINITY);
4055
+ }
4056
+ function _findBySelector(selector, limit) {
4057
+ var _a2;
4058
+ const context = this.toArray();
4059
+ const elems = reSiblingSelector.test(selector) ? context : this.children().toArray();
4056
4060
  const options = {
4057
4061
  context,
4058
4062
  root: (_a2 = this._root) === null || _a2 === void 0 ? void 0 : _a2[0],
@@ -4063,7 +4067,7 @@
4063
4067
  pseudos: this.options.pseudos,
4064
4068
  quirksMode: this.options.quirksMode
4065
4069
  };
4066
- return this._make(select(selectorOrHaystack, elems, options));
4070
+ return this._make(select(selector, elems, options, limit));
4067
4071
  }
4068
4072
  function _getMatcher(matchMap) {
4069
4073
  return function(fn, ...postFns) {
@@ -4081,12 +4085,13 @@
4081
4085
  };
4082
4086
  }
4083
4087
  const _matcher = _getMatcher((fn, elems) => {
4084
- const ret = [];
4088
+ let ret = [];
4085
4089
  for (let i = 0; i < elems.length; i++) {
4086
4090
  const value = fn(elems[i]);
4087
- ret.push(value);
4091
+ if (value.length > 0)
4092
+ ret = ret.concat(value);
4088
4093
  }
4089
- return new Array().concat(...ret);
4094
+ return ret;
4090
4095
  });
4091
4096
  const _singleMatcher = _getMatcher((fn, elems) => {
4092
4097
  const ret = [];
@@ -4119,7 +4124,7 @@
4119
4124
  };
4120
4125
  }
4121
4126
  function _removeDuplicates(elems) {
4122
- return Array.from(new Set(elems));
4127
+ return elems.length > 1 ? Array.from(new Set(elems)) : elems;
4123
4128
  }
4124
4129
  const parent = _singleMatcher(({ parent: parent2 }) => parent2 && !isDocument$1(parent2) ? parent2 : null, _removeDuplicates);
4125
4130
  const parents = _matcher((elem) => {
@@ -4143,6 +4148,9 @@
4143
4148
  };
4144
4149
  const selectFn = typeof selector === "string" ? (elem) => is$1(elem, selector, selectOpts) : getFilterFn(selector);
4145
4150
  domEach(this, (elem) => {
4151
+ if (elem && !isDocument$1(elem) && !isTag(elem)) {
4152
+ elem = elem.parent;
4153
+ }
4146
4154
  while (elem && isTag(elem)) {
4147
4155
  if (selectFn(elem, 0)) {
4148
4156
  if (!set2.includes(elem)) {
@@ -4296,6 +4304,7 @@
4296
4304
  }
4297
4305
  const Traversing = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4298
4306
  __proto__: null,
4307
+ _findBySelector,
4299
4308
  add,
4300
4309
  addBack,
4301
4310
  children,
@@ -4371,16 +4380,30 @@
4371
4380
  if (elem == null) {
4372
4381
  return [];
4373
4382
  }
4374
- if (isCheerio(elem)) {
4375
- return clone2 ? cloneDom(elem.get()) : elem.get();
4376
- }
4377
- if (Array.isArray(elem)) {
4378
- return elem.reduce((newElems, el) => newElems.concat(this._makeDomArray(el, clone2)), []);
4379
- }
4380
4383
  if (typeof elem === "string") {
4381
- return this._parse(elem, this.options, false, null).children;
4384
+ return this._parse(elem, this.options, false, null).children.slice(0);
4382
4385
  }
4383
- return clone2 ? cloneDom([elem]) : [elem];
4386
+ if ("length" in elem) {
4387
+ if (elem.length === 1) {
4388
+ return this._makeDomArray(elem[0], clone2);
4389
+ }
4390
+ const result = [];
4391
+ for (let i = 0; i < elem.length; i++) {
4392
+ const el = elem[i];
4393
+ if (typeof el === "object") {
4394
+ if (el == null) {
4395
+ continue;
4396
+ }
4397
+ if (!("length" in el)) {
4398
+ result.push(clone2 ? cloneNode(el, true) : el);
4399
+ continue;
4400
+ }
4401
+ }
4402
+ result.push(...this._makeDomArray(el, clone2));
4403
+ }
4404
+ return result;
4405
+ }
4406
+ return [clone2 ? cloneNode(elem, true) : elem];
4384
4407
  }
4385
4408
  function _insert(concatenator) {
4386
4409
  return function(...elems) {
@@ -4524,17 +4547,16 @@
4524
4547
  function after(...elems) {
4525
4548
  const lastIdx = this.length - 1;
4526
4549
  return domEach(this, (el, i) => {
4527
- const { parent: parent2 } = el;
4528
- if (!hasChildren(el) || !parent2) {
4550
+ if (!hasChildren(el) || !el.parent) {
4529
4551
  return;
4530
4552
  }
4531
- const siblings2 = parent2.children;
4553
+ const siblings2 = el.parent.children;
4532
4554
  const index2 = siblings2.indexOf(el);
4533
4555
  if (index2 < 0)
4534
4556
  return;
4535
4557
  const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems;
4536
4558
  const dom = this._makeDomArray(domSrc, i < lastIdx);
4537
- uniqueSplice(siblings2, index2 + 1, 0, dom, parent2);
4559
+ uniqueSplice(siblings2, index2 + 1, 0, dom, el.parent);
4538
4560
  });
4539
4561
  }
4540
4562
  function insertAfter(target) {
@@ -4543,35 +4565,34 @@
4543
4565
  }
4544
4566
  this.remove();
4545
4567
  const clones = [];
4546
- this._makeDomArray(target).forEach((el) => {
4568
+ for (const el of this._makeDomArray(target)) {
4547
4569
  const clonedSelf = this.clone().toArray();
4548
4570
  const { parent: parent2 } = el;
4549
4571
  if (!parent2) {
4550
- return;
4572
+ continue;
4551
4573
  }
4552
4574
  const siblings2 = parent2.children;
4553
4575
  const index2 = siblings2.indexOf(el);
4554
4576
  if (index2 < 0)
4555
- return;
4577
+ continue;
4556
4578
  uniqueSplice(siblings2, index2 + 1, 0, clonedSelf, parent2);
4557
4579
  clones.push(...clonedSelf);
4558
- });
4580
+ }
4559
4581
  return this._make(clones);
4560
4582
  }
4561
4583
  function before(...elems) {
4562
4584
  const lastIdx = this.length - 1;
4563
4585
  return domEach(this, (el, i) => {
4564
- const { parent: parent2 } = el;
4565
- if (!hasChildren(el) || !parent2) {
4586
+ if (!hasChildren(el) || !el.parent) {
4566
4587
  return;
4567
4588
  }
4568
- const siblings2 = parent2.children;
4589
+ const siblings2 = el.parent.children;
4569
4590
  const index2 = siblings2.indexOf(el);
4570
4591
  if (index2 < 0)
4571
4592
  return;
4572
4593
  const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems;
4573
4594
  const dom = this._makeDomArray(domSrc, i < lastIdx);
4574
- uniqueSplice(siblings2, index2, 0, dom, parent2);
4595
+ uniqueSplice(siblings2, index2, 0, dom, el.parent);
4575
4596
  });
4576
4597
  }
4577
4598
  function insertBefore(target) {
@@ -4622,9 +4643,9 @@
4622
4643
  return domEach(this, (el) => {
4623
4644
  if (!hasChildren(el))
4624
4645
  return;
4625
- el.children.forEach((child) => {
4646
+ for (const child of el.children) {
4626
4647
  child.next = child.prev = child.parent = null;
4627
- });
4648
+ }
4628
4649
  el.children.length = 0;
4629
4650
  });
4630
4651
  }
@@ -4638,9 +4659,9 @@
4638
4659
  return domEach(this, (el) => {
4639
4660
  if (!hasChildren(el))
4640
4661
  return;
4641
- el.children.forEach((child) => {
4662
+ for (const child of el.children) {
4642
4663
  child.next = child.prev = child.parent = null;
4643
- });
4664
+ }
4644
4665
  const content = isCheerio(str) ? str.toArray() : this._parse(`${str}`, this.options, false, el).children;
4645
4666
  update(content, el);
4646
4667
  });
@@ -4658,15 +4679,20 @@
4658
4679
  return domEach(this, (el) => {
4659
4680
  if (!hasChildren(el))
4660
4681
  return;
4661
- el.children.forEach((child) => {
4682
+ for (const child of el.children) {
4662
4683
  child.next = child.prev = child.parent = null;
4663
- });
4684
+ }
4664
4685
  const textNode = new Text(`${str}`);
4665
4686
  update(textNode, el);
4666
4687
  });
4667
4688
  }
4668
4689
  function clone() {
4669
- return this._make(cloneDom(this.get()));
4690
+ const clone2 = Array.prototype.map.call(this.get(), (el) => cloneNode(el, true));
4691
+ const root2 = new Document$1(clone2);
4692
+ for (const node of clone2) {
4693
+ node.parent = root2;
4694
+ }
4695
+ return this._make(clone2);
4670
4696
  }
4671
4697
  const Manipulation = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4672
4698
  __proto__: null,
@@ -4716,9 +4742,11 @@
4716
4742
  }
4717
4743
  el.attribs["style"] = stringify$1(styles2);
4718
4744
  } else if (typeof prop2 === "object") {
4719
- Object.keys(prop2).forEach((k, i) => {
4745
+ const keys = Object.keys(prop2);
4746
+ for (let i = 0; i < keys.length; i++) {
4747
+ const k = keys[i];
4720
4748
  setCss(el, k, prop2[k], i);
4721
- });
4749
+ }
4722
4750
  }
4723
4751
  }
4724
4752
  function getCss(el, prop2) {
@@ -4730,11 +4758,11 @@
4730
4758
  }
4731
4759
  if (Array.isArray(prop2)) {
4732
4760
  const newStyles = {};
4733
- prop2.forEach((item) => {
4761
+ for (const item of prop2) {
4734
4762
  if (styles2[item] != null) {
4735
4763
  newStyles[item] = styles2[item];
4736
4764
  }
4737
- });
4765
+ }
4738
4766
  return newStyles;
4739
4767
  }
4740
4768
  return styles2;
@@ -4784,7 +4812,6 @@
4784
4812
  }).filter(
4785
4813
  // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)
4786
4814
  '[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))'
4787
- // Convert each of the elements to its value(s)
4788
4815
  ).map((_, elem) => {
4789
4816
  var _a2;
4790
4817
  const $elem = this._make(elem);
@@ -4807,6 +4834,36 @@
4807
4834
  serialize,
4808
4835
  serializeArray
4809
4836
  }, Symbol.toStringTag, { value: "Module" }));
4837
+ function getExtractDescr(descr) {
4838
+ var _a2;
4839
+ if (typeof descr === "string") {
4840
+ return { selector: descr, value: "textContent" };
4841
+ }
4842
+ return {
4843
+ selector: descr.selector,
4844
+ value: (_a2 = descr.value) !== null && _a2 !== void 0 ? _a2 : "textContent"
4845
+ };
4846
+ }
4847
+ function extract(map2) {
4848
+ const ret = {};
4849
+ for (const key in map2) {
4850
+ const descr = map2[key];
4851
+ const isArray = Array.isArray(descr);
4852
+ const { selector, value } = getExtractDescr(isArray ? descr[0] : descr);
4853
+ const fn = typeof value === "function" ? value : typeof value === "string" ? (el) => this._make(el).prop(value) : (el) => this._make(el).extract(value);
4854
+ if (isArray) {
4855
+ ret[key] = this._findBySelector(selector, Number.POSITIVE_INFINITY).map((_, el) => fn(el, key, ret)).get();
4856
+ } else {
4857
+ const $2 = this._findBySelector(selector, 1);
4858
+ ret[key] = $2.length > 0 ? fn($2[0], key, ret) : void 0;
4859
+ }
4860
+ }
4861
+ return ret;
4862
+ }
4863
+ const Extract = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4864
+ __proto__: null,
4865
+ extract
4866
+ }, Symbol.toStringTag, { value: "Module" }));
4810
4867
  class Cheerio {
4811
4868
  /**
4812
4869
  * Instance of cheerio. Methods are specified in the modules. Usage of this
@@ -4832,13 +4889,13 @@
4832
4889
  Cheerio.prototype.cheerio = "[cheerio object]";
4833
4890
  Cheerio.prototype.splice = Array.prototype.splice;
4834
4891
  Cheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];
4835
- Object.assign(Cheerio.prototype, Attributes, Traversing, Manipulation, Css, Forms);
4892
+ Object.assign(Cheerio.prototype, Attributes, Traversing, Manipulation, Css, Forms, Extract);
4836
4893
  function getLoad(parse2, render2) {
4837
4894
  return function load2(content, options, isDocument2 = true) {
4838
4895
  if (content == null) {
4839
4896
  throw new Error("cheerio.load() expects a string");
4840
4897
  }
4841
- const internalOpts = { ...defaultOpts$2, ...flatten(options) };
4898
+ const internalOpts = flattenOptions(options);
4842
4899
  const initialRoot = parse2(content, internalOpts, isDocument2, null);
4843
4900
  class LoadedCheerio extends Cheerio {
4844
4901
  _make(selector, context) {
@@ -4856,10 +4913,7 @@
4856
4913
  function initialize(selector, context, root2 = initialRoot, opts) {
4857
4914
  if (selector && isCheerio(selector))
4858
4915
  return selector;
4859
- const options2 = {
4860
- ...internalOpts,
4861
- ...flatten(opts)
4862
- };
4916
+ const options2 = flattenOptions(opts, internalOpts);
4863
4917
  const r = typeof root2 === "string" ? [parse2(root2, options2, false, null)] : "length" in root2 ? root2 : [root2];
4864
4918
  const rootInstance = isCheerio(r) ? r : new LoadedCheerio(r, null, options2);
4865
4919
  rootInstance._root = rootInstance;
@@ -4881,25 +4935,25 @@
4881
4935
  return instance;
4882
4936
  }
4883
4937
  if (typeof selector !== "string") {
4884
- throw new Error("Unexpected type of selector");
4938
+ throw new TypeError("Unexpected type of selector");
4885
4939
  }
4886
4940
  let search = selector;
4887
- const searchContext = !context ? (
4941
+ const searchContext = context ? (
4888
4942
  // If we don't have a context, maybe we have a root, from loading
4889
- rootInstance
4890
- ) : typeof context === "string" ? isHtml(context) ? (
4891
- // $('li', '<ul>...</ul>')
4892
- new LoadedCheerio([parse2(context, options2, false, null)], rootInstance, options2)
4893
- ) : (
4894
- // $('li', 'ul')
4895
- (search = `${context} ${search}`, rootInstance)
4896
- ) : isCheerio(context) ? (
4897
- // $('li', $)
4898
- context
4899
- ) : (
4900
- // $('li', node), $('li', [nodes])
4901
- new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options2)
4902
- );
4943
+ typeof context === "string" ? isHtml(context) ? (
4944
+ // $('li', '<ul>...</ul>')
4945
+ new LoadedCheerio([parse2(context, options2, false, null)], rootInstance, options2)
4946
+ ) : (
4947
+ // $('li', 'ul')
4948
+ (search = `${context} ${search}`, rootInstance)
4949
+ ) : isCheerio(context) ? (
4950
+ // $('li', $)
4951
+ context
4952
+ ) : (
4953
+ // $('li', node), $('li', [nodes])
4954
+ new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options2)
4955
+ )
4956
+ ) : rootInstance;
4903
4957
  if (!searchContext)
4904
4958
  return instance;
4905
4959
  return searchContext.find(search);
@@ -8448,8 +8502,7 @@
8448
8502
  //------------------------------------------------------------------
8449
8503
  _stateNamedCharacterReference(cp) {
8450
8504
  const matchResult = this._matchNamedCharacterReference(cp);
8451
- if (this._ensureHibernation())
8452
- ;
8505
+ if (this._ensureHibernation()) ;
8453
8506
  else if (matchResult) {
8454
8507
  for (let i = 0; i < matchResult.length; i++) {
8455
8508
  this._flushCodePointConsumedAsCharacterReference(matchResult[i]);
@@ -12729,12 +12782,12 @@
12729
12782
  }
12730
12783
  };
12731
12784
  function parseWithParse5(content, options, isDocument2, context) {
12732
- const opts = {
12733
- scriptingEnabled: typeof options.scriptingEnabled === "boolean" ? options.scriptingEnabled : true,
12734
- treeAdapter: adapter,
12735
- sourceCodeLocationInfo: options.sourceCodeLocationInfo
12736
- };
12737
- return isDocument2 ? parse$2(content, opts) : parseFragment(context, content, opts);
12785
+ var _a2;
12786
+ (_a2 = options.treeAdapter) !== null && _a2 !== void 0 ? _a2 : options.treeAdapter = adapter;
12787
+ if (options.scriptingEnabled !== false) {
12788
+ options.scriptingEnabled = true;
12789
+ }
12790
+ return isDocument2 ? parse$2(content, options) : parseFragment(context, content, options);
12738
12791
  }
12739
12792
  const renderOpts = { treeAdapter: adapter };
12740
12793
  function renderWithParse5(dom) {
@@ -12806,13 +12859,10 @@
12806
12859
  State2[State2["InSpecialComment"] = 20] = "InSpecialComment";
12807
12860
  State2[State2["InCommentLike"] = 21] = "InCommentLike";
12808
12861
  State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS";
12809
- State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
12810
- State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
12811
- State2[State2["BeforeEntity"] = 25] = "BeforeEntity";
12812
- State2[State2["BeforeNumericEntity"] = 26] = "BeforeNumericEntity";
12813
- State2[State2["InNamedEntity"] = 27] = "InNamedEntity";
12814
- State2[State2["InNumericEntity"] = 28] = "InNumericEntity";
12815
- State2[State2["InHexEntity"] = 29] = "InHexEntity";
12862
+ State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT";
12863
+ State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence";
12864
+ State2[State2["InSpecialTag"] = 25] = "InSpecialTag";
12865
+ State2[State2["InEntity"] = 26] = "InEntity";
12816
12866
  })(State || (State = {}));
12817
12867
  function isWhitespace(c) {
12818
12868
  return c === CharCodes.Space || c === CharCodes.NewLine || c === CharCodes.Tab || c === CharCodes.FormFeed || c === CharCodes.CarriageReturn;
@@ -12820,15 +12870,9 @@
12820
12870
  function isEndOfTagSection(c) {
12821
12871
  return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
12822
12872
  }
12823
- function isNumber(c) {
12824
- return c >= CharCodes.Zero && c <= CharCodes.Nine;
12825
- }
12826
12873
  function isASCIIAlpha(c) {
12827
12874
  return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ;
12828
12875
  }
12829
- function isHexDigit(c) {
12830
- return c >= CharCodes.UpperA && c <= CharCodes.UpperF || c >= CharCodes.LowerA && c <= CharCodes.LowerF;
12831
- }
12832
12876
  var QuoteType;
12833
12877
  (function(QuoteType2) {
12834
12878
  QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue";
@@ -12838,12 +12882,30 @@
12838
12882
  })(QuoteType || (QuoteType = {}));
12839
12883
  const Sequences = {
12840
12884
  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
12885
+ // CDATA[
12841
12886
  CdataEnd: new Uint8Array([93, 93, 62]),
12887
+ // ]]>
12842
12888
  CommentEnd: new Uint8Array([45, 45, 62]),
12889
+ // `-->`
12843
12890
  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
12891
+ // `<\/script`
12844
12892
  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
12845
- TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101])
12893
+ // `</style`
12894
+ TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),
12846
12895
  // `</title`
12896
+ TextareaEnd: new Uint8Array([
12897
+ 60,
12898
+ 47,
12899
+ 116,
12900
+ 101,
12901
+ 120,
12902
+ 116,
12903
+ 97,
12904
+ 114,
12905
+ 101,
12906
+ 97
12907
+ ])
12908
+ // `</textarea`
12847
12909
  };
12848
12910
  class Tokenizer {
12849
12911
  constructor({ xmlMode = false, decodeEntities = true }, cbs) {
@@ -12852,19 +12914,16 @@
12852
12914
  this.buffer = "";
12853
12915
  this.sectionStart = 0;
12854
12916
  this.index = 0;
12917
+ this.entityStart = 0;
12855
12918
  this.baseState = State.Text;
12856
12919
  this.isSpecial = false;
12857
12920
  this.running = true;
12858
12921
  this.offset = 0;
12859
12922
  this.currentSequence = void 0;
12860
12923
  this.sequenceIndex = 0;
12861
- this.trieIndex = 0;
12862
- this.trieCurrent = 0;
12863
- this.entityResult = 0;
12864
- this.entityExcess = 0;
12865
12924
  this.xmlMode = xmlMode;
12866
12925
  this.decodeEntities = decodeEntities;
12867
- this.entityTrie = xmlMode ? xmlDecodeTree : htmlDecodeTree;
12926
+ this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
12868
12927
  }
12869
12928
  reset() {
12870
12929
  this.state = State.Text;
@@ -12894,18 +12953,6 @@
12894
12953
  this.parse();
12895
12954
  }
12896
12955
  }
12897
- /**
12898
- * The current index within all of the written data.
12899
- */
12900
- getIndex() {
12901
- return this.index;
12902
- }
12903
- /**
12904
- * The start of the current section.
12905
- */
12906
- getSectionStart() {
12907
- return this.sectionStart;
12908
- }
12909
12956
  stateText(c) {
12910
12957
  if (c === CharCodes.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes.Lt)) {
12911
12958
  if (this.index > this.sectionStart) {
@@ -12914,7 +12961,7 @@
12914
12961
  this.state = State.BeforeTagName;
12915
12962
  this.sectionStart = this.index;
12916
12963
  } else if (this.decodeEntities && c === CharCodes.Amp) {
12917
- this.state = State.BeforeEntity;
12964
+ this.startEntity();
12918
12965
  }
12919
12966
  }
12920
12967
  stateSpecialStartSequence(c) {
@@ -12959,7 +13006,7 @@
12959
13006
  } else if (this.sequenceIndex === 0) {
12960
13007
  if (this.currentSequence === Sequences.TitleEnd) {
12961
13008
  if (this.decodeEntities && c === CharCodes.Amp) {
12962
- this.state = State.BeforeEntity;
13009
+ this.startEntity();
12963
13010
  }
12964
13011
  } else if (this.fastForwardTo(CharCodes.Lt)) {
12965
13012
  this.sequenceIndex = 1;
@@ -13050,10 +13097,14 @@
13050
13097
  } else if (this.isTagStartChar(c)) {
13051
13098
  const lower = c | 32;
13052
13099
  this.sectionStart = this.index;
13053
- if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
13054
- this.startSpecial(Sequences.TitleEnd, 3);
13100
+ if (this.xmlMode) {
13101
+ this.state = State.InTagName;
13102
+ } else if (lower === Sequences.ScriptEnd[2]) {
13103
+ this.state = State.BeforeSpecialS;
13104
+ } else if (lower === Sequences.TitleEnd[2]) {
13105
+ this.state = State.BeforeSpecialT;
13055
13106
  } else {
13056
- this.state = !this.xmlMode && lower === Sequences.ScriptEnd[2] ? State.BeforeSpecialS : State.InTagName;
13107
+ this.state = State.InTagName;
13057
13108
  }
13058
13109
  } else if (c === CharCodes.Slash) {
13059
13110
  this.state = State.BeforeClosingTagName;
@@ -13071,8 +13122,7 @@
13071
13122
  }
13072
13123
  }
13073
13124
  stateBeforeClosingTagName(c) {
13074
- if (isWhitespace(c))
13075
- ;
13125
+ if (isWhitespace(c)) ;
13076
13126
  else if (c === CharCodes.Gt) {
13077
13127
  this.state = State.Text;
13078
13128
  } else {
@@ -13091,7 +13141,6 @@
13091
13141
  stateAfterClosingTagName(c) {
13092
13142
  if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
13093
13143
  this.state = State.Text;
13094
- this.baseState = State.Text;
13095
13144
  this.sectionStart = this.index + 1;
13096
13145
  }
13097
13146
  }
@@ -13104,7 +13153,6 @@
13104
13153
  } else {
13105
13154
  this.state = State.Text;
13106
13155
  }
13107
- this.baseState = this.state;
13108
13156
  this.sectionStart = this.index + 1;
13109
13157
  } else if (c === CharCodes.Slash) {
13110
13158
  this.state = State.InSelfClosingTag;
@@ -13117,7 +13165,6 @@
13117
13165
  if (c === CharCodes.Gt) {
13118
13166
  this.cbs.onselfclosingtag(this.index);
13119
13167
  this.state = State.Text;
13120
- this.baseState = State.Text;
13121
13168
  this.sectionStart = this.index + 1;
13122
13169
  this.isSpecial = false;
13123
13170
  } else if (!isWhitespace(c)) {
@@ -13128,7 +13175,7 @@
13128
13175
  stateInAttributeName(c) {
13129
13176
  if (c === CharCodes.Eq || isEndOfTagSection(c)) {
13130
13177
  this.cbs.onattribname(this.sectionStart, this.index);
13131
- this.sectionStart = -1;
13178
+ this.sectionStart = this.index;
13132
13179
  this.state = State.AfterAttributeName;
13133
13180
  this.stateAfterAttributeName(c);
13134
13181
  }
@@ -13137,11 +13184,12 @@
13137
13184
  if (c === CharCodes.Eq) {
13138
13185
  this.state = State.BeforeAttributeValue;
13139
13186
  } else if (c === CharCodes.Slash || c === CharCodes.Gt) {
13140
- this.cbs.onattribend(QuoteType.NoValue, this.index);
13187
+ this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
13188
+ this.sectionStart = -1;
13141
13189
  this.state = State.BeforeAttributeName;
13142
13190
  this.stateBeforeAttributeName(c);
13143
13191
  } else if (!isWhitespace(c)) {
13144
- this.cbs.onattribend(QuoteType.NoValue, this.index);
13192
+ this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
13145
13193
  this.state = State.InAttributeName;
13146
13194
  this.sectionStart = this.index;
13147
13195
  }
@@ -13163,11 +13211,10 @@
13163
13211
  if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {
13164
13212
  this.cbs.onattribdata(this.sectionStart, this.index);
13165
13213
  this.sectionStart = -1;
13166
- this.cbs.onattribend(quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index);
13214
+ this.cbs.onattribend(quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1);
13167
13215
  this.state = State.BeforeAttributeName;
13168
13216
  } else if (this.decodeEntities && c === CharCodes.Amp) {
13169
- this.baseState = this.state;
13170
- this.state = State.BeforeEntity;
13217
+ this.startEntity();
13171
13218
  }
13172
13219
  }
13173
13220
  stateInAttributeValueDoubleQuotes(c) {
@@ -13184,8 +13231,7 @@
13184
13231
  this.state = State.BeforeAttributeName;
13185
13232
  this.stateBeforeAttributeName(c);
13186
13233
  } else if (this.decodeEntities && c === CharCodes.Amp) {
13187
- this.baseState = this.state;
13188
- this.state = State.BeforeEntity;
13234
+ this.startEntity();
13189
13235
  }
13190
13236
  }
13191
13237
  stateBeforeDeclaration(c) {
@@ -13238,127 +13284,34 @@
13238
13284
  this.stateInTagName(c);
13239
13285
  }
13240
13286
  }
13241
- stateBeforeEntity(c) {
13242
- this.entityExcess = 1;
13243
- this.entityResult = 0;
13244
- if (c === CharCodes.Number) {
13245
- this.state = State.BeforeNumericEntity;
13246
- } else if (c === CharCodes.Amp)
13247
- ;
13248
- else {
13249
- this.trieIndex = 0;
13250
- this.trieCurrent = this.entityTrie[0];
13251
- this.state = State.InNamedEntity;
13252
- this.stateInNamedEntity(c);
13253
- }
13254
- }
13255
- stateInNamedEntity(c) {
13256
- this.entityExcess += 1;
13257
- this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
13258
- if (this.trieIndex < 0) {
13259
- this.emitNamedEntity();
13260
- this.index--;
13261
- return;
13262
- }
13263
- this.trieCurrent = this.entityTrie[this.trieIndex];
13264
- const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;
13265
- if (masked) {
13266
- const valueLength = (masked >> 14) - 1;
13267
- if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {
13268
- this.trieIndex += valueLength;
13269
- } else {
13270
- const entityStart = this.index - this.entityExcess + 1;
13271
- if (entityStart > this.sectionStart) {
13272
- this.emitPartial(this.sectionStart, entityStart);
13273
- }
13274
- this.entityResult = this.trieIndex;
13275
- this.trieIndex += valueLength;
13276
- this.entityExcess = 0;
13277
- this.sectionStart = this.index + 1;
13278
- if (valueLength === 0) {
13279
- this.emitNamedEntity();
13280
- }
13281
- }
13282
- }
13283
- }
13284
- emitNamedEntity() {
13285
- this.state = this.baseState;
13286
- if (this.entityResult === 0) {
13287
- return;
13288
- }
13289
- const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >> 14;
13290
- switch (valueLength) {
13291
- case 1: {
13292
- this.emitCodePoint(this.entityTrie[this.entityResult] & ~BinTrieFlags.VALUE_LENGTH);
13293
- break;
13294
- }
13295
- case 2: {
13296
- this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
13297
- break;
13298
- }
13299
- case 3: {
13300
- this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
13301
- this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
13302
- }
13303
- }
13304
- }
13305
- stateBeforeNumericEntity(c) {
13306
- if ((c | 32) === CharCodes.LowerX) {
13307
- this.entityExcess++;
13308
- this.state = State.InHexEntity;
13287
+ stateBeforeSpecialT(c) {
13288
+ const lower = c | 32;
13289
+ if (lower === Sequences.TitleEnd[3]) {
13290
+ this.startSpecial(Sequences.TitleEnd, 4);
13291
+ } else if (lower === Sequences.TextareaEnd[3]) {
13292
+ this.startSpecial(Sequences.TextareaEnd, 4);
13309
13293
  } else {
13310
- this.state = State.InNumericEntity;
13311
- this.stateInNumericEntity(c);
13294
+ this.state = State.InTagName;
13295
+ this.stateInTagName(c);
13312
13296
  }
13313
13297
  }
13314
- emitNumericEntity(strict) {
13315
- const entityStart = this.index - this.entityExcess - 1;
13316
- const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);
13317
- if (numberStart !== this.index) {
13318
- if (entityStart > this.sectionStart) {
13319
- this.emitPartial(this.sectionStart, entityStart);
13320
- }
13321
- this.sectionStart = this.index + Number(strict);
13322
- this.emitCodePoint(replaceCodePoint(this.entityResult));
13323
- }
13324
- this.state = this.baseState;
13298
+ startEntity() {
13299
+ this.baseState = this.state;
13300
+ this.state = State.InEntity;
13301
+ this.entityStart = this.index;
13302
+ this.entityDecoder.startEntity(this.xmlMode ? DecodingMode.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? DecodingMode.Legacy : DecodingMode.Attribute);
13325
13303
  }
13326
- stateInNumericEntity(c) {
13327
- if (c === CharCodes.Semi) {
13328
- this.emitNumericEntity(true);
13329
- } else if (isNumber(c)) {
13330
- this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);
13331
- this.entityExcess++;
13332
- } else {
13333
- if (this.allowLegacyEntity()) {
13334
- this.emitNumericEntity(false);
13335
- } else {
13336
- this.state = this.baseState;
13304
+ stateInEntity() {
13305
+ const length = this.entityDecoder.write(this.buffer, this.index - this.offset);
13306
+ if (length >= 0) {
13307
+ this.state = this.baseState;
13308
+ if (length === 0) {
13309
+ this.index = this.entityStart;
13337
13310
  }
13338
- this.index--;
13339
- }
13340
- }
13341
- stateInHexEntity(c) {
13342
- if (c === CharCodes.Semi) {
13343
- this.emitNumericEntity(true);
13344
- } else if (isNumber(c)) {
13345
- this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);
13346
- this.entityExcess++;
13347
- } else if (isHexDigit(c)) {
13348
- this.entityResult = this.entityResult * 16 + ((c | 32) - CharCodes.LowerA + 10);
13349
- this.entityExcess++;
13350
13311
  } else {
13351
- if (this.allowLegacyEntity()) {
13352
- this.emitNumericEntity(false);
13353
- } else {
13354
- this.state = this.baseState;
13355
- }
13356
- this.index--;
13312
+ this.index = this.offset + this.buffer.length - 1;
13357
13313
  }
13358
13314
  }
13359
- allowLegacyEntity() {
13360
- return !this.xmlMode && (this.baseState === State.Text || this.baseState === State.InSpecialTag);
13361
- }
13362
13315
  /**
13363
13316
  * Remove data that has already been consumed from the buffer.
13364
13317
  */
@@ -13457,6 +13410,10 @@
13457
13410
  this.stateBeforeSpecialS(c);
13458
13411
  break;
13459
13412
  }
13413
+ case State.BeforeSpecialT: {
13414
+ this.stateBeforeSpecialT(c);
13415
+ break;
13416
+ }
13460
13417
  case State.InAttributeValueNq: {
13461
13418
  this.stateInAttributeValueNoQuotes(c);
13462
13419
  break;
@@ -13481,70 +13438,55 @@
13481
13438
  this.stateInProcessingInstruction(c);
13482
13439
  break;
13483
13440
  }
13484
- case State.InNamedEntity: {
13485
- this.stateInNamedEntity(c);
13486
- break;
13487
- }
13488
- case State.BeforeEntity: {
13489
- this.stateBeforeEntity(c);
13490
- break;
13491
- }
13492
- case State.InHexEntity: {
13493
- this.stateInHexEntity(c);
13441
+ case State.InEntity: {
13442
+ this.stateInEntity();
13494
13443
  break;
13495
13444
  }
13496
- case State.InNumericEntity: {
13497
- this.stateInNumericEntity(c);
13498
- break;
13499
- }
13500
- default: {
13501
- this.stateBeforeNumericEntity(c);
13502
- }
13503
13445
  }
13504
13446
  this.index++;
13505
13447
  }
13506
13448
  this.cleanup();
13507
13449
  }
13508
13450
  finish() {
13509
- if (this.state === State.InNamedEntity) {
13510
- this.emitNamedEntity();
13511
- }
13512
- if (this.sectionStart < this.index) {
13513
- this.handleTrailingData();
13451
+ if (this.state === State.InEntity) {
13452
+ this.entityDecoder.end();
13453
+ this.state = this.baseState;
13514
13454
  }
13455
+ this.handleTrailingData();
13515
13456
  this.cbs.onend();
13516
13457
  }
13517
13458
  /** Handle any trailing data. */
13518
13459
  handleTrailingData() {
13519
13460
  const endIndex = this.buffer.length + this.offset;
13461
+ if (this.sectionStart >= endIndex) {
13462
+ return;
13463
+ }
13520
13464
  if (this.state === State.InCommentLike) {
13521
13465
  if (this.currentSequence === Sequences.CdataEnd) {
13522
13466
  this.cbs.oncdata(this.sectionStart, endIndex, 0);
13523
13467
  } else {
13524
13468
  this.cbs.oncomment(this.sectionStart, endIndex, 0);
13525
13469
  }
13526
- } else if (this.state === State.InNumericEntity && this.allowLegacyEntity()) {
13527
- this.emitNumericEntity(false);
13528
- } else if (this.state === State.InHexEntity && this.allowLegacyEntity()) {
13529
- this.emitNumericEntity(false);
13530
- } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName)
13531
- ;
13470
+ } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) ;
13532
13471
  else {
13533
13472
  this.cbs.ontext(this.sectionStart, endIndex);
13534
13473
  }
13535
13474
  }
13536
- emitPartial(start, endIndex) {
13537
- if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
13538
- this.cbs.onattribdata(start, endIndex);
13539
- } else {
13540
- this.cbs.ontext(start, endIndex);
13541
- }
13542
- }
13543
- emitCodePoint(cp) {
13475
+ emitCodePoint(cp, consumed) {
13544
13476
  if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
13477
+ if (this.sectionStart < this.entityStart) {
13478
+ this.cbs.onattribdata(this.sectionStart, this.entityStart);
13479
+ }
13480
+ this.sectionStart = this.entityStart + consumed;
13481
+ this.index = this.sectionStart - 1;
13545
13482
  this.cbs.onattribentity(cp);
13546
13483
  } else {
13547
- this.cbs.ontextentity(cp);
13484
+ if (this.sectionStart < this.entityStart) {
13485
+ this.cbs.ontext(this.sectionStart, this.entityStart);
13486
+ }
13487
+ this.sectionStart = this.entityStart + consumed;
13488
+ this.index = this.sectionStart - 1;
13489
+ this.cbs.ontextentity(cp, this.sectionStart);
13548
13490
  }
13549
13491
  }
13550
13492
  }
@@ -13646,7 +13588,7 @@
13646
13588
  const reNameEnd = /\s|\//;
13647
13589
  let Parser$1 = class Parser {
13648
13590
  constructor(cbs, options = {}) {
13649
- var _a2, _b, _c, _d, _e;
13591
+ var _a2, _b, _c, _d, _e, _f;
13650
13592
  this.options = options;
13651
13593
  this.startIndex = 0;
13652
13594
  this.endIndex = 0;
@@ -13656,16 +13598,18 @@
13656
13598
  this.attribvalue = "";
13657
13599
  this.attribs = null;
13658
13600
  this.stack = [];
13659
- this.foreignContext = [];
13660
13601
  this.buffers = [];
13661
13602
  this.bufferOffset = 0;
13662
13603
  this.writeIndex = 0;
13663
13604
  this.ended = false;
13664
13605
  this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
13665
- this.lowerCaseTagNames = (_a2 = options.lowerCaseTags) !== null && _a2 !== void 0 ? _a2 : !options.xmlMode;
13666
- this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
13667
- this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);
13668
- (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
13606
+ this.htmlMode = !this.options.xmlMode;
13607
+ this.lowerCaseTagNames = (_a2 = options.lowerCaseTags) !== null && _a2 !== void 0 ? _a2 : this.htmlMode;
13608
+ this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
13609
+ this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
13610
+ this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);
13611
+ this.foreignContext = [!this.htmlMode];
13612
+ (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
13669
13613
  }
13670
13614
  // Tokenizer event handlers
13671
13615
  /** @internal */
@@ -13677,15 +13621,18 @@
13677
13621
  this.startIndex = endIndex;
13678
13622
  }
13679
13623
  /** @internal */
13680
- ontextentity(cp) {
13624
+ ontextentity(cp, endIndex) {
13681
13625
  var _a2, _b;
13682
- const index2 = this.tokenizer.getSectionStart();
13683
- this.endIndex = index2 - 1;
13626
+ this.endIndex = endIndex - 1;
13684
13627
  (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, fromCodePoint$1(cp));
13685
- this.startIndex = index2;
13628
+ this.startIndex = endIndex;
13686
13629
  }
13630
+ /**
13631
+ * Checks if the current tag is a void element. Override this if you want
13632
+ * to specify your own additional void elements.
13633
+ */
13687
13634
  isVoidElement(name2) {
13688
- return !this.options.xmlMode && voidElements.has(name2);
13635
+ return this.htmlMode && voidElements.has(name2);
13689
13636
  }
13690
13637
  /** @internal */
13691
13638
  onopentagname(start, endIndex) {
@@ -13700,19 +13647,21 @@
13700
13647
  var _a2, _b, _c, _d;
13701
13648
  this.openTagStart = this.startIndex;
13702
13649
  this.tagname = name2;
13703
- const impliesClose = !this.options.xmlMode && openImpliesClose.get(name2);
13650
+ const impliesClose = this.htmlMode && openImpliesClose.get(name2);
13704
13651
  if (impliesClose) {
13705
- while (this.stack.length > 0 && impliesClose.has(this.stack[this.stack.length - 1])) {
13706
- const element = this.stack.pop();
13652
+ while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
13653
+ const element = this.stack.shift();
13707
13654
  (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, true);
13708
13655
  }
13709
13656
  }
13710
13657
  if (!this.isVoidElement(name2)) {
13711
- this.stack.push(name2);
13712
- if (foreignContextElements.has(name2)) {
13713
- this.foreignContext.push(true);
13714
- } else if (htmlIntegrationElements.has(name2)) {
13715
- this.foreignContext.push(false);
13658
+ this.stack.unshift(name2);
13659
+ if (this.htmlMode) {
13660
+ if (foreignContextElements.has(name2)) {
13661
+ this.foreignContext.unshift(true);
13662
+ } else if (htmlIntegrationElements.has(name2)) {
13663
+ this.foreignContext.unshift(false);
13664
+ }
13716
13665
  }
13717
13666
  }
13718
13667
  (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name2);
@@ -13739,40 +13688,37 @@
13739
13688
  }
13740
13689
  /** @internal */
13741
13690
  onclosetag(start, endIndex) {
13742
- var _a2, _b, _c, _d, _e, _f;
13691
+ var _a2, _b, _c, _d, _e, _f, _g, _h;
13743
13692
  this.endIndex = endIndex;
13744
13693
  let name2 = this.getSlice(start, endIndex);
13745
13694
  if (this.lowerCaseTagNames) {
13746
13695
  name2 = name2.toLowerCase();
13747
13696
  }
13748
- if (foreignContextElements.has(name2) || htmlIntegrationElements.has(name2)) {
13749
- this.foreignContext.pop();
13697
+ if (this.htmlMode && (foreignContextElements.has(name2) || htmlIntegrationElements.has(name2))) {
13698
+ this.foreignContext.shift();
13750
13699
  }
13751
13700
  if (!this.isVoidElement(name2)) {
13752
- const pos = this.stack.lastIndexOf(name2);
13701
+ const pos = this.stack.indexOf(name2);
13753
13702
  if (pos !== -1) {
13754
- if (this.cbs.onclosetag) {
13755
- let count = this.stack.length - pos;
13756
- while (count--) {
13757
- this.cbs.onclosetag(this.stack.pop(), count !== 0);
13758
- }
13759
- } else
13760
- this.stack.length = pos;
13761
- } else if (!this.options.xmlMode && name2 === "p") {
13703
+ for (let index2 = 0; index2 <= pos; index2++) {
13704
+ const element = this.stack.shift();
13705
+ (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, element, index2 !== pos);
13706
+ }
13707
+ } else if (this.htmlMode && name2 === "p") {
13762
13708
  this.emitOpenTag("p");
13763
13709
  this.closeCurrentTag(true);
13764
13710
  }
13765
- } else if (!this.options.xmlMode && name2 === "br") {
13766
- (_b = (_a2 = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a2, "br");
13767
- (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, "br", {}, true);
13768
- (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", false);
13711
+ } else if (this.htmlMode && name2 === "br") {
13712
+ (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
13713
+ (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
13714
+ (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
13769
13715
  }
13770
13716
  this.startIndex = endIndex + 1;
13771
13717
  }
13772
13718
  /** @internal */
13773
13719
  onselfclosingtag(endIndex) {
13774
13720
  this.endIndex = endIndex;
13775
- if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) {
13721
+ if (this.recognizeSelfClosing || this.foreignContext[0]) {
13776
13722
  this.closeCurrentTag(false);
13777
13723
  this.startIndex = endIndex + 1;
13778
13724
  } else {
@@ -13783,9 +13729,9 @@
13783
13729
  var _a2, _b;
13784
13730
  const name2 = this.tagname;
13785
13731
  this.endOpenTag(isOpenImplied);
13786
- if (this.stack[this.stack.length - 1] === name2) {
13732
+ if (this.stack[0] === name2) {
13787
13733
  (_b = (_a2 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a2, name2, !isOpenImplied);
13788
- this.stack.pop();
13734
+ this.stack.shift();
13789
13735
  }
13790
13736
  }
13791
13737
  /** @internal */
@@ -13853,7 +13799,7 @@
13853
13799
  var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k;
13854
13800
  this.endIndex = endIndex;
13855
13801
  const value = this.getSlice(start, endIndex - offset);
13856
- if (this.options.xmlMode || this.options.recognizeCDATA) {
13802
+ if (!this.htmlMode || this.options.recognizeCDATA) {
13857
13803
  (_b = (_a2 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a2);
13858
13804
  (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
13859
13805
  (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
@@ -13868,8 +13814,9 @@
13868
13814
  var _a2, _b;
13869
13815
  if (this.cbs.onclosetag) {
13870
13816
  this.endIndex = this.startIndex;
13871
- for (let index2 = this.stack.length; index2 > 0; this.cbs.onclosetag(this.stack[--index2], true))
13872
- ;
13817
+ for (let index2 = 0; index2 < this.stack.length; index2++) {
13818
+ this.cbs.onclosetag(this.stack[index2], true);
13819
+ }
13873
13820
  }
13874
13821
  (_b = (_a2 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a2);
13875
13822
  }
@@ -13888,6 +13835,8 @@
13888
13835
  this.endIndex = 0;
13889
13836
  (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
13890
13837
  this.buffers.length = 0;
13838
+ this.foreignContext.length = 0;
13839
+ this.foreignContext.unshift(!this.htmlMode);
13891
13840
  this.bufferOffset = 0;
13892
13841
  this.writeIndex = 0;
13893
13842
  this.ended = false;
@@ -13992,9 +13941,8 @@
13992
13941
  new Parser$1(handler, options).end(data2);
13993
13942
  return handler.root;
13994
13943
  }
13995
- const parse$1 = getParse((content, options, isDocument2, context) => options.xmlMode || options._useHtmlParser2 ? parseDocument$1(content, options) : parseWithParse5(content, options, isDocument2, context));
13996
- const load = getLoad(parse$1, (dom, options) => options.xmlMode || options._useHtmlParser2 ? render$1(dom, options) : renderWithParse5(dom));
13997
- load([]);
13944
+ const parse$1 = getParse((content, options, isDocument2, context) => options._useHtmlParser2 ? parseDocument$1(content, options) : parseWithParse5(content, options, isDocument2, context));
13945
+ const load = getLoad(parse$1, (dom, options) => options._useHtmlParser2 ? render$1(dom, options) : renderWithParse5(dom));
13998
13946
  const defaultSelectorRules = {
13999
13947
  "div,p": ({ $node }) => ({
14000
13948
  queue: $node.children()
@@ -14014,8 +13962,7 @@
14014
13962
  } else {
14015
13963
  let $contents = $node.contents();
14016
13964
  const i = $contents.index(queue);
14017
- if (i >= 0)
14018
- $contents = $contents.slice(0, i);
13965
+ if (i >= 0) $contents = $contents.slice(0, i);
14019
13966
  content = getContent($contents);
14020
13967
  }
14021
13968
  return {
@@ -14037,12 +13984,9 @@
14037
13984
  const SELECTOR_LIST = /^[uo]l$/;
14038
13985
  const SELECTOR_LIST_ITEM = /^li$/;
14039
13986
  function getLevel(tagName) {
14040
- if (SELECTOR_HEADING.test(tagName))
14041
- return +tagName[1];
14042
- if (SELECTOR_LIST.test(tagName))
14043
- return 8;
14044
- if (SELECTOR_LIST_ITEM.test(tagName))
14045
- return 9;
13987
+ if (SELECTOR_HEADING.test(tagName)) return +tagName[1];
13988
+ if (SELECTOR_LIST.test(tagName)) return 8;
13989
+ if (SELECTOR_LIST_ITEM.test(tagName)) return 9;
14046
13990
  return 7;
14047
13991
  }
14048
13992
  function parseHtml(html2, opts) {
@@ -14141,10 +14085,8 @@
14141
14085
  }
14142
14086
  return;
14143
14087
  }
14144
- if (skippingHeading > 0 && level > skippingHeading)
14145
- return;
14146
- if (!$child.is(options.selector))
14147
- return;
14088
+ if (skippingHeading > 0 && level > skippingHeading) return;
14089
+ if (!$child.is(options.selector)) return;
14148
14090
  skippingHeading = 0;
14149
14091
  const isHeading = level <= 6;
14150
14092
  let data2 = $child.data();
@@ -14163,10 +14105,8 @@
14163
14105
  comments: result.comments,
14164
14106
  data: data2
14165
14107
  });
14166
- if (isHeading)
14167
- headingStack.push(childNode);
14168
- if (result.queue)
14169
- checkNodes(result.queue, childNode);
14108
+ if (isHeading) headingStack.push(childNode);
14109
+ if (result.queue) checkNodes(result.queue, childNode);
14170
14110
  });
14171
14111
  }
14172
14112
  }
@@ -14390,8 +14330,7 @@
14390
14330
  "file:": true
14391
14331
  };
14392
14332
  function urlParse(url, slashesDenoteHost) {
14393
- if (url && url instanceof Url)
14394
- return url;
14333
+ if (url && url instanceof Url) return url;
14395
14334
  const u = new Url();
14396
14335
  u.parse(url, slashesDenoteHost);
14397
14336
  return u;
@@ -15526,10 +15465,8 @@
15526
15465
  lastChar = text2.charCodeAt(t.index - 1);
15527
15466
  } else {
15528
15467
  for (j = i - 1; j >= 0; j--) {
15529
- if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak")
15530
- break;
15531
- if (!tokens[j].content)
15532
- continue;
15468
+ if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
15469
+ if (!tokens[j].content) continue;
15533
15470
  lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);
15534
15471
  break;
15535
15472
  }
@@ -15539,10 +15476,8 @@
15539
15476
  nextChar = text2.charCodeAt(pos);
15540
15477
  } else {
15541
15478
  for (j = i + 1; j < tokens.length; j++) {
15542
- if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak")
15543
- break;
15544
- if (!tokens[j].content)
15545
- continue;
15479
+ if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
15480
+ if (!tokens[j].content) continue;
15546
15481
  nextChar = tokens[j].content.charCodeAt(0);
15547
15482
  break;
15548
15483
  }
@@ -15643,8 +15578,7 @@
15643
15578
  const blockTokens = state.tokens;
15644
15579
  const l = blockTokens.length;
15645
15580
  for (let j = 0; j < l; j++) {
15646
- if (blockTokens[j].type !== "inline")
15647
- continue;
15581
+ if (blockTokens[j].type !== "inline") continue;
15648
15582
  const tokens = blockTokens[j].children;
15649
15583
  const max = tokens.length;
15650
15584
  for (curr = 0; curr < max; curr++) {
@@ -15750,11 +15684,9 @@
15750
15684
  StateBlock.prototype.push = function(type, tag, nesting) {
15751
15685
  const token = new Token(type, tag, nesting);
15752
15686
  token.block = true;
15753
- if (nesting < 0)
15754
- this.level--;
15687
+ if (nesting < 0) this.level--;
15755
15688
  token.level = this.level;
15756
- if (nesting > 0)
15757
- this.level++;
15689
+ if (nesting > 0) this.level++;
15758
15690
  this.tokens.push(token);
15759
15691
  return token;
15760
15692
  };
@@ -15946,10 +15878,8 @@
15946
15878
  return false;
15947
15879
  }
15948
15880
  columns = escapedSplit(lineText);
15949
- if (columns.length && columns[0] === "")
15950
- columns.shift();
15951
- if (columns.length && columns[columns.length - 1] === "")
15952
- columns.pop();
15881
+ if (columns.length && columns[0] === "") columns.shift();
15882
+ if (columns.length && columns[columns.length - 1] === "") columns.pop();
15953
15883
  const columnCount = columns.length;
15954
15884
  if (columnCount === 0 || columnCount !== aligns.length) {
15955
15885
  return false;
@@ -16003,10 +15933,8 @@
16003
15933
  break;
16004
15934
  }
16005
15935
  columns = escapedSplit(lineText);
16006
- if (columns.length && columns[0] === "")
16007
- columns.shift();
16008
- if (columns.length && columns[columns.length - 1] === "")
16009
- columns.pop();
15936
+ if (columns.length && columns[0] === "") columns.shift();
15937
+ if (columns.length && columns[columns.length - 1] === "") columns.pop();
16010
15938
  autocompletedCells += columnCount - columns.length;
16011
15939
  if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) {
16012
15940
  break;
@@ -16368,16 +16296,14 @@
16368
16296
  isOrdered = true;
16369
16297
  start = state.bMarks[nextLine] + state.tShift[nextLine];
16370
16298
  markerValue = Number(state.src.slice(start, posAfterMarker - 1));
16371
- if (isTerminatingParagraph && markerValue !== 1)
16372
- return false;
16299
+ if (isTerminatingParagraph && markerValue !== 1) return false;
16373
16300
  } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {
16374
16301
  isOrdered = false;
16375
16302
  } else {
16376
16303
  return false;
16377
16304
  }
16378
16305
  if (isTerminatingParagraph) {
16379
- if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine])
16380
- return false;
16306
+ if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;
16381
16307
  }
16382
16308
  if (silent) {
16383
16309
  return true;
@@ -16592,8 +16518,7 @@
16592
16518
  max = str.length;
16593
16519
  nextLine++;
16594
16520
  }
16595
- } else if (isSpace(ch))
16596
- ;
16521
+ } else if (isSpace(ch)) ;
16597
16522
  else {
16598
16523
  break;
16599
16524
  }
@@ -16619,8 +16544,7 @@
16619
16544
  max = str.length;
16620
16545
  nextLine++;
16621
16546
  }
16622
- } else if (isSpace(ch))
16623
- ;
16547
+ } else if (isSpace(ch)) ;
16624
16548
  else {
16625
16549
  break;
16626
16550
  }
@@ -16628,8 +16552,7 @@
16628
16552
  let titleRes = state.md.helpers.parseLinkTitle(str, pos, max);
16629
16553
  while (titleRes.can_continue) {
16630
16554
  const lineContent = getNextLine(nextLine);
16631
- if (lineContent === null)
16632
- break;
16555
+ if (lineContent === null) break;
16633
16556
  str += lineContent;
16634
16557
  pos = max;
16635
16558
  max = str.length;
@@ -17004,8 +16927,7 @@
17004
16927
  break;
17005
16928
  }
17006
16929
  }
17007
- if (!ok)
17008
- throw new Error("none of the block rules matched");
16930
+ if (!ok) throw new Error("none of the block rules matched");
17009
16931
  state.tight = !hasEmptyLines;
17010
16932
  if (state.isEmpty(state.line - 1)) {
17011
16933
  hasEmptyLines = true;
@@ -17141,34 +17063,24 @@
17141
17063
  }
17142
17064
  const SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;
17143
17065
  function linkify(state, silent) {
17144
- if (!state.md.options.linkify)
17145
- return false;
17146
- if (state.linkLevel > 0)
17147
- return false;
17066
+ if (!state.md.options.linkify) return false;
17067
+ if (state.linkLevel > 0) return false;
17148
17068
  const pos = state.pos;
17149
17069
  const max = state.posMax;
17150
- if (pos + 3 > max)
17151
- return false;
17152
- if (state.src.charCodeAt(pos) !== 58)
17153
- return false;
17154
- if (state.src.charCodeAt(pos + 1) !== 47)
17155
- return false;
17156
- if (state.src.charCodeAt(pos + 2) !== 47)
17157
- return false;
17070
+ if (pos + 3 > max) return false;
17071
+ if (state.src.charCodeAt(pos) !== 58) return false;
17072
+ if (state.src.charCodeAt(pos + 1) !== 47) return false;
17073
+ if (state.src.charCodeAt(pos + 2) !== 47) return false;
17158
17074
  const match = state.pending.match(SCHEME_RE);
17159
- if (!match)
17160
- return false;
17075
+ if (!match) return false;
17161
17076
  const proto = match[1];
17162
17077
  const link2 = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));
17163
- if (!link2)
17164
- return false;
17078
+ if (!link2) return false;
17165
17079
  let url = link2.url;
17166
- if (url.length <= proto.length)
17167
- return false;
17080
+ if (url.length <= proto.length) return false;
17168
17081
  url = url.replace(/\*+$/, "");
17169
17082
  const fullUrl = state.md.normalizeLink(url);
17170
- if (!state.md.validateLink(fullUrl))
17171
- return false;
17083
+ if (!state.md.validateLink(fullUrl)) return false;
17172
17084
  if (!silent) {
17173
17085
  state.pending = state.pending.slice(0, -proto.length);
17174
17086
  const token_o = state.push("link_open", "a", 1);
@@ -17195,8 +17107,7 @@
17195
17107
  if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {
17196
17108
  if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {
17197
17109
  let ws = pmax - 1;
17198
- while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32)
17199
- ws--;
17110
+ while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) ws--;
17200
17111
  state.pending = state.pending.slice(0, ws);
17201
17112
  state.push("hardbreak", "br", 0);
17202
17113
  } else {
@@ -17224,11 +17135,9 @@
17224
17135
  function escape(state, silent) {
17225
17136
  let pos = state.pos;
17226
17137
  const max = state.posMax;
17227
- if (state.src.charCodeAt(pos) !== 92)
17228
- return false;
17138
+ if (state.src.charCodeAt(pos) !== 92) return false;
17229
17139
  pos++;
17230
- if (pos >= max)
17231
- return false;
17140
+ if (pos >= max) return false;
17232
17141
  let ch1 = state.src.charCodeAt(pos);
17233
17142
  if (ch1 === 10) {
17234
17143
  if (!silent) {
@@ -17237,8 +17146,7 @@
17237
17146
  pos++;
17238
17147
  while (pos < max) {
17239
17148
  ch1 = state.src.charCodeAt(pos);
17240
- if (!isSpace(ch1))
17241
- break;
17149
+ if (!isSpace(ch1)) break;
17242
17150
  pos++;
17243
17151
  }
17244
17152
  state.pos = pos;
@@ -17281,8 +17189,7 @@
17281
17189
  const marker = state.src.slice(start, pos);
17282
17190
  const openerLength = marker.length;
17283
17191
  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {
17284
- if (!silent)
17285
- state.pending += marker;
17192
+ if (!silent) state.pending += marker;
17286
17193
  state.pos += openerLength;
17287
17194
  return true;
17288
17195
  }
@@ -17306,8 +17213,7 @@
17306
17213
  state.backticks[closerLength] = matchStart;
17307
17214
  }
17308
17215
  state.backticksScanned = true;
17309
- if (!silent)
17310
- state.pending += marker;
17216
+ if (!silent) state.pending += marker;
17311
17217
  state.pos += openerLength;
17312
17218
  return true;
17313
17219
  }
@@ -17717,13 +17623,10 @@
17717
17623
  const start = state.pos;
17718
17624
  const max = state.posMax;
17719
17625
  for (; ; ) {
17720
- if (++pos >= max)
17721
- return false;
17626
+ if (++pos >= max) return false;
17722
17627
  const ch = state.src.charCodeAt(pos);
17723
- if (ch === 60)
17724
- return false;
17725
- if (ch === 62)
17726
- break;
17628
+ if (ch === 60) return false;
17629
+ if (ch === 62) break;
17727
17630
  }
17728
17631
  const url = state.src.slice(start + 1, pos);
17729
17632
  if (AUTOLINK_RE.test(url)) {
@@ -17796,10 +17699,8 @@
17796
17699
  if (!silent) {
17797
17700
  const token = state.push("html_inline", "", 0);
17798
17701
  token.content = match[0];
17799
- if (isLinkOpen(token.content))
17800
- state.linkLevel++;
17801
- if (isLinkClose(token.content))
17802
- state.linkLevel--;
17702
+ if (isLinkOpen(token.content)) state.linkLevel++;
17703
+ if (isLinkClose(token.content)) state.linkLevel--;
17803
17704
  }
17804
17705
  state.pos += match[0].length;
17805
17706
  return true;
@@ -17809,10 +17710,8 @@
17809
17710
  function entity(state, silent) {
17810
17711
  const pos = state.pos;
17811
17712
  const max = state.posMax;
17812
- if (state.src.charCodeAt(pos) !== 38)
17813
- return false;
17814
- if (pos + 1 >= max)
17815
- return false;
17713
+ if (state.src.charCodeAt(pos) !== 38) return false;
17714
+ if (pos + 1 >= max) return false;
17816
17715
  const ch = state.src.charCodeAt(pos + 1);
17817
17716
  if (ch === 35) {
17818
17717
  const match = state.src.slice(pos).match(DIGITAL_RE);
@@ -17848,8 +17747,7 @@
17848
17747
  function processDelimiters(delimiters) {
17849
17748
  const openersBottom = {};
17850
17749
  const max = delimiters.length;
17851
- if (!max)
17852
- return;
17750
+ if (!max) return;
17853
17751
  let headerIdx = 0;
17854
17752
  let lastTokenIdx = -2;
17855
17753
  const jumps = [];
@@ -17861,8 +17759,7 @@
17861
17759
  }
17862
17760
  lastTokenIdx = closer.token;
17863
17761
  closer.length = closer.length || 0;
17864
- if (!closer.close)
17865
- continue;
17762
+ if (!closer.close) continue;
17866
17763
  if (!openersBottom.hasOwnProperty(closer.marker)) {
17867
17764
  openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];
17868
17765
  }
@@ -17871,8 +17768,7 @@
17871
17768
  let newMinOpenerIdx = openerIdx;
17872
17769
  for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {
17873
17770
  const opener = delimiters[openerIdx];
17874
- if (opener.marker !== closer.marker)
17875
- continue;
17771
+ if (opener.marker !== closer.marker) continue;
17876
17772
  if (opener.open && opener.end < 0) {
17877
17773
  let isOddMatch = false;
17878
17774
  if (opener.close || closer.open) {
@@ -17916,11 +17812,9 @@
17916
17812
  const tokens = state.tokens;
17917
17813
  const max = state.tokens.length;
17918
17814
  for (curr = last2 = 0; curr < max; curr++) {
17919
- if (tokens[curr].nesting < 0)
17920
- level--;
17815
+ if (tokens[curr].nesting < 0) level--;
17921
17816
  tokens[curr].level = level;
17922
- if (tokens[curr].nesting > 0)
17923
- level++;
17817
+ if (tokens[curr].nesting > 0) level++;
17924
17818
  if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") {
17925
17819
  tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
17926
17820
  } else {
@@ -18394,14 +18288,11 @@
18394
18288
  LinkifyIt.prototype.matchAtStart = function matchAtStart(text2) {
18395
18289
  this.__text_cache__ = text2;
18396
18290
  this.__index__ = -1;
18397
- if (!text2.length)
18398
- return null;
18291
+ if (!text2.length) return null;
18399
18292
  const m = this.re.schema_at_start.exec(text2);
18400
- if (!m)
18401
- return null;
18293
+ if (!m) return null;
18402
18294
  const len = this.testSchemaAt(text2, m[2], m[0].length);
18403
- if (!len)
18404
- return null;
18295
+ if (!len) return null;
18405
18296
  this.__schema__ = m[2];
18406
18297
  this.__index__ = m.index + m[1].length;
18407
18298
  this.__last_index__ = m.index + m[0].length + len;
@@ -19321,7 +19212,6 @@
19321
19212
  return {};
19322
19213
  }
19323
19214
  });
19324
- const pluginCheckbox = plugin$3;
19325
19215
  const ALIAS = Symbol.for("yaml.alias");
19326
19216
  const DOC = Symbol.for("yaml.document");
19327
19217
  const MAP = Symbol.for("yaml.map");
@@ -22776,19 +22666,18 @@ ${pointer}
22776
22666
  onError(props.start, "MISSING_CHAR", `Missing , between ${fcName} items`);
22777
22667
  if (props.comment) {
22778
22668
  let prevItemComment = "";
22779
- loop:
22780
- for (const st of start) {
22781
- switch (st.type) {
22782
- case "comma":
22783
- case "space":
22784
- break;
22785
- case "comment":
22786
- prevItemComment = st.source.substring(1);
22787
- break loop;
22788
- default:
22789
- break loop;
22790
- }
22669
+ loop: for (const st of start) {
22670
+ switch (st.type) {
22671
+ case "comma":
22672
+ case "space":
22673
+ break;
22674
+ case "comment":
22675
+ prevItemComment = st.source.substring(1);
22676
+ break loop;
22677
+ default:
22678
+ break loop;
22791
22679
  }
22680
+ }
22792
22681
  if (prevItemComment) {
22793
22682
  let prev2 = coll.items[coll.items.length - 1];
22794
22683
  if (isPair(prev2))
@@ -24147,27 +24036,26 @@ ${end2.comment}` : end2.comment;
24147
24036
  let nl = this.pos - 1;
24148
24037
  let indent = 0;
24149
24038
  let ch;
24150
- loop:
24151
- for (let i2 = this.pos; ch = this.buffer[i2]; ++i2) {
24152
- switch (ch) {
24153
- case " ":
24154
- indent += 1;
24155
- break;
24156
- case "\n":
24157
- nl = i2;
24158
- indent = 0;
24039
+ loop: for (let i2 = this.pos; ch = this.buffer[i2]; ++i2) {
24040
+ switch (ch) {
24041
+ case " ":
24042
+ indent += 1;
24043
+ break;
24044
+ case "\n":
24045
+ nl = i2;
24046
+ indent = 0;
24047
+ break;
24048
+ case "\r": {
24049
+ const next2 = this.buffer[i2 + 1];
24050
+ if (!next2 && !this.atEnd)
24051
+ return this.setNext("block-scalar");
24052
+ if (next2 === "\n")
24159
24053
  break;
24160
- case "\r": {
24161
- const next2 = this.buffer[i2 + 1];
24162
- if (!next2 && !this.atEnd)
24163
- return this.setNext("block-scalar");
24164
- if (next2 === "\n")
24165
- break;
24166
- }
24167
- default:
24168
- break loop;
24169
24054
  }
24055
+ default:
24056
+ break loop;
24170
24057
  }
24058
+ }
24171
24059
  if (!ch && !this.atEnd)
24172
24060
  return this.setNext("block-scalar");
24173
24061
  if (indent >= this.indentNext) {
@@ -24420,17 +24308,16 @@ ${end2.comment}` : end2.comment;
24420
24308
  if (prev2.length === 0)
24421
24309
  return [];
24422
24310
  let i = prev2.length;
24423
- loop:
24424
- while (--i >= 0) {
24425
- switch (prev2[i].type) {
24426
- case "doc-start":
24427
- case "explicit-key-ind":
24428
- case "map-value-ind":
24429
- case "seq-item-ind":
24430
- case "newline":
24431
- break loop;
24432
- }
24311
+ loop: while (--i >= 0) {
24312
+ switch (prev2[i].type) {
24313
+ case "doc-start":
24314
+ case "explicit-key-ind":
24315
+ case "map-value-ind":
24316
+ case "seq-item-ind":
24317
+ case "newline":
24318
+ break loop;
24433
24319
  }
24320
+ }
24434
24321
  while (((_a2 = prev2[++i]) == null ? void 0 : _a2.type) === "space") {
24435
24322
  }
24436
24323
  return prev2.splice(i, prev2.length);
@@ -25240,11 +25127,6 @@ ${end2.comment}` : end2.comment;
25240
25127
  }
25241
25128
  function parse(src, reviver, options) {
25242
25129
  let _reviver = void 0;
25243
- if (typeof reviver === "function") {
25244
- _reviver = reviver;
25245
- } else if (options === void 0 && reviver && typeof reviver === "object") {
25246
- options = reviver;
25247
- }
25248
25130
  const doc = parseDocument(src, options);
25249
25131
  if (!doc)
25250
25132
  return null;
@@ -25264,11 +25146,9 @@ ${end2.comment}` : end2.comment;
25264
25146
  transformHooks.beforeParse.tap((_md, context) => {
25265
25147
  var _a2;
25266
25148
  const { content } = context;
25267
- if (!/^---\r?\n/.test(content))
25268
- return;
25149
+ if (!/^---\r?\n/.test(content)) return;
25269
25150
  const match = /\n---\r?\n/.exec(content);
25270
- if (!match)
25271
- return;
25151
+ if (!match) return;
25272
25152
  const raw = content.slice(4, match.index).trimEnd();
25273
25153
  let frontmatter;
25274
25154
  try {
@@ -25293,29 +25173,24 @@ ${end2.comment}` : end2.comment;
25293
25173
  }
25294
25174
  });
25295
25175
  function normalizeMarkmapJsonOptions(options) {
25296
- if (!options)
25297
- return;
25176
+ if (!options) return;
25298
25177
  ["color", "extraJs", "extraCss"].forEach((key) => {
25299
- if (options[key] != null)
25300
- options[key] = normalizeStringArray(options[key]);
25178
+ if (options[key] != null) options[key] = normalizeStringArray(options[key]);
25301
25179
  });
25302
25180
  ["duration", "maxWidth", "initialExpandLevel"].forEach((key) => {
25303
- if (options[key] != null)
25304
- options[key] = normalizeNumber(options[key]);
25181
+ if (options[key] != null) options[key] = normalizeNumber(options[key]);
25305
25182
  });
25306
25183
  return options;
25307
25184
  }
25308
25185
  function normalizeStringArray(value) {
25309
25186
  let result;
25310
- if (typeof value === "string")
25311
- result = [value];
25187
+ if (typeof value === "string") result = [value];
25312
25188
  else if (Array.isArray(value))
25313
25189
  result = value.filter((item) => item && typeof item === "string");
25314
25190
  return (result == null ? void 0 : result.length) ? result : void 0;
25315
25191
  }
25316
25192
  function normalizeNumber(value) {
25317
- if (isNaN(+value))
25318
- return;
25193
+ if (isNaN(+value)) return;
25319
25194
  return +value;
25320
25195
  }
25321
25196
  function patchJSItem(urlBuilder, item) {
@@ -25344,14 +25219,14 @@ ${end2.comment}` : end2.comment;
25344
25219
  }
25345
25220
  const name$3 = "hljs";
25346
25221
  const preloadScripts$1 = [
25347
- `@highlightjs/cdn-assets@${"11.8.0"}/highlight.min.js`
25222
+ `@highlightjs/cdn-assets@${"11.10.0"}/highlight.min.js`
25348
25223
  ].map((path) => buildJSItem(path));
25349
25224
  const styles$1 = [
25350
- `@highlightjs/cdn-assets@${"11.8.0"}/styles/default.min.css`
25225
+ `@highlightjs/cdn-assets@${"11.10.0"}/styles/default.min.css`
25351
25226
  ].map((path) => buildCSSItem(path));
25352
25227
  const config$1 = {
25353
25228
  versions: {
25354
- hljs: "11.8.0"
25229
+ hljs: "11.10.0"
25355
25230
  },
25356
25231
  preloadScripts: preloadScripts$1,
25357
25232
  styles: styles$1
@@ -25395,7 +25270,6 @@ ${end2.comment}` : end2.comment;
25395
25270
  };
25396
25271
  }
25397
25272
  });
25398
- const pluginHljs = plugin$2;
25399
25273
  var katex = require$$0;
25400
25274
  function isValidDelim(state, pos) {
25401
25275
  var prevChar, nextChar, max = state.posMax, can_open = true, can_close = true;
@@ -25567,18 +25441,18 @@ ${end2.comment}` : end2.comment;
25567
25441
  }
25568
25442
  const name$2 = "katex";
25569
25443
  const preloadScripts = [
25570
- `katex@${"0.16.8"}/dist/katex.min.js`
25444
+ `katex@${"0.16.11"}/dist/katex.min.js`
25571
25445
  ].map((path) => buildJSItem(path));
25572
25446
  const webfontloader = buildJSItem(
25573
25447
  `webfontloader@${"1.6.28"}/webfontloader.js`
25574
25448
  );
25575
25449
  webfontloader.data.defer = true;
25576
- const styles = [`katex@${"0.16.8"}/dist/katex.min.css`].map(
25450
+ const styles = [`katex@${"0.16.11"}/dist/katex.min.css`].map(
25577
25451
  (path) => buildCSSItem(path)
25578
25452
  );
25579
25453
  const config = {
25580
25454
  versions: {
25581
- katex: "0.16.8",
25455
+ katex: "0.16.11",
25582
25456
  webfontloader: "1.6.28"
25583
25457
  },
25584
25458
  preloadScripts,
@@ -25684,7 +25558,6 @@ ${end2.comment}` : end2.comment;
25684
25558
  };
25685
25559
  }
25686
25560
  });
25687
- const pluginKatex = plugin$1;
25688
25561
  const name$1 = "npmUrl";
25689
25562
  const pluginNpmUrl = definePlugin({
25690
25563
  name: name$1,
@@ -25730,14 +25603,13 @@ ${end2.comment}` : end2.comment;
25730
25603
  return {};
25731
25604
  }
25732
25605
  });
25733
- const pluginSourceLines = plugin;
25734
25606
  const plugins = [
25735
25607
  pluginFrontmatter,
25736
- pluginKatex,
25737
- pluginHljs,
25608
+ plugin$1,
25609
+ plugin$2,
25738
25610
  pluginNpmUrl,
25739
- pluginCheckbox,
25740
- pluginSourceLines
25611
+ plugin$3,
25612
+ plugin
25741
25613
  ];
25742
25614
  const builtInPlugins = plugins;
25743
25615
  function cleanNode(node) {
@@ -25796,10 +25668,8 @@ ${end2.comment}` : end2.comment;
25796
25668
  keys ?? (keys = this.plugins.map((plugin2) => plugin2.name));
25797
25669
  for (const assets of keys.map((key) => this.assetsMap[key])) {
25798
25670
  if (assets) {
25799
- if (assets.styles)
25800
- styles2.push(...assets.styles);
25801
- if (assets.scripts)
25802
- scripts.push(...assets.scripts);
25671
+ if (assets.styles) styles2.push(...assets.styles);
25672
+ if (assets.scripts) scripts.push(...assets.scripts);
25803
25673
  }
25804
25674
  }
25805
25675
  return {
@@ -25816,7 +25686,7 @@ ${end2.comment}` : end2.comment;
25816
25686
  }
25817
25687
  }
25818
25688
  const transformerVersions = {
25819
- "markmap-lib": "0.17.2-alpha.0+320d11b"
25689
+ "markmap-lib": "0.17.3-alpha.1"
25820
25690
  };
25821
25691
  exports.Transformer = Transformer;
25822
25692
  exports.builtInPlugins = builtInPlugins;