@visulima/html 1.0.0-alpha.2 → 1.0.0-alpha.20

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/LICENSE.md +50 -93
  3. package/README.md +69 -10
  4. package/dist/css.d.ts +38 -0
  5. package/dist/css.js +2 -0
  6. package/dist/escape.d.ts +20 -0
  7. package/dist/escape.js +1 -0
  8. package/dist/html.d.ts +58 -0
  9. package/dist/html.js +1 -0
  10. package/dist/index.d.ts +33 -383
  11. package/dist/index.js +1 -11
  12. package/dist/packem_shared/_commonjsHelpers-CWAkuNXM.js +1 -0
  13. package/dist/packem_shared/decode-DPHm0sXO.js +1 -0
  14. package/dist/packem_shared/escapeCss-BtzOEJZW.js +1 -0
  15. package/dist/packem_shared/escapeHtml-CiWsYlrs.js +1 -0
  16. package/dist/packem_shared/escapeJs-C4cWI12i.js +1 -0
  17. package/dist/packem_shared/htmlTags-BWCBwnc_.js +1 -0
  18. package/dist/packem_shared/isHtml-B7-ANsKf.js +1 -0
  19. package/dist/packem_shared/isValidCustomElementName-BGH0NihB.js +1 -0
  20. package/dist/packem_shared/stripHtml-BJMSstzr.js +53 -0
  21. package/dist/packem_shared/voidHtmlTags-Cb8VOd4K.js +1 -0
  22. package/dist/sanitize.d.ts +1 -0
  23. package/dist/sanitize.js +1 -0
  24. package/dist/strip.d.ts +67 -0
  25. package/dist/strip.js +1 -0
  26. package/package.json +39 -67
  27. package/dist/packem_shared/_commonjsHelpers-B85MJLTf.js +0 -5
  28. package/dist/packem_shared/css-eLBFmNQq.js +0 -32
  29. package/dist/packem_shared/encode-jgknlkNE.js +0 -195
  30. package/dist/packem_shared/escapeCss-gSWL0xVj.js +0 -17
  31. package/dist/packem_shared/escapeHtml-Cztfu84O.js +0 -18
  32. package/dist/packem_shared/escapeJs-8hCFOEdN.js +0 -6
  33. package/dist/packem_shared/html-B-Khp3Xj.js +0 -24
  34. package/dist/packem_shared/htmlTags-CnZinEi6.js +0 -132
  35. package/dist/packem_shared/isValidCustomElementName-Czb_BiVq.js +0 -16
  36. package/dist/packem_shared/stripHtmlDefaultOptions-Dj_FII9M.js +0 -1331
  37. package/dist/packem_shared/voidHtmlTags-Db3mUI2j.js +0 -30
