punctilio 5.4.10 → 5.5.0

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.
package/README.md CHANGED
@@ -155,17 +155,17 @@ transform(text, {
155
155
 
156
156
  Markdown sinks (`remarkPunctilio`, `transformMarkdown`, the Prettier plugin, and the CLI for Markdown files) default `nbsp` to `false` instead, because invisible U+00A0 characters in Markdown source files break `grep` and Ctrl+F. Pass `nbsp: true` (or the `--nbsp` CLI flag) to opt in.
157
157
 
158
- The `rehype` plugin accepts additional options. Elements matching any `skipTags` tag name or carrying any `skipClasses` class are left untransformed. The `skipTags` value below is the default; `skipClasses` defaults to `[]`, and the value shown is a common opt-in (add `no-formatting` yourself to skip elements marked with it):
158
+ The `rehype` plugin accepts additional options. Elements matching a default skip tag (`code`, `pre`, `script`, `style`, `kbd`, `var`, `samp`, `template`, `math`, `svg`, `iframe`), any `skipTags` tag name, or any `skipClasses` class are left untransformed, as are `<textarea>` and any `<option>` without a `value` attribute (its text is the submitted value). `skipTags` extends the default skip tags rather than replacing them, and `skipClasses` defaults to `[]`; the values shown are common opt-ins (add `no-formatting` yourself to skip elements marked with it):
159
159
 
160
160
  ```typescript
161
161
  rehypePunctilio({
162
- skipTags: ["code", "pre", "script", "style", "kbd", "var", "samp", "template", "math", "svg"], // default
162
+ skipTags: ["aside"], // default: [] — added to the default skip tags
163
163
  skipClasses: ["no-formatting"], // default: [] — shown here as a common opt-in
164
164
  transformAllElements: false, // see below
165
165
  });
166
166
  ```
167
167
 
168
- By default the plugin transforms text only inside a curated allowlist of prose-bearing elements (plus custom elements). Set `transformAllElements: true` to invert the model and transform text inside *every* element except those in `skipTags`/`skipClasses` and the form-value elements `<textarea>` and `<input>` (whose text is a literal control value, not prose). `<select>` is skipped as a container, but its `<option>` labels are still transformed. `skipTags` and `skipClasses` continue to take precedence in this mode.
168
+ By default the plugin transforms text only inside a curated allowlist of prose-bearing elements (plus custom elements). Set `transformAllElements: true` to invert the model and transform text inside *every* element except those in `skipTags`/`skipClasses` and the form-value elements `<textarea>` and `<input>` (whose text is a literal control value, not prose). `<select>` is skipped as a container, but the labels of its `<option>` elements that carry a `value` attribute are still transformed. `skipTags` and `skipClasses` continue to take precedence in this mode.
169
169
 
170
170
  Text with no element ancestor—a bare-string fragment passed straight to `transformHtml`, or loose text sitting among top-level blocks—has no allowlist to consult and is always transformed in both modes. Inline prose siblings merge into that run; block-level and non-allowlisted structural elements (`<html>`/`<body>` under a full-document parse, `<form>` in the default mode) remain boundaries and keep their usual per-element treatment.
171
171
 
@@ -210,7 +210,7 @@ prettier --write 'docs/**/*.md'
210
210
  # "Hello" -- world. → “Hello” – world.
211
211
  ```
212
212
 
213
- Code spans, fenced code blocks, and inline HTML are left untouched. The plugin extends Prettier’s `markdown` parser, so it transforms the files Prettier routes there (`*.md`, `*.markdown`); for HTML files, use the [CLI](#cli) or the [`rehype` plugin](#works-with-html-doms-via-boundary-aware-views) below.
213
+ Code spans, fenced code blocks, inline HTML (including the text between the open and close tags of a skipped element such as `<code>` or `<kbd>`), and link text that is its own URL are left untouched. The plugin extends Prettier’s `markdown` parser, so it transforms the files Prettier routes there (`*.md`, `*.markdown`); for HTML files, use the [CLI](#cli) or the [`rehype` plugin](#works-with-html-doms-via-boundary-aware-views) below.
214
214
 
215
215
  ### CLI
216
216
 
@@ -243,7 +243,7 @@ A `.pre-commit-hooks.yaml` ships in the package, so [pre-commit](https://pre-com
243
243
  # .pre-commit-config.yaml
244
244
  repos:
245
245
  - repo: https://github.com/AlexanderMattTurner/punctilio
246
- rev: v5.4.8
246
+ rev: v5.4.10
247
247
  hooks:
248
248
  - id: punctilio # rewrites *.md / *.html in place
249
249
  - id: punctilio-check # or: fail without writing (CI-friendly)
@@ -1 +1 @@
1
- {"version":3,"file":"prettier-plugin.d.ts","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,UAAU,CAAA;AAiC9C,QAAA,MAAM,MAAM,EAAE,MAab,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"prettier-plugin.d.ts","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,UAAU,CAAA;AAkC9C,QAAA,MAAM,MAAM,EAAE,MAab,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -21,8 +21,9 @@ async function loadPunctilioConfig(searchFrom) {
21
21
  }
22
22
  async function runRemarkPunctilio(opts, ast) {
23
23
  // The unified `Transformer` signature requires a VFile and a callback,
24
- // but `remarkPunctilio` only ever reads the tree. Narrow to the actual
25
- // shape here so the cast lives in one well-commented place.
24
+ // but `remarkPunctilio` only needs the tree (the file just supplies the
25
+ // source for link positions). Narrow to the actual shape here so the cast
26
+ // lives in one well-commented place.
26
27
  const transformer = remarkPunctilio(opts);
27
28
  await transformer(ast);
28
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prettier-plugin.js","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAwB,CAAA;AAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEzC,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,GAAG,qBAAqB;CACzB,CAAA;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAgC,EAAE,wBAAwB,CAAC,CAAA;AACpF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA4B,EAAE,GAAS;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,4DAA4D;IAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAyC,CAAA;IACjF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,MAAM,GAAW;IACrB,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,GAAG,gBAAgB;YACnB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO;gBACvB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBACvD,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;gBACnG,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAA;gBAClD,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnC,OAAO,GAAG,CAAA;YACZ,CAAC;SACF;KACF;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"prettier-plugin.js","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAwB,CAAA;AAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEzC,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,GAAG,qBAAqB;CACzB,CAAA;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAgC,EAAE,wBAAwB,CAAC,CAAA;AACpF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA4B,EAAE,GAAS;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,qCAAqC;IACrC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAyC,CAAA;IACjF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,MAAM,GAAW;IACrB,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,GAAG,gBAAgB;YACnB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO;gBACvB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBACvD,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;gBACnG,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAA;gBAClD,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnC,OAAO,GAAG,CAAA;YACZ,CAAC;SACF;KACF;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -30,6 +30,25 @@ export declare function buildProseView(nodes: ProseNode[]): ProseView;
30
30
  * segments so a pass never sees text as adjacent across removed content.
31
31
  */
32
32
  export declare function splitAtIndices<T>(items: readonly T[], breakBefore: ReadonlySet<number>): T[][];
33
+ /**
34
+ * Stand-in for removed opaque inline content (a skipped element, an image,
35
+ * inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
36
+ * Unicode's placeholder for an embedded object: it is neither space, word
37
+ * character, nor punctuation, so a pass needing adjacent text never matches
38
+ * across it (`5<code>c</code>x 3` stays put), while the quote classifier still
39
+ * sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
40
+ */
41
+ export declare const OPAQUE_PLACEHOLDER = "\uFFFC";
42
+ /**
43
+ * Runs `run` over `nodes` as one view with a placeholder node (see
44
+ * {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
45
+ * {@link splitAtIndices}), so context-sensitive passes such as quote pairing
46
+ * read across the gap. The view is committed after `run`. If any edit lands in
47
+ * a placeholder (one that spans, replaces, or is inserted into the gap), the
48
+ * nodes are restored and `run` goes over each opaque-delimited segment on its
49
+ * own instead, so no edit ever lands in or through a gap.
50
+ */
51
+ export declare function runAcrossOpaqueGaps(nodes: readonly ProseNode[], breakBefore: ReadonlySet<number>, run: (view: ProseView) => void): void;
33
52
  export interface ReplaceAllOptions {
34
53
  /** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
35
54
  allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
@@ -203,6 +203,82 @@ export function splitAtIndices(items, breakBefore) {
203
203
  groups.push(items.slice(start));
204
204
  return groups;
205
205
  }
206
+ /**
207
+ * Stand-in for removed opaque inline content (a skipped element, an image,
208
+ * inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
209
+ * Unicode's placeholder for an embedded object: it is neither space, word
210
+ * character, nor punctuation, so a pass needing adjacent text never matches
211
+ * across it (`5<code>c</code>x 3` stays put), while the quote classifier still
212
+ * sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
213
+ */
214
+ export const OPAQUE_PLACEHOLDER = "\uFFFC";
215
+ /**
216
+ * Single-quote edge stand-ins. The classifier reads end of text as an ending
217
+ * context after a closing single quote and as an opening context before an
218
+ * opening one, but reads {@link OPAQUE_PLACEHOLDER} as neither, so `'hi'` or
219
+ * `boys'` directly before a gap, or `'hi'` directly after one, would lose the
220
+ * role the segment edge gives it. A `)` after the quote and a `(` before it
221
+ * restore those contexts without blocking a pair across the gap
222
+ * (`'<code>x</code>'` still pairs). They are added only beside a single quote:
223
+ * double quotes read the placeholder correctly, and `)` would block a double
224
+ * opener.
225
+ */
226
+ const SEGMENT_END_STAND_IN = ")";
227
+ const SEGMENT_START_STAND_IN = "(";
228
+ /** Straight, curly, modifier-letter and low-9 single-quote characters. */
229
+ const SINGLE_QUOTE_CHARS = new Set([
230
+ "'",
231
+ "\u2018",
232
+ "\u2019",
233
+ "\u02BC",
234
+ "\u201A",
235
+ ]);
236
+ /** Gap stand-in for the text between `before` and `after`. */
237
+ function gapPlaceholder(before, after) {
238
+ const afterQuote = SINGLE_QUOTE_CHARS.has(before.slice(-1));
239
+ const beforeQuote = SINGLE_QUOTE_CHARS.has(after.slice(0, 1));
240
+ return ((afterQuote ? SEGMENT_END_STAND_IN : "") +
241
+ OPAQUE_PLACEHOLDER +
242
+ (beforeQuote ? SEGMENT_START_STAND_IN : ""));
243
+ }
244
+ /**
245
+ * Runs `run` over `nodes` as one view with a placeholder node (see
246
+ * {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
247
+ * {@link splitAtIndices}), so context-sensitive passes such as quote pairing
248
+ * read across the gap. The view is committed after `run`. If any edit lands in
249
+ * a placeholder (one that spans, replaces, or is inserted into the gap), the
250
+ * nodes are restored and `run` goes over each opaque-delimited segment on its
251
+ * own instead, so no edit ever lands in or through a gap.
252
+ */
253
+ export function runAcrossOpaqueGaps(nodes, breakBefore, run) {
254
+ if (nodes.length === 0)
255
+ return;
256
+ const originalValues = nodes.map((node) => node.value);
257
+ const placeholders = [];
258
+ const spanning = [];
259
+ nodes.forEach((node, index) => {
260
+ if (breakBefore.has(index)) {
261
+ const value = gapPlaceholder(nodes[index - 1].value, node.value);
262
+ const placeholder = { value };
263
+ placeholders.push({ node: placeholder, value });
264
+ spanning.push(placeholder);
265
+ }
266
+ spanning.push(node);
267
+ });
268
+ const spanningView = buildProseView(spanning);
269
+ run(spanningView);
270
+ spanningView.commit();
271
+ if (placeholders.every(({ node, value }) => node.value === value))
272
+ return;
273
+ nodes.forEach((node, index) => {
274
+ node.value = originalValues[index];
275
+ });
276
+ for (const group of splitAtIndices(nodes, breakBefore)) {
277
+ const segmentView = buildProseView(group);
278
+ run(segmentView);
279
+ segmentView.commit();
280
+ }
281
+ }
206
282
  /**
207
283
  * Index of the first element in sorted `values` that is >= `target`. The
208
284
  * boundary helpers below run per candidate offset in the pass scanners, so a
@@ -1 +1 @@
1
- {"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"AA6BA,gFAAgF;AAChF,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAc;IACvD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa;IACzE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/D,OAAO,KAAK,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,aAAa;IACA,KAAK,CAAc;IAC5B,UAAU,CAAS;IACnB,gBAAgB,CAAW;IAC3B,KAAK,GAAiB,EAAE,CAAC;IAEjC,YAAY,KAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,sEAAsE;IAC9D,OAAO;QACb,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;YACnB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACnE,CAAC;IAED,OAAO,CACL,KAAa,EACb,GAAW,EACX,IAAY,EACZ,IAAkC;QAElC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,SAAS,GAAG,GAAG,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK;gBACjF,aAAa,KAAK,SAAS,GAAG,GAAG,CACpC,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,kCAAkC,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE,CAC5C,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;YACjB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;YACnC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAC5B,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CACpF,CAAC;YACJ,CAAC;YACD,IACE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK;gBACvB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG;gBACvB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG;gBACvB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EACvB,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,IAAI,QAAQ;oBAClF,0BAA0B,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,KAAK,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,yEAAyE;QACzE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAQ,EAAE;YACxC,OAAO,UAAU,GAAG,MAAM,EAAE,CAAC;gBAC3B,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU;oBACrE,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClD,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACvD,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,oEAAoE;YACpE,iEAAiE;YACjE,8BAA8B;YAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,WAAW,GACf,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;oBACnB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9C,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,GAAG,UAAU;gBAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QACnD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,MAAc,EAAE,IAAc;QACvD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;gBACxB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,sBAAsB,CAAC,IAAgB,EAAE,IAAc;QAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAmB,EACnB,WAAgC;IAEhC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AASD;;;;GAIG;AACH,SAAS,UAAU,CAAC,MAAyB,EAAE,MAAc;IAC3D,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;YAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;YACnC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,SAAS,qBAAqB,CAC5B,KAAsB,EACtB,IAAe;IAEf,OAAO,CACL,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,KAAa,EACb,GAAW;IAEX,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG;QACzD,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,IAAe,EAAE,MAAc;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAe,EACf,KAAa,EACb,GAAW,EACX,YAA+B;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,KACE,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,EACzC,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,EAC5C,CAAC,EAAE,EACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,MAAc;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzD,KAAK,EAAE,CAAC;QACR,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,MAAc;IAEd,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,KAAa,EACb,QAAoE,EACpE,OAA2B;IAE3B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IAEpB,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAC7B,WAAW,EACX,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAA8B;IAE9B,MAAM,IAAI,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,CAAC;IACV,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAuCD,SAAS,YAAY,CAAC,IAAwB;IAC5C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;AAC1D,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CACvB,QAAgB,EAChB,WAAmB;IAEnB,MAAM,WAAW,GAAG,GAAU,EAAE,CAC9B,IAAI,KAAK,CACP,gDAAgD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;QAC1E,kDAAkD,CACrD,CAAC;IAEJ,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC;YACtC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;YAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,2BAA2B;gBAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gCAAgC,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC1C,IAAI,EAAE,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM;SACtC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,WAAW,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QACD,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE;YACrE,IAAI,EAAE,KAAK,GAAG,CAAC;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,GAAG,IAAI,CAAC;QACT,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CACxB,IAAsE,EACtE,KAAsB;IAEtB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,KAAK,4BAA4B;QACrE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,oBAAoB,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CACjC,QAAgB;IAEhB,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,KAAK;SACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,IAAI,oBAAoB;wBAC7D,+BAA+B,IAAI,CAAC,IAAI,IAAI,CAC/C,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,WAEgE,EAChE,UAA6B,EAAE;IAE/B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,IAAI,eAAqD,CAAC;IAC1D,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5C,eAAe,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI;YAC1D,0CAA0C,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GACZ,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,0BAA0B,CAAC,WAAW,CAAC;QACzC,CAAC,CAAC,WAAW,CAAC;IAIlB,SAAS,IAAI,CAAC,KAAyB;QACrC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,gBAAgB,CACd,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD,MAAM,UAAU,SAAS,CACvB,KAAyB,EACzB,GAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,CAAC;IACX,KAAK,CAAC,MAAM,EAAE,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAA8B;IAG1D,SAAS,IAAI,CAAC,KAAyB;QACrC,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"AA6BA,gFAAgF;AAChF,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAc;IACvD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa;IACzE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/D,OAAO,KAAK,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,aAAa;IACA,KAAK,CAAc;IAC5B,UAAU,CAAS;IACnB,gBAAgB,CAAW;IAC3B,KAAK,GAAiB,EAAE,CAAC;IAEjC,YAAY,KAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,sEAAsE;IAC9D,OAAO;QACb,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;YACnB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACnE,CAAC;IAED,OAAO,CACL,KAAa,EACb,GAAW,EACX,IAAY,EACZ,IAAkC;QAElC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,SAAS,GAAG,GAAG,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK;gBACjF,aAAa,KAAK,SAAS,GAAG,GAAG,CACpC,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,kCAAkC,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE,CAC5C,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;YACjB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;YACnC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAC5B,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CACpF,CAAC;YACJ,CAAC;YACD,IACE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK;gBACvB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG;gBACvB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG;gBACvB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EACvB,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,IAAI,QAAQ;oBAClF,0BAA0B,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,KAAK,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,yEAAyE;QACzE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAQ,EAAE;YACxC,OAAO,UAAU,GAAG,MAAM,EAAE,CAAC;gBAC3B,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU;oBACrE,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClD,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACvD,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,oEAAoE;YACpE,iEAAiE;YACjE,8BAA8B;YAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,WAAW,GACf,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;oBACnB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9C,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,GAAG,UAAU;gBAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QACnD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,MAAc,EAAE,IAAc;QACvD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;gBACxB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,sBAAsB,CAAC,IAAgB,EAAE,IAAc;QAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAmB,EACnB,WAAgC;IAEhC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,0EAA0E;AAC1E,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACtD,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,8DAA8D;AAC9D,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa;IACnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,kBAAkB;QAClB,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA2B,EAC3B,WAAgC,EAChC,GAA8B;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,YAAY,GAAyC,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,GAAG,CAAC,YAAY,CAAC,CAAC;IAClB,YAAY,CAAC,MAAM,EAAE,CAAC;IACtB,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAAE,OAAO;IAE1E,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,WAAW,CAAC,CAAC;QACjB,WAAW,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AASD;;;;GAIG;AACH,SAAS,UAAU,CAAC,MAAyB,EAAE,MAAc;IAC3D,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;YAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;YACnC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,SAAS,qBAAqB,CAC5B,KAAsB,EACtB,IAAe;IAEf,OAAO,CACL,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,KAAa,EACb,GAAW;IAEX,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG;QACzD,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,IAAe,EAAE,MAAc;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAe,EACf,KAAa,EACb,GAAW,EACX,YAA+B;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,KACE,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,EACzC,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,EAC5C,CAAC,EAAE,EACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,MAAc;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzD,KAAK,EAAE,CAAC;QACR,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,MAAc;IAEd,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,KAAa,EACb,QAAoE,EACpE,OAA2B;IAE3B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IAEpB,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAC7B,WAAW,EACX,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAA8B;IAE9B,MAAM,IAAI,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,CAAC;IACV,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAuCD,SAAS,YAAY,CAAC,IAAwB;IAC5C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;AAC1D,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CACvB,QAAgB,EAChB,WAAmB;IAEnB,MAAM,WAAW,GAAG,GAAU,EAAE,CAC9B,IAAI,KAAK,CACP,gDAAgD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;QAC1E,kDAAkD,CACrD,CAAC;IAEJ,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC;YACtC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;YAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,2BAA2B;gBAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gCAAgC,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC1C,IAAI,EAAE,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM;SACtC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,WAAW,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QACD,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE;YACrE,IAAI,EAAE,KAAK,GAAG,CAAC;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,GAAG,IAAI,CAAC;QACT,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CACxB,IAAsE,EACtE,KAAsB;IAEtB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,KAAK,4BAA4B;QACrE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,oBAAoB,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CACjC,QAAgB;IAEhB,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,KAAK;SACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,IAAI,oBAAoB;wBAC7D,+BAA+B,IAAI,CAAC,IAAI,IAAI,CAC/C,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,WAEgE,EAChE,UAA6B,EAAE;IAE/B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,IAAI,eAAqD,CAAC;IAC1D,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5C,eAAe,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI;YAC1D,0CAA0C,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GACZ,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,0BAA0B,CAAC,WAAW,CAAC;QACzC,CAAC,CAAC,WAAW,CAAC;IAIlB,SAAS,IAAI,CAAC,KAAyB;QACrC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,gBAAgB,CACd,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD,MAAM,UAAU,SAAS,CACvB,KAAyB,EACzB,GAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,CAAC;IACX,KAAK,CAAC,MAAM,EAAE,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAA8B;IAG1D,SAAS,IAAI,CAAC,KAAyB;QACrC,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/rehype.d.ts CHANGED
@@ -16,10 +16,12 @@ export interface ElementTransformOptions {
16
16
  }
17
17
  export interface RehypePunctilioOptions extends TransformOptions, ElementTransformOptions {
18
18
  /**
19
- * HTML tag names to skip when applying transformations.
20
- * Content inside these elements won't have formatting improvements applied.
19
+ * Additional HTML tag names to skip when applying transformations, on top of
20
+ * the always-skipped defaults ("code", "pre", "script", "style", "kbd",
21
+ * "var", "samp", "template", "math", "svg", "iframe"). Content inside these
22
+ * elements won't have formatting improvements applied.
21
23
  *
22
- * Default: ["code", "pre", "script", "style", "kbd", "var", "samp", "template", "math", "svg"]
24
+ * Default: []
23
25
  */
24
26
  skipTags?: string[];
25
27
  /**
@@ -41,6 +43,9 @@ export interface RehypePunctilioOptions extends TransformOptions, ElementTransfo
41
43
  */
42
44
  transformAllElements?: boolean;
43
45
  }
46
+ /** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
47
+ export declare const DEFAULT_SKIP_TAGS: readonly string[];
48
+ export declare const RAW_TEXT_FORM_TAG = "textarea";
44
49
  /** Option keys handled by `rehypePunctilio` itself rather than `transform()`. */
45
50
  export declare const REHYPE_ONLY_OPTION_KEYS: readonly string[];
46
51
  /** Runtime list of valid `rehypePunctilio` option keys. */
@@ -64,9 +69,10 @@ export interface ProseViewOfOptions extends ElementTransformOptions {
64
69
  /**
65
70
  * Builds a single ProseView over the element's transformable text nodes,
66
71
  * honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
67
- * predicates. Returns null when the element holds no transformable text. This
68
- * view spans opaque gaps; the transform pipeline uses {@link proseViewsOf},
69
- * which splits on them so no pass rewrites across removed atomic content.
72
+ * predicates. Returns null when the element holds no transformable text. The
73
+ * view spans opaque gaps with only a boundary at each; the transform pipeline
74
+ * instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
75
+ * placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
70
76
  */
71
77
  export declare function proseViewOf(element: Element, options?: ProseViewOfOptions): ProseView | null;
72
78
  /**
@@ -113,8 +119,8 @@ export type PassEntry = ProsePass | {
113
119
  export declare function applyPasses(target: Element | ProseUnit, passes: readonly PassEntry[], options?: ProseViewOfOptions): void;
114
120
  export interface CollectProseBlocksOptions {
115
121
  /**
116
- * HTML tag names to skip. Default: the plugin's default skip list
117
- * ("code", "pre", "script", ...).
122
+ * HTML tag names to skip in addition to the plugin's default skip list
123
+ * ("code", "pre", "script", ...). Default: []
118
124
  */
119
125
  skipTags?: string[];
120
126
  /** CSS class names whose elements (and their subtrees) are skipped. Default: [] */
@@ -1 +1 @@
1
- {"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
package/dist/rehype.js CHANGED
@@ -3,8 +3,9 @@ import { transformView } from "./index.js";
3
3
  import { TRANSFORM_OPTION_KEYS, } from "./transform-options.js";
4
4
  import { MAX_RECURSION_DEPTH } from "./constants.js";
5
5
  import { assertKnownOptionKeys, formatErrorString } from "./utils.js";
6
- import { buildProseView, splitAtIndices, } from "./prose-view.js";
7
- const DEFAULT_SKIP_TAGS = [
6
+ import { buildProseView, runAcrossOpaqueGaps, splitAtIndices, } from "./prose-view.js";
7
+ /** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
8
+ export const DEFAULT_SKIP_TAGS = [
8
9
  "code",
9
10
  "pre",
10
11
  "script",
@@ -15,6 +16,7 @@ const DEFAULT_SKIP_TAGS = [
15
16
  "template",
16
17
  "math",
17
18
  "svg",
19
+ "iframe",
18
20
  ];
19
21
  // Form elements whose text content is a literal control value, not prose.
20
22
  // Hard-skipped (whole subtree) under `transformAllElements`, on top of the
@@ -28,7 +30,7 @@ const FORM_VALUE_TAGS = ["textarea", "input"];
28
30
  // Skipped in BOTH modes — the allowlist default does not reach it as its own
29
31
  // unit, but a transformable ancestor would otherwise pull its text into a
30
32
  // shared view and transform it.
31
- const RAW_TEXT_FORM_TAG = "textarea";
33
+ export const RAW_TEXT_FORM_TAG = "textarea";
32
34
  // `<select>` is not prose itself, but its `<option>` children are (and are
33
35
  // transformed under the default allowlist). Under `transformAllElements` we
34
36
  // exclude `select` as a transform *unit* while still recursing into — and
@@ -176,9 +178,10 @@ export function assertSmartQuotesMatch(input) {
176
178
  /**
177
179
  * Builds a single ProseView over the element's transformable text nodes,
178
180
  * honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
179
- * predicates. Returns null when the element holds no transformable text. This
180
- * view spans opaque gaps; the transform pipeline uses {@link proseViewsOf},
181
- * which splits on them so no pass rewrites across removed atomic content.
181
+ * predicates. Returns null when the element holds no transformable text. The
182
+ * view spans opaque gaps with only a boundary at each; the transform pipeline
183
+ * instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
184
+ * placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
182
185
  */
183
186
  export function proseViewOf(element, options = {}) {
184
187
  /* istanbul ignore if -- defensive: elements should always have children array */
@@ -390,15 +393,24 @@ function hasTextDescendant(node, shouldSkip, depth = 0) {
390
393
  }
391
394
  return false;
392
395
  }
396
+ // An `<option>` with no `value` attribute submits its text as the value, so
397
+ // the text is a literal control value, not prose. HAST marks an absent
398
+ // property as either `undefined` or `null`.
399
+ function isValueOption(node) {
400
+ return (node.tagName === "option" &&
401
+ (node.properties?.value === undefined || node.properties.value === null));
402
+ }
393
403
  function resolveCollectOptions(options) {
394
- const { skipTags = DEFAULT_SKIP_TAGS, skipClasses = [], shouldSkip, transformAllElements = false, } = options;
404
+ const { skipTags = [], skipClasses = [], shouldSkip, transformAllElements = false, } = options;
395
405
  // `textarea` is skipped in both modes so a transformable ancestor never
396
406
  // flattens its literal value; inverted mode additionally hard-skips the whole
397
407
  // form-value set (void `input`, which is opaque otherwise) on top of the user
398
408
  // skip-list.
399
- const skipTagSet = new Set(transformAllElements
400
- ? [...skipTags, ...FORM_VALUE_TAGS]
401
- : [...skipTags, RAW_TEXT_FORM_TAG]);
409
+ const skipTagSet = new Set([
410
+ ...DEFAULT_SKIP_TAGS,
411
+ ...skipTags,
412
+ ...(transformAllElements ? FORM_VALUE_TAGS : [RAW_TEXT_FORM_TAG]),
413
+ ]);
402
414
  const skipClassSet = new Set(skipClasses);
403
415
  const hasSkipClass = (node) => {
404
416
  if (skipClassSet.size === 0)
@@ -413,6 +425,7 @@ function resolveCollectOptions(options) {
413
425
  };
414
426
  return {
415
427
  shouldSkip: (node) => skipTagSet.has(node.tagName) ||
428
+ isValueOption(node) ||
416
429
  hasSkipClass(node) ||
417
430
  (shouldSkip?.(node) ?? false),
418
431
  // Inverted mode transforms every non-skipped element except non-prose
@@ -538,6 +551,11 @@ function runViewOf(container, children, options) {
538
551
  const { nodes } = flattenRunProse(container, children, shouldSkip, options);
539
552
  return nodes.length === 0 ? null : buildProseView(nodes);
540
553
  }
554
+ // Runs the full pipeline over flattened prose as one view, with each opaque gap
555
+ // held by a placeholder so quotes pair across it (see `runAcrossOpaqueGaps`).
556
+ function transformProse({ nodes, opaqueBefore }, transformOptions) {
557
+ runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, transformOptions));
558
+ }
541
559
  function markDescendants(node, set, depth = 0) {
542
560
  /* istanbul ignore if -- defensive: prevents stack overflow from malicious HTML */
543
561
  if (depth > MAX_RECURSION_DEPTH) {
@@ -562,10 +580,7 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
562
580
  let run = [];
563
581
  const flushRun = () => {
564
582
  if (runHasProse(run, shouldSkip)) {
565
- const { nodes, opaqueBefore } = flattenRootRunProse(run, shouldSkip, viewOptions);
566
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
567
- transformView(buildProseView(group), transformOptions);
568
- }
583
+ transformProse(flattenRootRunProse(run, shouldSkip, viewOptions), transformOptions);
569
584
  for (const child of run) {
570
585
  if (child.type === "element") {
571
586
  transformed.add(child);
@@ -575,7 +590,8 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
575
590
  }
576
591
  run = [];
577
592
  };
578
- // Only bare text and inline prose elements merge into a run. Block elements
593
+ // Only bare text and inline elements merge into a run: prose elements, plus
594
+ // opaque ones (`<kbd>`, `<img>`) that quotes must pair across. Block elements
579
595
  // and non-transformable structural wrappers (`<html>`/`<head>`/`<body>` under
580
596
  // a full-document parse, or a non-allowlisted element in default mode) are
581
597
  // boundaries left to the element visitor, so their subtrees keep the same
@@ -587,7 +603,9 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
587
603
  child.type === "comment" ||
588
604
  (child.type === "element" &&
589
605
  !BLOCK_ELEMENTS.has(child.tagName) &&
590
- isTransformable(child.tagName));
606
+ (isTransformable(child.tagName) ||
607
+ OPAQUE_VOID_TAGS.has(child.tagName) ||
608
+ shouldSkip(child)));
591
609
  if (isRunMember) {
592
610
  run.push(child);
593
611
  }
@@ -628,19 +646,14 @@ export function rehypePunctilio(options = {}) {
628
646
  for (const unit of units) {
629
647
  if (unit.kind === "element") {
630
648
  if (!transformed.has(unit.element)) {
631
- for (const view of proseViewsOf(unit.element, viewOptions)) {
632
- transformView(view, transformOptions);
633
- }
649
+ transformProse(flattenProse(unit.element, shouldSkip, viewOptions), transformOptions);
634
650
  transformed.add(unit.element);
635
651
  // Mark all descendants as processed since their text was included
636
652
  markDescendants(unit.element, transformed);
637
653
  }
638
654
  }
639
655
  else {
640
- const { nodes, opaqueBefore } = flattenRunProse(unit.container, unit.children, shouldSkip, viewOptions);
641
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
642
- transformView(buildProseView(group), transformOptions);
643
- }
656
+ transformProse(flattenRunProse(unit.container, unit.children, shouldSkip, viewOptions), transformOptions);
644
657
  // Mark the container so a later visit doesn't re-collect its runs,
645
658
  // and mark the run's inline-element members' subtrees.
646
659
  transformed.add(unit.container);
@@ -1 +1 @@
1
- {"version":3,"file":"rehype.js","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rehype.js","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,IAAI,EAAQ,MAAM,OAAO,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAKrF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAkDrD,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAoCzB;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,IAAI,EAAQ,MAAM,OAAO,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAMrF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAwHrD,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAqCzB;AAED,eAAe,eAAe,CAAA"}
package/dist/remark.js CHANGED
@@ -1,23 +1,82 @@
1
+ import { Tokenizer } from "parse5";
1
2
  import { visitParents } from "unist-util-visit-parents";
2
3
  import { transformView } from "./index.js";
3
4
  import { TRANSFORM_OPTION_KEYS } from "./transform-options.js";
4
5
  import { MAX_RECURSION_DEPTH } from "./constants.js";
5
- import { buildProseView, splitAtIndices } from "./prose-view.js";
6
+ import { runAcrossOpaqueGaps } from "./prose-view.js";
7
+ import { DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG } from "./rehype.js";
6
8
  import { assertKnownOptionKeys } from "./utils.js";
7
9
  const PHRASING_CONTAINERS = new Set(["paragraph", "heading", "tableCell"]);
8
10
  const SKIP_TYPES = new Set(["inlineCode", "html"]);
11
+ const SKIPPED_HTML_TAGS = new Set([...DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG]);
9
12
  // Leaf phrasing nodes that render atomic content and carry no transformable
10
13
  // text. Between two text nodes, one is a real visual separator, so the
11
14
  // flattener records an opaque gap there (mirroring skipped `inlineCode`/`html`).
12
15
  const OPAQUE_LEAF_TYPES = new Set([
13
16
  "image", "imageReference", "break", "footnoteReference", "inlineMath",
14
17
  ]);
18
+ const URL_SCHEMES = ["mailto:", "https://", "http://"];
19
+ /** `url` without a leading `mailto:`, `https://` or `http://`, in any letter case. */
20
+ function stripUrlScheme(url) {
21
+ const lowerCaseUrl = url.toLowerCase();
22
+ const scheme = URL_SCHEMES.find((candidate) => lowerCaseUrl.startsWith(candidate));
23
+ return scheme === undefined ? url : url.slice(scheme.length);
24
+ }
25
+ /** The Markdown source that produced `node`, or "" when it carries no usable position. */
26
+ function sourceOfLink(node, source) {
27
+ const start = node.position?.start.offset;
28
+ const end = node.position?.end.offset;
29
+ return start === undefined || end === undefined ? "" : source.slice(start, end);
30
+ }
31
+ /**
32
+ * True for an autolink or bare URL, whose visible text is the URL itself. A
33
+ * link not written as `[text](url)` (an `<…>` autolink or a GFM literal) is one
34
+ * by construction; a bracketed link is one when its text is its URL, with or
35
+ * without the scheme.
36
+ */
37
+ function isUrlTextLink(node, source) {
38
+ const linkSource = sourceOfLink(node, source);
39
+ if (linkSource !== "" && !linkSource.startsWith("["))
40
+ return true;
41
+ if (node.children.length !== 1 || node.children[0].type !== "text")
42
+ return false;
43
+ return stripUrlScheme(node.children[0].value) === stripUrlScheme(node.url);
44
+ }
45
+ const ignoreToken = () => { };
46
+ /** Tracks raw-HTML skip-list tags so the text between an open and close tag is skipped. */
47
+ function trackSkippedHtmlTags(html, c) {
48
+ const openTag = (token) => {
49
+ if (!token.selfClosing && SKIPPED_HTML_TAGS.has(token.tagName))
50
+ c.openSkippedTags.push(token.tagName);
51
+ };
52
+ const closeTag = (token) => {
53
+ const openIndex = c.openSkippedTags.lastIndexOf(token.tagName);
54
+ if (openIndex !== -1)
55
+ c.openSkippedTags.length = openIndex;
56
+ };
57
+ const tokenizer = new Tokenizer({ sourceCodeLocationInfo: false }, {
58
+ onComment: ignoreToken,
59
+ onDoctype: ignoreToken,
60
+ onStartTag: openTag,
61
+ onEndTag: closeTag,
62
+ onEof: ignoreToken,
63
+ onCharacter: ignoreToken,
64
+ onNullCharacter: ignoreToken,
65
+ onWhitespaceCharacter: ignoreToken,
66
+ });
67
+ tokenizer.write(html, true);
68
+ }
15
69
  function collectProse(node, depth, c) {
16
70
  /* istanbul ignore if -- defensive: prevents stack overflow from malicious nesting */
17
71
  if (depth > MAX_RECURSION_DEPTH) {
18
72
  return;
19
73
  }
20
- if (SKIP_TYPES.has(node.type) || OPAQUE_LEAF_TYPES.has(node.type)) {
74
+ if (node.type === "html")
75
+ trackSkippedHtmlTags(node.value, c);
76
+ if (SKIP_TYPES.has(node.type) ||
77
+ OPAQUE_LEAF_TYPES.has(node.type) ||
78
+ c.openSkippedTags.length > 0 ||
79
+ (node.type === "link" && isUrlTextLink(node, c.source))) {
21
80
  c.pendingOpaque = true;
22
81
  return;
23
82
  }
@@ -33,8 +92,8 @@ function collectProse(node, depth, c) {
33
92
  collectProse(child, depth + 1, c);
34
93
  }
35
94
  }
36
- function flattenProse(children) {
37
- const c = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false };
95
+ function flattenProse(children, source) {
96
+ const c = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false, openSkippedTags: [], source };
38
97
  for (const child of children)
39
98
  collectProse(child, 0, c);
40
99
  return { nodes: c.nodes, opaqueBefore: c.opaqueBefore };
@@ -48,7 +107,10 @@ export function remarkPunctilio(options = {}) {
48
107
  ...options,
49
108
  nbsp: options.nbsp ?? false,
50
109
  };
51
- return (tree) => {
110
+ // `file` is absent when the transformer is called with a bare tree (the
111
+ // Prettier plugin); links are then judged by their text alone.
112
+ return (tree, file) => {
113
+ const source = file?.toString() ?? "";
52
114
  visitParents(tree, (node, ancestors) => {
53
115
  if (!PHRASING_CONTAINERS.has(node.type)) {
54
116
  return;
@@ -61,12 +123,10 @@ export function remarkPunctilio(options = {}) {
61
123
  if (!("children" in node)) {
62
124
  return;
63
125
  }
64
- const { nodes, opaqueBefore } = flattenProse(node.children);
65
- // Split at opaque gaps (inline code, images, breaks) so no pass rewrites
66
- // text as adjacent across content that visually separates it.
67
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
68
- transformView(buildProseView(group), pluginOptions);
69
- }
126
+ const { nodes, opaqueBefore } = flattenProse(node.children, source);
127
+ // Opaque gaps (inline code, images, breaks) become placeholders, so
128
+ // quotes pair across them while no pass rewrites text through them.
129
+ runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, pluginOptions));
70
130
  });
71
131
  };
72
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remark.js","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remark.js","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "punctilio",
3
- "version": "5.4.10",
3
+ "version": "5.5.0",
4
4
  "description": "Smart typography transformations: curly quotes, em-dashes, en-dashes, and more",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -28,8 +28,9 @@ async function loadPunctilioConfig(searchFrom: string): Promise<RemarkPunctilioO
28
28
 
29
29
  async function runRemarkPunctilio(opts: RemarkPunctilioOptions, ast: Root): Promise<void> {
30
30
  // The unified `Transformer` signature requires a VFile and a callback,
31
- // but `remarkPunctilio` only ever reads the tree. Narrow to the actual
32
- // shape here so the cast lives in one well-commented place.
31
+ // but `remarkPunctilio` only needs the tree (the file just supplies the
32
+ // source for link positions). Narrow to the actual shape here so the cast
33
+ // lives in one well-commented place.
33
34
  const transformer = remarkPunctilio(opts) as (tree: Root) => void | Promise<void>
34
35
  await transformer(ast)
35
36
  }
package/src/prose-view.ts CHANGED
@@ -273,6 +273,93 @@ export function splitAtIndices<T>(
273
273
  return groups;
274
274
  }
275
275
 
276
+ /**
277
+ * Stand-in for removed opaque inline content (a skipped element, an image,
278
+ * inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
279
+ * Unicode's placeholder for an embedded object: it is neither space, word
280
+ * character, nor punctuation, so a pass needing adjacent text never matches
281
+ * across it (`5<code>c</code>x 3` stays put), while the quote classifier still
282
+ * sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
283
+ */
284
+ export const OPAQUE_PLACEHOLDER = "\uFFFC";
285
+
286
+ /**
287
+ * Single-quote edge stand-ins. The classifier reads end of text as an ending
288
+ * context after a closing single quote and as an opening context before an
289
+ * opening one, but reads {@link OPAQUE_PLACEHOLDER} as neither, so `'hi'` or
290
+ * `boys'` directly before a gap, or `'hi'` directly after one, would lose the
291
+ * role the segment edge gives it. A `)` after the quote and a `(` before it
292
+ * restore those contexts without blocking a pair across the gap
293
+ * (`'<code>x</code>'` still pairs). They are added only beside a single quote:
294
+ * double quotes read the placeholder correctly, and `)` would block a double
295
+ * opener.
296
+ */
297
+ const SEGMENT_END_STAND_IN = ")";
298
+ const SEGMENT_START_STAND_IN = "(";
299
+
300
+ /** Straight, curly, modifier-letter and low-9 single-quote characters. */
301
+ const SINGLE_QUOTE_CHARS: ReadonlySet<string> = new Set([
302
+ "'",
303
+ "\u2018",
304
+ "\u2019",
305
+ "\u02BC",
306
+ "\u201A",
307
+ ]);
308
+
309
+ /** Gap stand-in for the text between `before` and `after`. */
310
+ function gapPlaceholder(before: string, after: string): string {
311
+ const afterQuote = SINGLE_QUOTE_CHARS.has(before.slice(-1));
312
+ const beforeQuote = SINGLE_QUOTE_CHARS.has(after.slice(0, 1));
313
+ return (
314
+ (afterQuote ? SEGMENT_END_STAND_IN : "") +
315
+ OPAQUE_PLACEHOLDER +
316
+ (beforeQuote ? SEGMENT_START_STAND_IN : "")
317
+ );
318
+ }
319
+
320
+ /**
321
+ * Runs `run` over `nodes` as one view with a placeholder node (see
322
+ * {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
323
+ * {@link splitAtIndices}), so context-sensitive passes such as quote pairing
324
+ * read across the gap. The view is committed after `run`. If any edit lands in
325
+ * a placeholder (one that spans, replaces, or is inserted into the gap), the
326
+ * nodes are restored and `run` goes over each opaque-delimited segment on its
327
+ * own instead, so no edit ever lands in or through a gap.
328
+ */
329
+ export function runAcrossOpaqueGaps(
330
+ nodes: readonly ProseNode[],
331
+ breakBefore: ReadonlySet<number>,
332
+ run: (view: ProseView) => void,
333
+ ): void {
334
+ if (nodes.length === 0) return;
335
+ const originalValues = nodes.map((node) => node.value);
336
+ const placeholders: { node: ProseNode; value: string }[] = [];
337
+ const spanning: ProseNode[] = [];
338
+ nodes.forEach((node, index) => {
339
+ if (breakBefore.has(index)) {
340
+ const value = gapPlaceholder(nodes[index - 1].value, node.value);
341
+ const placeholder = { value };
342
+ placeholders.push({ node: placeholder, value });
343
+ spanning.push(placeholder);
344
+ }
345
+ spanning.push(node);
346
+ });
347
+
348
+ const spanningView = buildProseView(spanning);
349
+ run(spanningView);
350
+ spanningView.commit();
351
+ if (placeholders.every(({ node, value }) => node.value === value)) return;
352
+
353
+ nodes.forEach((node, index) => {
354
+ node.value = originalValues[index];
355
+ });
356
+ for (const group of splitAtIndices(nodes, breakBefore)) {
357
+ const segmentView = buildProseView(group);
358
+ run(segmentView);
359
+ segmentView.commit();
360
+ }
361
+ }
362
+
276
363
  export interface ReplaceAllOptions {
277
364
  /** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
278
365
  allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
package/src/rehype.ts CHANGED
@@ -21,6 +21,7 @@ import {
21
21
  buildProseView,
22
22
  type ProsePass,
23
23
  type ProseView,
24
+ runAcrossOpaqueGaps,
24
25
  splitAtIndices,
25
26
  } from "./prose-view.js";
26
27
 
@@ -45,10 +46,12 @@ export interface ElementTransformOptions {
45
46
  export interface RehypePunctilioOptions
46
47
  extends TransformOptions, ElementTransformOptions {
47
48
  /**
48
- * HTML tag names to skip when applying transformations.
49
- * Content inside these elements won't have formatting improvements applied.
49
+ * Additional HTML tag names to skip when applying transformations, on top of
50
+ * the always-skipped defaults ("code", "pre", "script", "style", "kbd",
51
+ * "var", "samp", "template", "math", "svg", "iframe"). Content inside these
52
+ * elements won't have formatting improvements applied.
50
53
  *
51
- * Default: ["code", "pre", "script", "style", "kbd", "var", "samp", "template", "math", "svg"]
54
+ * Default: []
52
55
  */
53
56
  skipTags?: string[];
54
57
 
@@ -73,7 +76,8 @@ export interface RehypePunctilioOptions
73
76
  transformAllElements?: boolean;
74
77
  }
75
78
 
76
- const DEFAULT_SKIP_TAGS = [
79
+ /** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
80
+ export const DEFAULT_SKIP_TAGS: readonly string[] = [
77
81
  "code",
78
82
  "pre",
79
83
  "script",
@@ -84,6 +88,7 @@ const DEFAULT_SKIP_TAGS = [
84
88
  "template",
85
89
  "math",
86
90
  "svg",
91
+ "iframe",
87
92
  ];
88
93
 
89
94
  // Form elements whose text content is a literal control value, not prose.
@@ -99,7 +104,7 @@ const FORM_VALUE_TAGS = ["textarea", "input"];
99
104
  // Skipped in BOTH modes — the allowlist default does not reach it as its own
100
105
  // unit, but a transformable ancestor would otherwise pull its text into a
101
106
  // shared view and transform it.
102
- const RAW_TEXT_FORM_TAG = "textarea";
107
+ export const RAW_TEXT_FORM_TAG = "textarea";
103
108
 
104
109
  // `<select>` is not prose itself, but its `<option>` children are (and are
105
110
  // transformed under the default allowlist). Under `transformAllElements` we
@@ -311,9 +316,10 @@ export interface ProseViewOfOptions extends ElementTransformOptions {
311
316
  /**
312
317
  * Builds a single ProseView over the element's transformable text nodes,
313
318
  * honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
314
- * predicates. Returns null when the element holds no transformable text. This
315
- * view spans opaque gaps; the transform pipeline uses {@link proseViewsOf},
316
- * which splits on them so no pass rewrites across removed atomic content.
319
+ * predicates. Returns null when the element holds no transformable text. The
320
+ * view spans opaque gaps with only a boundary at each; the transform pipeline
321
+ * instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
322
+ * placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
317
323
  */
318
324
  export function proseViewOf(
319
325
  element: Element,
@@ -588,8 +594,8 @@ function hasTextDescendant(
588
594
 
589
595
  export interface CollectProseBlocksOptions {
590
596
  /**
591
- * HTML tag names to skip. Default: the plugin's default skip list
592
- * ("code", "pre", "script", ...).
597
+ * HTML tag names to skip in addition to the plugin's default skip list
598
+ * ("code", "pre", "script", ...). Default: []
593
599
  */
594
600
  skipTags?: string[];
595
601
  /** CSS class names whose elements (and their subtrees) are skipped. Default: [] */
@@ -600,6 +606,16 @@ export interface CollectProseBlocksOptions {
600
606
  transformAllElements?: boolean;
601
607
  }
602
608
 
609
+ // An `<option>` with no `value` attribute submits its text as the value, so
610
+ // the text is a literal control value, not prose. HAST marks an absent
611
+ // property as either `undefined` or `null`.
612
+ function isValueOption(node: Element): boolean {
613
+ return (
614
+ node.tagName === "option" &&
615
+ (node.properties?.value === undefined || node.properties.value === null)
616
+ );
617
+ }
618
+
603
619
  /** Skip predicate and transformable-tag test resolved from the options. */
604
620
  interface ResolvedCollectOptions {
605
621
  shouldSkip: ElementPredicate;
@@ -610,7 +626,7 @@ function resolveCollectOptions(
610
626
  options: CollectProseBlocksOptions,
611
627
  ): ResolvedCollectOptions {
612
628
  const {
613
- skipTags = DEFAULT_SKIP_TAGS,
629
+ skipTags = [],
614
630
  skipClasses = [],
615
631
  shouldSkip,
616
632
  transformAllElements = false,
@@ -620,11 +636,11 @@ function resolveCollectOptions(
620
636
  // flattens its literal value; inverted mode additionally hard-skips the whole
621
637
  // form-value set (void `input`, which is opaque otherwise) on top of the user
622
638
  // skip-list.
623
- const skipTagSet = new Set(
624
- transformAllElements
625
- ? [...skipTags, ...FORM_VALUE_TAGS]
626
- : [...skipTags, RAW_TEXT_FORM_TAG],
627
- );
639
+ const skipTagSet = new Set([
640
+ ...DEFAULT_SKIP_TAGS,
641
+ ...skipTags,
642
+ ...(transformAllElements ? FORM_VALUE_TAGS : [RAW_TEXT_FORM_TAG]),
643
+ ]);
628
644
  const skipClassSet = new Set(skipClasses);
629
645
 
630
646
  const hasSkipClass = (node: Element): boolean => {
@@ -641,6 +657,7 @@ function resolveCollectOptions(
641
657
  return {
642
658
  shouldSkip: (node) =>
643
659
  skipTagSet.has(node.tagName) ||
660
+ isValueOption(node) ||
644
661
  hasSkipClass(node) ||
645
662
  (shouldSkip?.(node) ?? false),
646
663
  // Inverted mode transforms every non-skipped element except non-prose
@@ -837,6 +854,17 @@ function runViewOf(
837
854
  return nodes.length === 0 ? null : buildProseView(nodes);
838
855
  }
839
856
 
857
+ // Runs the full pipeline over flattened prose as one view, with each opaque gap
858
+ // held by a placeholder so quotes pair across it (see `runAcrossOpaqueGaps`).
859
+ function transformProse(
860
+ { nodes, opaqueBefore }: FlattenedProse,
861
+ transformOptions: TransformOptions,
862
+ ): void {
863
+ runAcrossOpaqueGaps(nodes, opaqueBefore, (view) =>
864
+ transformView(view, transformOptions),
865
+ );
866
+ }
867
+
840
868
  function markDescendants(
841
869
  node: Element,
842
870
  set: Set<Element>,
@@ -874,14 +902,10 @@ function transformRootProse(
874
902
  let run: ElementContent[] = [];
875
903
  const flushRun = () => {
876
904
  if (runHasProse(run, shouldSkip)) {
877
- const { nodes, opaqueBefore } = flattenRootRunProse(
878
- run,
879
- shouldSkip,
880
- viewOptions,
905
+ transformProse(
906
+ flattenRootRunProse(run, shouldSkip, viewOptions),
907
+ transformOptions,
881
908
  );
882
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
883
- transformView(buildProseView(group), transformOptions);
884
- }
885
909
  for (const child of run) {
886
910
  if (child.type === "element") {
887
911
  transformed.add(child);
@@ -892,7 +916,8 @@ function transformRootProse(
892
916
  run = [];
893
917
  };
894
918
 
895
- // Only bare text and inline prose elements merge into a run. Block elements
919
+ // Only bare text and inline elements merge into a run: prose elements, plus
920
+ // opaque ones (`<kbd>`, `<img>`) that quotes must pair across. Block elements
896
921
  // and non-transformable structural wrappers (`<html>`/`<head>`/`<body>` under
897
922
  // a full-document parse, or a non-allowlisted element in default mode) are
898
923
  // boundaries left to the element visitor, so their subtrees keep the same
@@ -904,7 +929,9 @@ function transformRootProse(
904
929
  child.type === "comment" ||
905
930
  (child.type === "element" &&
906
931
  !BLOCK_ELEMENTS.has(child.tagName) &&
907
- isTransformable(child.tagName));
932
+ (isTransformable(child.tagName) ||
933
+ OPAQUE_VOID_TAGS.has(child.tagName) ||
934
+ shouldSkip(child)));
908
935
  if (isRunMember) {
909
936
  run.push(child);
910
937
  } else {
@@ -974,23 +1001,24 @@ export function rehypePunctilio(
974
1001
  for (const unit of units) {
975
1002
  if (unit.kind === "element") {
976
1003
  if (!transformed.has(unit.element)) {
977
- for (const view of proseViewsOf(unit.element, viewOptions)) {
978
- transformView(view, transformOptions);
979
- }
1004
+ transformProse(
1005
+ flattenProse(unit.element, shouldSkip, viewOptions),
1006
+ transformOptions,
1007
+ );
980
1008
  transformed.add(unit.element);
981
1009
  // Mark all descendants as processed since their text was included
982
1010
  markDescendants(unit.element, transformed);
983
1011
  }
984
1012
  } else {
985
- const { nodes, opaqueBefore } = flattenRunProse(
986
- unit.container,
987
- unit.children,
988
- shouldSkip,
989
- viewOptions,
1013
+ transformProse(
1014
+ flattenRunProse(
1015
+ unit.container,
1016
+ unit.children,
1017
+ shouldSkip,
1018
+ viewOptions,
1019
+ ),
1020
+ transformOptions,
990
1021
  );
991
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
992
- transformView(buildProseView(group), transformOptions);
993
- }
994
1022
  // Mark the container so a later visit doesn't re-collect its runs,
995
1023
  // and mark the run's inline-element members' subtrees.
996
1024
  transformed.add(unit.container);
package/src/remark.ts CHANGED
@@ -1,12 +1,14 @@
1
- import type { PhrasingContent, Root, Text } from "mdast"
1
+ import type { Link, PhrasingContent, Root, Text } from "mdast"
2
2
  import type { Transformer } from "unified"
3
3
 
4
+ import { type Token, Tokenizer } from "parse5"
4
5
  import { visitParents } from "unist-util-visit-parents"
5
6
 
6
7
  import { transformView } from "./index.js"
7
8
  import { TRANSFORM_OPTION_KEYS, type TransformOptions } from "./transform-options.js"
8
9
  import { MAX_RECURSION_DEPTH } from "./constants.js"
9
- import { buildProseView, splitAtIndices } from "./prose-view.js"
10
+ import { runAcrossOpaqueGaps } from "./prose-view.js"
11
+ import { DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG } from "./rehype.js"
10
12
  import { assertKnownOptionKeys } from "./utils.js"
11
13
 
12
14
  /**
@@ -20,6 +22,8 @@ const PHRASING_CONTAINERS = new Set(["paragraph", "heading", "tableCell"])
20
22
 
21
23
  const SKIP_TYPES = new Set(["inlineCode", "html"])
22
24
 
25
+ const SKIPPED_HTML_TAGS: ReadonlySet<string> = new Set([...DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG])
26
+
23
27
  // Leaf phrasing nodes that render atomic content and carry no transformable
24
28
  // text. Between two text nodes, one is a real visual separator, so the
25
29
  // flattener records an opaque gap there (mirroring skipped `inlineCode`/`html`).
@@ -33,6 +37,67 @@ interface ProseCollector {
33
37
  // An opaque node was dropped since the last emitted text node; the next
34
38
  // emitted node records an opaque gap before it.
35
39
  pendingOpaque: boolean
40
+ // Raw-HTML skip-list tags opened and not yet closed; everything between an
41
+ // open tag and its close tag is skipped content.
42
+ openSkippedTags: string[]
43
+ // Markdown source the tree was parsed from; link positions index into it.
44
+ source: string
45
+ }
46
+
47
+ const URL_SCHEMES = ["mailto:", "https://", "http://"]
48
+
49
+ /** `url` without a leading `mailto:`, `https://` or `http://`, in any letter case. */
50
+ function stripUrlScheme(url: string): string {
51
+ const lowerCaseUrl = url.toLowerCase()
52
+ const scheme = URL_SCHEMES.find((candidate) => lowerCaseUrl.startsWith(candidate))
53
+ return scheme === undefined ? url : url.slice(scheme.length)
54
+ }
55
+
56
+ /** The Markdown source that produced `node`, or "" when it carries no usable position. */
57
+ function sourceOfLink(node: Link, source: string): string {
58
+ const start = node.position?.start.offset
59
+ const end = node.position?.end.offset
60
+ return start === undefined || end === undefined ? "" : source.slice(start, end)
61
+ }
62
+
63
+ /**
64
+ * True for an autolink or bare URL, whose visible text is the URL itself. A
65
+ * link not written as `[text](url)` (an `<…>` autolink or a GFM literal) is one
66
+ * by construction; a bracketed link is one when its text is its URL, with or
67
+ * without the scheme.
68
+ */
69
+ function isUrlTextLink(node: Link, source: string): boolean {
70
+ const linkSource = sourceOfLink(node, source)
71
+ if (linkSource !== "" && !linkSource.startsWith("[")) return true
72
+ if (node.children.length !== 1 || node.children[0].type !== "text") return false
73
+ return stripUrlScheme(node.children[0].value) === stripUrlScheme(node.url)
74
+ }
75
+
76
+ const ignoreToken = (): void => {}
77
+
78
+ /** Tracks raw-HTML skip-list tags so the text between an open and close tag is skipped. */
79
+ function trackSkippedHtmlTags(html: string, c: ProseCollector): void {
80
+ const openTag = (token: Token.TagToken): void => {
81
+ if (!token.selfClosing && SKIPPED_HTML_TAGS.has(token.tagName)) c.openSkippedTags.push(token.tagName)
82
+ }
83
+ const closeTag = (token: Token.TagToken): void => {
84
+ const openIndex = c.openSkippedTags.lastIndexOf(token.tagName)
85
+ if (openIndex !== -1) c.openSkippedTags.length = openIndex
86
+ }
87
+ const tokenizer = new Tokenizer(
88
+ { sourceCodeLocationInfo: false },
89
+ {
90
+ onComment: ignoreToken,
91
+ onDoctype: ignoreToken,
92
+ onStartTag: openTag,
93
+ onEndTag: closeTag,
94
+ onEof: ignoreToken,
95
+ onCharacter: ignoreToken,
96
+ onNullCharacter: ignoreToken,
97
+ onWhitespaceCharacter: ignoreToken,
98
+ }
99
+ )
100
+ tokenizer.write(html, true)
36
101
  }
37
102
 
38
103
  function collectProse(node: PhrasingContent, depth: number, c: ProseCollector): void {
@@ -41,7 +106,14 @@ function collectProse(node: PhrasingContent, depth: number, c: ProseCollector):
41
106
  return
42
107
  }
43
108
 
44
- if (SKIP_TYPES.has(node.type) || OPAQUE_LEAF_TYPES.has(node.type)) {
109
+ if (node.type === "html") trackSkippedHtmlTags(node.value, c)
110
+
111
+ if (
112
+ SKIP_TYPES.has(node.type) ||
113
+ OPAQUE_LEAF_TYPES.has(node.type) ||
114
+ c.openSkippedTags.length > 0 ||
115
+ (node.type === "link" && isUrlTextLink(node, c.source))
116
+ ) {
45
117
  c.pendingOpaque = true
46
118
  return
47
119
  }
@@ -58,8 +130,8 @@ function collectProse(node: PhrasingContent, depth: number, c: ProseCollector):
58
130
  }
59
131
  }
60
132
 
61
- function flattenProse(children: readonly PhrasingContent[]): { nodes: Text[]; opaqueBefore: Set<number> } {
62
- const c: ProseCollector = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false }
133
+ function flattenProse(children: readonly PhrasingContent[], source: string): { nodes: Text[]; opaqueBefore: Set<number> } {
134
+ const c: ProseCollector = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false, openSkippedTags: [], source }
63
135
  for (const child of children) collectProse(child, 0, c)
64
136
  return { nodes: c.nodes, opaqueBefore: c.opaqueBefore }
65
137
  }
@@ -77,7 +149,10 @@ export function remarkPunctilio(
77
149
  nbsp: options.nbsp ?? false,
78
150
  }
79
151
 
80
- return (tree: Root) => {
152
+ // `file` is absent when the transformer is called with a bare tree (the
153
+ // Prettier plugin); links are then judged by their text alone.
154
+ return (tree: Root, file?: { toString(): string }) => {
155
+ const source = file?.toString() ?? ""
81
156
  visitParents(tree, (node, ancestors) => {
82
157
  if (!PHRASING_CONTAINERS.has(node.type)) {
83
158
  return
@@ -93,13 +168,11 @@ export function remarkPunctilio(
93
168
  return
94
169
  }
95
170
 
96
- const { nodes, opaqueBefore } = flattenProse(node.children as PhrasingContent[])
171
+ const { nodes, opaqueBefore } = flattenProse(node.children as PhrasingContent[], source)
97
172
 
98
- // Split at opaque gaps (inline code, images, breaks) so no pass rewrites
99
- // text as adjacent across content that visually separates it.
100
- for (const group of splitAtIndices(nodes, opaqueBefore)) {
101
- transformView(buildProseView(group), pluginOptions)
102
- }
173
+ // Opaque gaps (inline code, images, breaks) become placeholders, so
174
+ // quotes pair across them while no pass rewrites text through them.
175
+ runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, pluginOptions))
103
176
  })
104
177
  }
105
178
  }