@@ -0,0 +1,20 @@
1
+ export { escapeCss } from '@std/html/unstable-escape-css';
2
+ export { escapeJs } from '@std/html/unstable-escape-js';
3
+ /**
4
+ * Escapes HTML special characters in a string.
5
+ * Optimized for performance with minimal allocations.
6
+ * @param value The value to escape. Will be converted to string.
7
+ * @param isAttribute If true, also escapes double quotes (for HTML attributes).
8
+ * @returns The escaped string.
9
+ * @example
10
+ * escapeHtml('<script>alert("xss")<\/script>');
11
+ * // => '&lt;script>alert("xss")&lt;/script>'
12
+ * @example
13
+ * escapeHtml('<div>', true);
14
+ * // => '&lt;div>'
15
+ * @example
16
+ * escapeHtml('value="test"', true);
17
+ * // => 'value=&quot;test&quot;'
18
+ */
19
+ declare const escapeHtml: (value: unknown, isAttribute?: boolean) => string;
20
+ export { escapeHtml };
package/dist/escape.js ADDED
@@ -0,0 +1 @@
1
+ import{default as o}from"./packem_shared/escapeHtml-CiWsYlrs.js";import{escapeCss as r}from"./packem_shared/escapeCss-BtzOEJZW.js";import{escapeJs as t}from"./packem_shared/escapeJs-C4cWI12i.js";export{r as escapeCss,o as escapeHtml,t as escapeJs};
package/dist/html.d.ts ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Branded wrapper produced by {@link html.raw}. Values wrapped in this marker are
3
+ * interpolated into the `html` tagged template (or composed via arrays) verbatim,
4
+ * without escaping. Use it only for HTML you already trust.
5
+ */
6
+ interface RawHtml {
7
+ /** Internal brand used to detect trusted fragments. */
8
+ readonly __isRawHtml: true;
9
+ /** The trusted HTML payload. */
10
+ readonly value: string;
11
+ }
12
+ /**
13
+ * Type guard that detects a {@link RawHtml} marker (including nested fragments
14
+ * produced by the `html` tag, which are themselves marked as raw).
15
+ * @param value The value to test.
16
+ * @returns `true` when the value is a trusted raw HTML fragment.
17
+ */
18
+ declare const isRawHtml: (value: unknown) => value is RawHtml;
19
+ /**
20
+ * Template tag function for HTML that escapes interpolated values to prevent XSS.
21
+ * Template strings are used as-is, but all interpolated values are HTML-escaped.
22
+ *
23
+ * Interpolated arrays are flattened and joined with an empty string (no commas), and
24
+ * values wrapped with {@link html.raw} are inlined without escaping, enabling fragment
25
+ * composition. Because the tag returns a plain string, nested fragments must be wrapped
26
+ * with `html.raw` to avoid double-escaping.
27
+ * @param strings Template literal strings
28
+ * @param values Template literal values (escaped unless wrapped with {@link html.raw})
29
+ * @returns The HTML string with interpolated values escaped
30
+ * @example
31
+ * html`<div>Hello</div>`
32
+ * // => '<div>Hello</div>'
33
+ * @example
34
+ * html`<div>${'<script>alert("xss")<\/script>'}</div>`
35
+ * // => '<div>&lt;script>alert("xss")&lt;/script></div>'
36
+ * @example
37
+ * html`<ul>${items.map((i) => html.raw(html`<li>${i}</li>`))}</ul>`
38
+ * // => '<ul><li>a</li><li>b</li></ul>'
39
+ */
40
+ declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
41
+ /**
42
+ * Function overload for HTML with explicit escaping control.
43
+ *
44
+ * Escapes by default (attribute-safe), matching the template-tag form. Pass
45
+ * `shouldEscape: false` to opt out and return the input verbatim — only do this
46
+ * for HTML you already trust or have sanitized, since it disables XSS protection.
47
+ * @param value The HTML string to process
48
+ * @param shouldEscape When `true`/omitted, escapes HTML. When `false`, returns the input as-is (unsafe for untrusted input).
49
+ * @returns The processed HTML string
50
+ * @example
51
+ * html('<script>alert("xss")<\/script>')
52
+ * // => '&lt;script>alert(&quot;xss&quot;)&lt;/script>'
53
+ * @example
54
+ * html('<div></div>', false)
55
+ * // => '<div></div>'
56
+ */
57
+ declare function html(value: string, shouldEscape?: boolean): string;
58
+ export { type RawHtml, html as default, isRawHtml };
package/dist/html.js ADDED
@@ -0,0 +1 @@
1
+ import o from"./packem_shared/escapeHtml-CiWsYlrs.js";const u="__isRawHtml",l=r=>typeof r=="object"&&r!==null&&r[u]===!0,s=r=>{if(l(r))return r.value;if(Array.isArray(r)){let e="";for(const t of r)e+=s(t);return e}return o(r,!0)};function c(r,...e){if(Array.isArray(r)&&"raw"in r){const n=r;let a=n[0]??"";for(const[f,i]of e.entries())a+=s(i),a+=n[f+1]??"";return a}const t=r;return e[0]===!1?t:o(t,!0)}c.raw=r=>({[u]:!0,value:r});export{c as default,l as isRawHtml};
package/dist/index.d.ts CHANGED
@@ -1,295 +1,43 @@
1
- import { Properties } from 'csstype';
2
- export { Properties as CSSProperties } from 'csstype';
1
+ export { type CSSProperties, type FlexibleCSSProperties, default as css } from "./css.js";
2
+ export { escapeHtml } from "./escape.js";
3
+ export { type RawHtml, default as html, isRawHtml } from "./html.js";
4
+ export { escapeCss } from '@std/html/unstable-escape-css';
5
+ export { escapeJs } from '@std/html/unstable-escape-js';
6
+ export { isValidCustomElementName } from '@std/html/unstable-is-valid-custom-element-name';
3
7
  export { default as sanitizeHtml } from 'sanitize-html';
4
-
5
- type FlexibleCSSProperties$1 = {
6
- [K in keyof Properties]?: Properties[K] | string | number | null | undefined;
7
- };
8
- declare function css(strings: TemplateStringsArray, ...values: unknown[]): string;
9
- declare function css(value: string | FlexibleCSSProperties$1 | Properties, escape?: boolean): string;
10
-
11
- declare const escapeHtml: (value: unknown, isAttribute?: boolean) => string;
12
-
13
- declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
14
- declare function html(value: string, escape?: boolean): string;
15
-
16
- /**
17
- * Escapes a string for direct interpolation into an external
18
- * CSS style sheet, within a `<style>` element, or in a selector.
19
- *
20
- * Uses identical logic to
21
- * [`CSS.escape`](https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape_static)
22
- * in browsers.
23
- *
24
- * @param str The string to escape.
25
- * @returns The escaped string.
26
- *
27
- * @example Usage
28
- * ```ts
29
- * import { escapeCss } from "@std/html/unstable-escape-css";
30
- * import { assertEquals } from "@std/assert";
31
- *
32
- * // Invalid in a CSS selector, even though it's a valid HTML ID
33
- * const elementId = "123";
34
- * // Unsafe for interpolation
35
- * const contentInput = `<!-- '" --></style>`;
36
- *
37
- * const selector = `#${escapeCss(elementId)}`;
38
- * const content = `"${escapeCss(contentInput)}"`;
39
- *
40
- * // Usable as a CSS selector
41
- * assertEquals(selector, String.raw`#\31 23`);
42
- * // Safe for interpolation
43
- * assertEquals(content, String.raw`"\<\!--\ \'\"\ --\>\<\/style\>"`);
44
- *
45
- * // Usage
46
- * `<style>
47
- * ${selector}::after {
48
- * content: ${content};
49
- * }
50
- * </style>`;
51
- * ```
52
- */ declare function escapeCss(str: string): string;
53
-
54
- /** Options for {@linkcode escapeJs} */ type EscapeJsOptions = {
55
- /**
56
- * The number of spaces or tab to use for indentation in the output.
57
- * If not specified, no extra whitespace is added.
58
- */ space?: number | "\t";
59
- };
60
- /**
61
- * Escapes a JavaScript object or other data for safe interpolation inside a `<script>` tag.
62
- *
63
- * The data must be JSON-serializable (plain object, array, string, number (excluding `NaN`/infinities), boolean, or null).
64
- *
65
- * The output is fully JSON-compatible, with additional escaping of sequences that can be problematic within `<script>` tags.
66
- *
67
- * @param data The data to escape.
68
- * @param options Options for escaping.
69
- * @returns The escaped string.
70
- *
71
- * @example Escaping a string
72
- * ```ts
73
- * import { escapeJs } from "@std/html/unstable-escape-js";
74
- * import { assertEquals } from "@std/assert";
75
- * const input = "\u2028\u2029</script>";
76
- * assertEquals(escapeJs(input), '"\\u2028\\u2029\\u003c/script>"');
77
- * ```
78
- *
79
- * @example Escaping an object
80
- * ```ts
81
- * import { escapeJs } from "@std/html/unstable-escape-js";
82
- * import { assertEquals } from "@std/assert";
83
- * const input = {
84
- * "<SCRIPT>": "</script>",
85
- * "<!--": "\u2028\u2029<>",
86
- * };
87
- * assertEquals(
88
- * escapeJs(input),
89
- * '{"\\u003cSCRIPT>":"\\u003c/script>","\\u003c!--":"\\u2028\\u2029<>"}',
90
- * );
91
- * ```
92
- *
93
- * @example Interpolating arbitrary data in a script tag
94
- * ```ts no-assert ignore
95
- * // might be nested arbitrarily deeply
96
- * declare const data: string | number | Record<string, string> | Record<string, Record<string, string>>;
97
- * const scriptHtml = `<script>window.handleData(${escapeJs(data)})</script>`;
98
- * ```
99
- *
100
- * @example Interpolating into a JSON script (e.g. importmap)
101
- * ```ts no-assert ignore
102
- * const importMap = { imports: { zod: 'https://esm.sh/v131/zod@3.21.4' } };
103
- * const importMapHtml = `<script type="importmap">${escapeJs(importMap)}</script>`;
104
- * ```
105
- */ declare function escapeJs(data: unknown, options?: EscapeJsOptions): string;
106
-
107
- /**
108
- * Returns whether the given string is a valid custom element name, as per the
109
- * requirements defined in
110
- * {@link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name}.
111
- *
112
- * @experimental **UNSTABLE**: New API, yet to be vetted.
113
- *
114
- * The element name must not be any of the following:
115
- * - `annotation-xml`
116
- * - `color-profile`
117
- * - `font-face`
118
- * - `font-face-src`
119
- * - `font-face-uri`
120
- * - `font-face-format`
121
- * - `font-face-name`
122
- * - `missing-glyph`
123
- *
124
- * @example Usage
125
- *
126
- * Using a valid custom element name
127
- *
128
- * ```ts
129
- * import { isValidCustomElementName } from "@std/html/unstable-is-valid-custom-element-name";
130
- * import { assertEquals } from "@std/assert";
131
- *
132
- * assertEquals(isValidCustomElementName("custom-element"), true);
133
- * assertEquals(isValidCustomElementName("font-face"), false);
134
- * assertEquals(isValidCustomElementName("custom-element@"), false);
135
- * ```
136
- *
137
- * @param elementName The element name to be validate
138
- * @returns `true` if the element name is valid, `false` otherwise.
139
- */ declare function isValidCustomElementName(elementName: string): boolean;
140
-
8
+ export { type StripHtmlAttribute, type StripHtmlCbObj, type StripHtmlOptions, type StripHtmlResult, type StripHtmlTag, stripHtml, stripHtmlDefaultOptions } from "./strip.js";
9
+ import 'csstype';
10
+ import 'ranges-push';
141
11
  type Level = 'xml' | 'html4' | 'html5' | 'all';
142
12
  interface CommonOptions {
143
- level?: Level;
13
+ level?: Level;
144
14
  }
145
15
  type EncodeMode = 'specialChars' | 'nonAscii' | 'nonAsciiPrintable' | 'nonAsciiPrintableOnly' | 'extensive';
146
16
  interface EncodeOptions extends CommonOptions {
147
- mode?: EncodeMode;
148
- numeric?: 'decimal' | 'hexadecimal';
17
+ mode?: EncodeMode;
18
+ numeric?: 'decimal' | 'hexadecimal';
149
19
  }
150
20
  type DecodeScope = 'strict' | 'body' | 'attribute';
151
21
  interface DecodeOptions extends CommonOptions {
152
- scope?: DecodeScope;
22
+ scope?: DecodeScope;
153
23
  }
154
24
  /** Encodes all the necessary (specified by `level`) characters in the text */
155
- declare function encode(text: string | undefined | null, { mode, numeric, level }?: EncodeOptions): string;
25
+ declare function encode(text: string | undefined | null, {
26
+ mode,
27
+ numeric,
28
+ level
29
+ }?: EncodeOptions): string;
156
30
  /** Decodes a single entity */
157
- declare function decodeEntity(entity: string | undefined | null, { level }?: CommonOptions): string;
31
+ declare function decodeEntity(entity: string | undefined | null, {
32
+ level
33
+ }?: CommonOptions): string;
158
34
  /** Decodes all entities in the text */
159
- declare function decode(text: string | undefined | null, { level, scope }?: DecodeOptions): string;
160
-
161
- type HtmlTags =
162
- | 'a'
163
- | 'abbr'
164
- | 'address'
165
- | 'area'
166
- | 'article'
167
- | 'aside'
168
- | 'audio'
169
- | 'b'
170
- | 'base'
171
- | 'bdi'
172
- | 'bdo'
173
- | 'blockquote'
174
- | 'body'
175
- | 'br'
176
- | 'button'
177
- | 'canvas'
178
- | 'caption'
179
- | 'cite'
180
- | 'code'
181
- | 'col'
182
- | 'colgroup'
183
- | 'data'
184
- | 'datalist'
185
- | 'dd'
186
- | 'del'
187
- | 'details'
188
- | 'dfn'
189
- | 'dialog'
190
- | 'div'
191
- | 'dl'
192
- | 'dt'
193
- | 'em'
194
- | 'embed'
195
- | 'fieldset'
196
- | 'figcaption'
197
- | 'figure'
198
- | 'footer'
199
- | 'form'
200
- | 'h1'
201
- | 'h2'
202
- | 'h3'
203
- | 'h4'
204
- | 'h5'
205
- | 'h6'
206
- | 'head'
207
- | 'header'
208
- | 'hgroup'
209
- | 'hr'
210
- | 'html'
211
- | 'i'
212
- | 'iframe'
213
- | 'img'
214
- | 'input'
215
- | 'ins'
216
- | 'kbd'
217
- | 'label'
218
- | 'legend'
219
- | 'li'
220
- | 'link'
221
- | 'main'
222
- | 'map'
223
- | 'mark'
224
- | 'math'
225
- | 'menu'
226
- | 'meta'
227
- | 'meter'
228
- | 'nav'
229
- | 'noscript'
230
- | 'object'
231
- | 'ol'
232
- | 'optgroup'
233
- | 'option'
234
- | 'output'
235
- | 'p'
236
- | 'picture'
237
- | 'pre'
238
- | 'progress'
239
- | 'q'
240
- | 'rp'
241
- | 'rt'
242
- | 'ruby'
243
- | 's'
244
- | 'samp'
245
- | 'script'
246
- | 'search'
247
- | 'section'
248
- | 'select'
249
- | 'selectedcontent'
250
- | 'slot'
251
- | 'small'
252
- | 'source'
253
- | 'span'
254
- | 'strong'
255
- | 'style'
256
- | 'sub'
257
- | 'summary'
258
- | 'sup'
259
- | 'svg'
260
- | 'table'
261
- | 'tbody'
262
- | 'td'
263
- | 'template'
264
- | 'textarea'
265
- | 'tfoot'
266
- | 'th'
267
- | 'thead'
268
- | 'time'
269
- | 'title'
270
- | 'tr'
271
- | 'track'
272
- | 'u'
273
- | 'ul'
274
- | 'var'
275
- | 'video'
276
- | 'wbr';
277
-
278
- type VoidHtmlTags =
279
- | 'area'
280
- | 'base'
281
- | 'br'
282
- | 'col'
283
- | 'embed'
284
- | 'hr'
285
- | 'img'
286
- | 'input'
287
- | 'link'
288
- | 'meta'
289
- | 'source'
290
- | 'track'
291
- | 'wbr';
292
-
35
+ declare function decode(text: string | undefined | null, {
36
+ level,
37
+ scope
38
+ }?: DecodeOptions): string;
39
+ type HtmlTags = 'a' | 'abbr' | 'address' | 'area' | 'article' | 'aside' | 'audio' | 'b' | 'base' | 'bdi' | 'bdo' | 'blockquote' | 'body' | 'br' | 'button' | 'canvas' | 'caption' | 'cite' | 'code' | 'col' | 'colgroup' | 'data' | 'datalist' | 'dd' | 'del' | 'details' | 'dfn' | 'dialog' | 'div' | 'dl' | 'dt' | 'em' | 'embed' | 'fieldset' | 'figcaption' | 'figure' | 'footer' | 'form' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'head' | 'header' | 'hgroup' | 'hr' | 'html' | 'i' | 'iframe' | 'img' | 'input' | 'ins' | 'kbd' | 'label' | 'legend' | 'li' | 'link' | 'main' | 'map' | 'mark' | 'math' | 'menu' | 'meta' | 'meter' | 'nav' | 'noscript' | 'object' | 'ol' | 'optgroup' | 'option' | 'output' | 'p' | 'picture' | 'pre' | 'progress' | 'q' | 'rp' | 'rt' | 'ruby' | 's' | 'samp' | 'script' | 'search' | 'section' | 'select' | 'selectedcontent' | 'slot' | 'small' | 'source' | 'span' | 'strong' | 'style' | 'sub' | 'summary' | 'sup' | 'svg' | 'table' | 'tbody' | 'td' | 'template' | 'textarea' | 'tfoot' | 'th' | 'thead' | 'time' | 'title' | 'tr' | 'track' | 'u' | 'ul' | 'var' | 'video' | 'wbr';
40
+ type VoidHtmlTags = 'area' | 'base' | 'br' | 'col' | 'embed' | 'hr' | 'img' | 'input' | 'link' | 'meta' | 'source' | 'track' | 'wbr';
293
41
  /**
294
42
  List of standard HTML tags.
295
43
 
@@ -302,7 +50,6 @@ console.log(htmlTags);
302
50
  ```
303
51
  */
304
52
  declare const htmlTags: readonly HtmlTags[];
305
-
306
53
  /**
307
54
  List of standard, self-closing HTML tags.
308
55
 
@@ -315,108 +62,11 @@ console.log(voidHtmlTags);
315
62
  ```
316
63
  */
317
64
  declare const voidHtmlTags: readonly VoidHtmlTags[];
318
-
319
- type Range$1 =
320
- | [from: number, to: number]
321
- | [from: number, to: number, whatToInsert: string | null | undefined];
322
- interface Opts$1 {
323
- limitToBeAddedWhitespace: boolean;
324
- limitLinebreaksCount: number;
325
- mergeType: 1 | 2 | "1" | "2" | undefined;
326
- }
327
- declare class Ranges$1 {
328
- constructor(originalOpts?: Partial<Opts$1>);
329
- ranges: Range$1[];
330
- opts: Opts$1;
331
- add(
332
- originalFrom: number,
333
- originalTo?: number,
334
- addVal?: undefined | null | string,
335
- ): void;
336
- add(originalFrom: Range$1[] | Range$1 | null): void;
337
- push(
338
- originalFrom: number,
339
- originalTo?: number,
340
- addVal?: undefined | null | string,
341
- ): void;
342
- push(originalFrom: Range$1[] | Range$1 | null): void;
343
- current(): null | Range$1[];
344
- wipe(): void;
345
- replace(givenRanges: Range$1[]): void;
346
- last(): Range$1 | null;
347
- }
348
-
349
- type Range =
350
- | [from: number, to: number]
351
- | [from: number, to: number, whatToInsert: string | null | undefined];
352
- type Ranges = Range[] | null;
353
- interface Attribute {
354
- nameStarts: number;
355
- nameEnds: number;
356
- equalsAt?: number;
357
- name: string;
358
- valueStarts?: number;
359
- valueEnds?: number;
360
- value?: string;
361
- }
362
- interface Tag {
363
- attributes: Attribute[];
364
- lastClosingBracketAt: number;
365
- lastOpeningBracketAt: number;
366
- slashPresent: number;
367
- leftOuterWhitespace: number;
368
- onlyPlausible: boolean;
369
- nameStarts: number;
370
- nameContainsLetters: boolean;
371
- nameEnds: number;
372
- name: string;
373
- }
374
- interface CbObj {
375
- tag: Tag;
376
- deleteFrom: null | number;
377
- deleteTo: null | number;
378
- insert: null | undefined | string;
379
- rangesArr: Ranges$1;
380
- proposedReturn: Range | null;
381
- }
382
- interface Opts {
383
- ignoreTags: string[];
384
- ignoreTagsWithTheirContents: string[];
385
- onlyStripTags: string[];
386
- stripTogetherWithTheirContents: string[];
387
- skipHtmlDecoding: boolean;
388
- trimOnlySpaces: boolean;
389
- stripRecognisedHTMLOnly: boolean;
390
- dumpLinkHrefsNearby: {
391
- enabled?: boolean;
392
- putOnNewLine?: boolean;
393
- wrapHeads?: string;
394
- wrapTails?: string;
395
- };
396
- ignoreIndentations: boolean;
397
- cb: null | ((cbObj: CbObj) => void);
398
- reportProgressFunc: null | ((percDone: number) => void);
399
- reportProgressFuncFrom: number;
400
- reportProgressFuncTo: number;
401
- }
402
- declare const defaults: Opts;
403
- interface Res {
404
- log: {
405
- timeTakenInMilliseconds: number;
406
- };
407
- result: string;
408
- ranges: Ranges;
409
- allTagLocations: [number, number][];
410
- filteredTagLocations: [number, number][];
411
- }
412
65
  /**
413
- * Strips HTML tags from strings. No parser, accepts mixed sources.
414
- */
415
- declare function stripHtml(str: string, opts?: Partial<Opts>): Res;
416
-
417
- type FlexibleCSSProperties = {
418
- [K in keyof Properties]?: Properties[K] | string | number | null | undefined;
419
- };
66
+ Check if a string is HTML.
420
67
 
421
- export { css, decode, decodeEntity, encode, escapeCss, escapeHtml, escapeJs, html, htmlTags, isValidCustomElementName, stripHtml, defaults as stripHtmlDefaultOptions, voidHtmlTags };
422
- export type { DecodeOptions, DecodeScope, EncodeMode, EncodeOptions, FlexibleCSSProperties, Level, Attribute as StripHtmlAttribute, CbObj as StripHtmlCbObj, Opts as StripHtmlOptions, Res as StripHtmlResult, Tag as StripHtmlTag };
68
+ @param string - The string to check if it is HTML.
69
+ @returns `true` if the string is HTML, `false` otherwise.
70
+ */
71
+ declare function isHtml(string: string): boolean;
72
+ export { DecodeOptions, DecodeScope, EncodeMode, EncodeOptions, Level, decode, decodeEntity, encode, htmlTags, isHtml, voidHtmlTags };
package/dist/index.js CHANGED
@@ -1,11 +1 @@
1
- export { default as css } from './packem_shared/css-eLBFmNQq.js';
2
- export { default as escapeHtml } from './packem_shared/escapeHtml-Cztfu84O.js';
3
- export { default as html } from './packem_shared/html-B-Khp3Xj.js';
4
- export { escapeCss } from './packem_shared/escapeCss-gSWL0xVj.js';
5
- export { escapeJs } from './packem_shared/escapeJs-8hCFOEdN.js';
6
- export { isValidCustomElementName } from './packem_shared/isValidCustomElementName-Czb_BiVq.js';
7
- export { decode, decodeEntity, encode } from './packem_shared/encode-jgknlkNE.js';
8
- export { default as sanitizeHtml } from 'sanitize-html';
9
- export { stripHtml, defaults as stripHtmlDefaultOptions } from './packem_shared/stripHtmlDefaultOptions-Dj_FII9M.js';
10
- export { default as htmlTags } from './packem_shared/htmlTags-CnZinEi6.js';
11
- export { default as voidHtmlTags } from './packem_shared/voidHtmlTags-Db3mUI2j.js';
1
+ import{default as o}from"./css.js";import{default as a}from"./packem_shared/escapeHtml-CiWsYlrs.js";import{default as m,isRawHtml as f}from"./html.js";import{escapeCss as p}from"./packem_shared/escapeCss-BtzOEJZW.js";import{escapeJs as x}from"./packem_shared/escapeJs-C4cWI12i.js";import{isValidCustomElementName as u}from"./packem_shared/isValidCustomElementName-BGH0NihB.js";import{decode as H,decodeEntity as n,encode as g}from"./packem_shared/decode-DPHm0sXO.js";import{default as C}from"./packem_shared/htmlTags-BWCBwnc_.js";import{default as T}from"./packem_shared/voidHtmlTags-Cb8VOd4K.js";import{default as w}from"./packem_shared/isHtml-B7-ANsKf.js";import{default as z}from"sanitize-html";import{stripHtml as J,defaults as N}from"./packem_shared/stripHtml-BJMSstzr.js";export{o as css,H as decode,n as decodeEntity,g as encode,p as escapeCss,a as escapeHtml,x as escapeJs,m as html,C as htmlTags,w as isHtml,f as isRawHtml,u as isValidCustomElementName,z as sanitizeHtml,J as stripHtml,N as stripHtmlDefaultOptions,T as voidHtmlTags};
@@ -0,0 +1 @@
1
+ function o(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{o as g};
@@ -0,0 +1 @@
1
+ var g=function(){return g=Object.assign||function(r){for(var e,a=1,o=arguments.length;a<o;a++){e=arguments[a];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},g.apply(this,arguments)},L="~",k="~~";function w(r,e){for(var a={},o={},t=r.split(k),s=!1,i=0;t.length>i;i++){for(var c=t[i].split(L),l=0;l<c.length;l+=2){var u=c[l],n=c[l+1],p="&"+u+";";a[p]=n,s&&(a["&"+u]=n),o[n]=p}s=!0}return e?{entities:g(g({},a),e.entities),characters:g(g({},o),e.characters)}:{entities:a,characters:o}}var b={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/&notin;|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/&centerdot;|&copysr;|&divideontimes;|&gtcc;|&gtcir;|&gtdot;|&gtlPar;|&gtquest;|&gtrapprox;|&gtrarr;|&gtrdot;|&gtreqless;|&gtreqqless;|&gtrless;|&gtrsim;|&ltcc;|&ltcir;|&ltdot;|&lthree;|&ltimes;|&ltlarr;|&ltquest;|&ltrPar;|&ltri;|&ltrie;|&ltrif;|&notin;|&notinE;|&notindot;|&notinva;|&notinvb;|&notinvc;|&notni;|&notniva;|&notnivb;|&notnivc;|&parallel;|&timesb;|&timesbar;|&timesd;|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},d={};d.xml=w(`lt~<~gt~>~quot~"~apos~'~amp~&`);d.html4=w(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~‌~zwj~‍~lrm~‎~rlm~‏~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~­~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);d.html5=w('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~⁡~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~⁣~InvisibleTimes~⁢~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~​~NegativeThickSpace~​~NegativeThinSpace~​~NegativeVeryThinSpace~​~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~⁠~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~  ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~​~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~⁡~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~⁣~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~⁢~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®',d.html4);var S={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},T=String.fromCodePoint||function(r){return String.fromCharCode(Math.floor((r-65536)/1024)+55296,(r-65536)%1024+56320)},R=String.prototype.codePointAt?function(r,e){return r.codePointAt(e)}:function(r,e){return(r.charCodeAt(e)-55296)*1024+r.charCodeAt(e+1)-56320+65536},m=function(){return m=Object.assign||function(r){for(var e,a=1,o=arguments.length;a<o;a++){e=arguments[a];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},m.apply(this,arguments)},y=m(m({},d),{all:d.html5}),N={specialChars:/[<>'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g},F={mode:"specialChars",level:"all",numeric:"decimal"};function O(r,e){var a=e===void 0?F:e,o=a.mode,t=o===void 0?"specialChars":o,s=a.numeric,i=s===void 0?"decimal":s,c=a.level,l=c===void 0?"all":c;if(!r)return"";var u=N[t],n=y[l].characters,p=i==="hexadecimal";return String.prototype.replace.call(r,u,function(f){var h=n[f];if(!h){var x=f.length>1?R(f,0):f.charCodeAt(0);h=(p?"&#x"+x.toString(16):"&#"+x)+";"}return h})}var C={scope:"body",level:"all"},q=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,v=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,D={xml:{strict:q,attribute:v,body:b.xml},html4:{strict:q,attribute:v,body:b.html4},html5:{strict:q,attribute:v,body:b.html5}},U=m(m({},D),{all:D.html5}),E=String.fromCharCode,V=E(65533),B={level:"all"};function A(r,e,a,o){var t=r,s=r[r.length-1];if(a&&s==="=")t=r;else if(o&&s!==";")t=r;else{var i=e[r];if(i)t=i;else if(r[0]==="&"&&r[1]==="#"){var c=r[2],l=c=="x"||c=="X"?parseInt(r.substr(3),16):parseInt(r.substr(2));t=l>=1114111?V:l>65535?T(l):E(S[l]||l)}}return t}function G(r,e){var a=e===void 0?B:e,o=a.level,t=o===void 0?"all":o;return r?A(r,y[t].entities,!1,!1):""}function P(r,e){var a=e===void 0?C:e,o=a.level,t=o===void 0?"all":o,s=a.scope,i=s===void 0?t==="xml"?"strict":"body":s;if(!r)return"";var c=U[t][i],l=y[t].entities,u=i==="attribute",n=i==="strict";return r.replace(c,function(p){return A(p,l,u,n)})}export{P as decode,G as decodeEntity,O as encode};
@@ -0,0 +1 @@
1
+ function f(n){const e=/(\0)|([\x01-\x1f\x7f]|(?<=^-?)\d)|(^-$|[ -,.\/:-@\[-^`\{-~])/g;return n.replaceAll(e,(c,o,t,r)=>o!=null?"�":t!=null?u(t):l(r))}function u(n){return`\\${n.codePointAt(0).toString(16)} `}function l(n){return"\\"+n}export{f as escapeCss};
@@ -0,0 +1 @@
1
+ const r=/[&"'<]/g,g=/[&<]/g,i=(c,o=!1)=>{const t=String(c??""),e=o?r:g;e.lastIndex=0;let a="",s=0;for(;e.test(t);){const l=e.lastIndex-1,n=t[l];a+=t.slice(s,l)+(n==="&"?"&amp;":n==='"'?"&quot;":n==="'"?"&#39;":"&lt;"),s=l+1}return a+t.slice(s)};export{i as default};
@@ -0,0 +1 @@
1
+ function a(t,r={}){const{space:e}=r;return JSON.stringify(t,null,e).replaceAll(/[\u2028\u2029]|<(?=!--|\/?script)/gi,n=>String.raw`\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`)}export{a as escapeJs};
@@ -0,0 +1 @@
1
+ import{g as a}from"./_commonjsHelpers-CWAkuNXM.js";var t,e;function r(){return e||(e=1,t=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","script","search","section","select","selectedcontent","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]),t}var o=r();const i=a(o);export{i as default};
@@ -0,0 +1 @@
1
+ import{g as i}from"./_commonjsHelpers-CWAkuNXM.js";var e,a;function l(){return a||(a=1,e=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]),e}var r,s;function n(){return s||(s=1,r=l()),r}var d=n();const m=i(d),u=/\s?<!doctype html>|<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>/i,c=[...m].sort((t,o)=>t.length-o.length),p=new RegExp(c.map(t=>`<${t}\\b[^>]*>`).join("|"),"i");function h(t){return t=t.trim().slice(0,1e3),t.includes("\0")||!t.includes("<")?!1:u.test(t)||p.test(t)}export{h as default};
@@ -0,0 +1 @@
1
+ const u=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],D=/^[a-z](?:[-.0-9_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]|[\u{10000}-\u{EFFFF}])*-(?:[-.0-9_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]|[\u{10000}-\u{EFFFF}])*$/u;function n(F){return!u.includes(F)&&D.test(F)}export{n as isValidCustomElementName};