@damiro/stylo 0.13.5 → 0.13.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damiro/stylo",
3
- "version": "0.13.5",
3
+ "version": "0.13.6",
4
4
  "description": "A plain-text-first Markdown editor for React, with first-class LaTeX (KaTeX) support.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"highlight-dLERTt-F.js","names":[],"sources":["../src/styles/stylo.module.css","../src/wikilink.ts","../src/frontmatter.ts","../src/editor/highlight.ts"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n min-height: 0;\n color: var(--stylo-text);\n background: var(--stylo-bg);\n border: 1px solid var(--stylo-border);\n border-radius: var(--stylo-radius);\n overflow: hidden;\n}\n\n/* The editing surface's own scroll container (source, in-place, and the source\n pane of split all resolve to `.cm-scroller`). Thin, token-tinted bars so the\n editor doesn't fall back to a heavier native scrollbar than the app chrome\n around it. A host's own `.cm-scroller` rules load after and win. */\n.root :global(.cm-scroller) {\n scrollbar-width: thin;\n scrollbar-color: color-mix(in srgb, var(--stylo-border) 90%, transparent) transparent;\n}\n\n.root :global(.cm-scroller)::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n.root :global(.cm-scroller)::-webkit-scrollbar-thumb {\n border: 3px solid transparent;\n border-radius: 6px;\n background: color-mix(in srgb, var(--stylo-border) 90%, transparent);\n background-clip: padding-box;\n}\n\n.root :global(.cm-scroller)::-webkit-scrollbar-thumb:hover {\n background: color-mix(in srgb, var(--stylo-text-muted) 55%, transparent);\n background-clip: padding-box;\n}\n\n.root :global(.cm-scroller)::-webkit-scrollbar-corner {\n background: transparent;\n}\n\n.source {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n\n.source :global(.cm-editor) {\n height: 100%;\n}\n\n.source :global(.cm-editor.cm-focused) {\n outline: 2px solid var(--stylo-ring);\n outline-offset: -2px;\n}\n\n.inplace {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n\n.toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 2px;\n padding: 4px 6px;\n background: var(--stylo-bg);\n border-bottom: 1px solid var(--stylo-border);\n}\n\n/* One flex child per `\"|\"`-delimited run of items, so `.toolbar`'s wrap\n breaks between groups instead of inside one. */\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n.toolbarButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 28px;\n height: 28px;\n padding: 0 5px;\n border: 0;\n border-radius: calc(var(--stylo-radius) - 3px);\n background: none;\n color: var(--stylo-text-muted);\n font: inherit;\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1;\n cursor: pointer;\n}\n\n.toolbarButton:hover:not(:disabled) {\n background: color-mix(in srgb, var(--stylo-border) 45%, transparent);\n color: var(--stylo-text);\n}\n\n.toolbarButton[data-active] {\n background: color-mix(in srgb, var(--stylo-accent) 12%, transparent);\n color: var(--stylo-text);\n}\n\n.toolbarButton:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n.toolbarButton:focus-visible {\n outline: 2px solid var(--stylo-ring);\n outline-offset: -2px;\n}\n\n.toolbarButton svg {\n display: block;\n width: 16px;\n height: 16px;\n}\n\n/* Text glyphs that stand in for an icon (e.g. `fm`) — monospace to read as syntax. */\n.toolbarButton code {\n font-family: var(\n --stylo-font-family-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.8125rem;\n font-weight: 500;\n}\n\n.toolbarSep {\n align-self: stretch;\n width: 1px;\n margin: 4px 3px;\n background: var(--stylo-border);\n}\n\n/* `toolbar={{ sticky: \"top\" | \"bottom\" | true }}` — pins the bar to an edge\n instead of wherever `<Stylo>` sits on the page. One row, no wrapping: it\n scrolls horizontally instead, and its buttons grow to a comfortable touch\n size. Shared by both edges; `.toolbarStickyTop` / `.toolbarStickyBottom`\n below pick the positioning mechanism and the edge itself. */\n.toolbarSticky {\n z-index: 50;\n flex-wrap: nowrap;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n transition: opacity 0.15s ease;\n /* The base `.toolbar` deliberately leaves font-family to inherit from\n wherever the host mounts `<Stylo>`. Both sticky edges are\n `position: fixed` against the window, so neither can safely lean on\n that — the prose-font token (or its default stack) instead of the\n browser's serif default. */\n font-family: var(\n --stylo-font-family,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n Helvetica,\n Arial,\n sans-serif\n );\n}\n\n.toolbarSticky::-webkit-scrollbar {\n display: none;\n}\n\n.toolbarSticky .toolbarButton {\n min-width: 40px;\n height: 40px;\n flex: 0 0 auto;\n}\n\n/* `\"bottom\"` (or `true`) — has to be `position: fixed`: nothing about a\n mobile keyboard opening is a \"scroll\", so `position: sticky` has nothing to\n react to. Toolbar.tsx nudges it up from `bottom: 0` with\n `transform: translateY()`, tracking `useKeyboardInset`. */\n.toolbarStickyBottom {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n border-bottom: none;\n border-top: 1px solid var(--stylo-border);\n box-shadow: 0 -2px 8px color-mix(in srgb, var(--stylo-text) 10%, transparent);\n}\n\n/* `\"top\"` — `position: fixed`, always pinned rather than waiting for a scroll\n threshold like `\"bottom\"`. Nothing ever eats into the top of the screen, so\n there's no keyboard to react to and no accessory bar to collide with — the\n two problems `\"bottom\"` has. `Toolbar.tsx`'s `useFloatingWatchdog` (a\n `requestAnimationFrame` loop, not CSS) is what actually keeps it visible on\n iOS Safari: earlier rounds tried a static `translateZ(0)`, then real\n `position: sticky`, and the disappear-on-scroll bug outlived both — a value\n that's set once and never re-touched gives the browser's compositor nothing\n to recompute if it drifts, so the watchdog re-asserts a `transform` every\n frame instead of trusting a one-time fix to hold. */\n.toolbarStickyTop {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--stylo-text) 10%, transparent);\n}\n\n/* `stickyVisibility: \"dynamic\"` — faded out while nothing is focused. */\n.toolbarStickyHidden {\n opacity: 0;\n pointer-events: none;\n}\n\n/* `\"bottom\"` is `position: fixed`, out of flow entirely — reserve its resting\n height so it doesn't sit over the document's last line. Static, not\n keyboard-aware: while the keyboard is open the bar rides up to meet it (see\n `useKeyboardInset`), but the browser's own scroll-into-view around the\n caret is what keeps typing visible above both — this padding only covers\n the keyboard-closed resting state. */\n.stickyToolbarRootBottom .source,\n.stickyToolbarRootBottom .inplace {\n padding-bottom: 52px;\n}\n\n.stickyToolbarRootTop .source,\n.stickyToolbarRootTop .inplace {\n padding-top: 52px;\n}\n\n.inplace :global(.cm-editor) {\n height: 100%;\n}\n\n.inplace :global(.cm-editor.cm-focused) {\n outline: 2px solid var(--stylo-ring);\n outline-offset: -2px;\n}\n\n.split {\n display: grid;\n grid-template-columns: 1fr 1fr;\n flex: 1;\n min-height: 0;\n}\n\n.splitPane {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: auto;\n box-sizing: border-box;\n}\n\n.splitPane + .splitPane {\n border-left: 1px solid var(--stylo-border);\n}\n\n.splitPane > .source {\n flex: 1;\n min-height: 0;\n}\n\n/* Vertical rhythm follows Tailwind's `prose` (@tailwindcss/typography) as a\n visual reference — the em-based scale only, no plugin bundled. Consumer CSS\n wins: `.stylo p`, `.stylo h2`, … load after and match our specificity.\n `font-size` is the one base every descendant rule below sizes itself off of\n in `em`, so deriving it from `--stylo-font-size` (the same token the\n in-place canvas uses, ADR-002 §3) cascades the whole scale — no other rule\n needs touching. `padding` is `em`, not a fixed `rem`, for the same reason:\n it tracks the base font size instead of going visually oversized against a\n host-set smaller one. */\n.preview {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n padding: 0.8em 1.0666667em;\n font-size: var(--stylo-font-size, 0.9375rem);\n line-height: 1.75;\n overflow-wrap: break-word;\n}\n\n.preview > :first-child {\n margin-top: 0;\n}\n\n.preview > :last-child {\n margin-bottom: 0;\n}\n\n.preview :is(h1, h2, h3, h4, h5, h6) {\n font-weight: 600;\n}\n\n.preview h1 {\n margin: 0 0 0.8888889em;\n font-size: var(--stylo-rhythm-h1-size, 2.25em);\n line-height: var(--stylo-rhythm-h1-line, 1.1111111);\n}\n\n.preview h2 {\n margin: 2em 0 1em;\n font-size: var(--stylo-rhythm-h2-size, 1.5em);\n line-height: var(--stylo-rhythm-h2-line, 1.3333333);\n}\n\n.preview h3 {\n margin: 1.6em 0 0.6em;\n font-size: var(--stylo-rhythm-h3-size, 1.25em);\n line-height: var(--stylo-rhythm-h3-line, 1.6);\n}\n\n/* h4/h5/h6 share a margin and line-height, but each needs its own font-size —\n previously unset here, so h5/h6 silently fell back to the browser's UA\n default instead of matching the in-place canvas (2026-09-13). */\n.preview :is(h4, h5, h6) {\n margin: 1.5em 0 0.5em;\n line-height: var(--stylo-rhythm-h4-line, 1.5);\n}\n\n.preview h4 {\n font-size: var(--stylo-rhythm-h4-size, 1em);\n}\n\n.preview h5 {\n font-size: var(--stylo-rhythm-h5-size, 0.9em);\n}\n\n.preview h6 {\n font-size: var(--stylo-rhythm-h6-size, 0.9em);\n}\n\n.preview p {\n margin: 1.25em 0;\n}\n\n.preview :is(ul, ol) {\n margin: 1.25em 0;\n padding-left: 1.625em;\n}\n\n.preview li {\n margin: var(--stylo-rhythm-list-item-gap, 0.5em) 0;\n}\n\n.preview li > :is(ul, ol) {\n margin: var(--stylo-rhythm-list-item-gap-nested, 0.75em) 0;\n}\n\n.preview a {\n color: var(--stylo-link);\n text-decoration: none;\n}\n\n.preview code {\n font-family: var(\n --stylo-font-family-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.9em;\n padding: 0.1em 0.35em;\n border-radius: calc(var(--stylo-radius) - 3px);\n background: color-mix(in srgb, var(--stylo-border) 45%, transparent);\n}\n\n.preview pre {\n margin: 1.7142857em 0;\n padding: 0.75rem 0.9rem;\n border-radius: var(--stylo-radius);\n background: color-mix(in srgb, var(--stylo-border) 35%, transparent);\n overflow-x: auto;\n}\n\n.preview pre code {\n padding: 0;\n font-size: 0.85em;\n background: none;\n}\n\n/* Fenced-code token colours — the `preview` counterpart to `src/editor/highlight.ts`'s\n `styloHighlightStyle`. Both read the same `SYNTAX_TAG_GROUPS` list and the same\n `--stylo-syntax-*` tokens; these are plain global classes (rather than a mounted\n CodeMirror `StyleModule`) because `highlightCode.ts` walks a Lezer tree outside of\n any `EditorView`. Keep this list in sync with `SYNTAX_TAG_GROUPS` in `highlight.ts`. */\n:global(.stylo-tok-keyword) {\n color: var(--stylo-syntax-keyword);\n}\n:global(.stylo-tok-string) {\n color: var(--stylo-syntax-string);\n}\n:global(.stylo-tok-escape) {\n color: var(--stylo-syntax-escape);\n}\n:global(.stylo-tok-comment) {\n color: var(--stylo-syntax-comment);\n font-style: italic;\n}\n:global(.stylo-tok-number) {\n color: var(--stylo-syntax-number);\n}\n:global(.stylo-tok-constant) {\n color: var(--stylo-syntax-constant);\n}\n:global(.stylo-tok-function) {\n color: var(--stylo-syntax-function);\n}\n:global(.stylo-tok-type) {\n color: var(--stylo-syntax-type);\n}\n:global(.stylo-tok-property) {\n color: var(--stylo-syntax-property);\n}\n:global(.stylo-tok-tag) {\n color: var(--stylo-syntax-tag);\n}\n:global(.stylo-tok-meta) {\n color: var(--stylo-syntax-comment);\n}\n:global(.stylo-tok-invalid) {\n color: var(--stylo-syntax-invalid);\n}\n\n/* frontmatter=\"code\": the raw `---` block, recessed. `.stylo-frontmatter` is a\n plain (unscoped) class so a consumer's own CSS overrides it at equal\n specificity — restyle the block, or rename / remove the label:\n .stylo-frontmatter::before { content: \"Meta\" }\n .stylo-frontmatter::before { content: none } */\n:global(.stylo-frontmatter) {\n margin: 0 0 1.2em;\n padding: 0.7rem 0.9rem;\n border-left: 3px solid var(--stylo-border);\n border-radius: calc(var(--stylo-radius) - 3px);\n background: color-mix(in srgb, var(--stylo-border) 22%, transparent);\n color: var(--stylo-text-muted);\n font-family: var(\n --stylo-font-family-mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.8125rem;\n line-height: 1.5;\n white-space: pre-wrap;\n overflow-x: auto;\n}\n\n:global(.stylo-frontmatter)::before {\n content: \"Frontmatter\";\n display: block;\n margin-bottom: 0.5em;\n font-family: var(\n --stylo-font-family,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n Helvetica,\n Arial,\n sans-serif\n );\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.preview blockquote {\n margin: 1.6em 0;\n padding-left: 1em;\n border-left: 0.25rem solid var(--stylo-border);\n color: var(--stylo-text-muted);\n}\n\n/* Obsidian callouts (`> [!note]`) — mirrors the in-place canvas. `remark-callout`\n adds `stylo-callout stylo-callout-<bucket>` + `data-callout`. Override\n `--stylo-callout-<bucket>` (or `--stylo-callout-accent` per type) to reskin. */\n.preview :global(.stylo-callout) {\n margin: 1.6em 0;\n padding: var(--stylo-rhythm-callout-padding-y, 0.7em) var(--stylo-rhythm-callout-padding-x, 1rem);\n border-left: 0.25rem solid var(--stylo-callout-accent, var(--stylo-border));\n /* Right corners only, matching the in-place canvas: its callout is built\n from several stacked lines carrying their own border-left, so its left\n edge can't be rounded either — round preview's the same way rather than\n the two surfaces drawing a different shape (2026-09-13). */\n border-top-right-radius: var(--stylo-radius);\n border-bottom-right-radius: var(--stylo-radius);\n background: color-mix(in srgb, var(--stylo-callout-accent, var(--stylo-border)) 10%, transparent);\n color: var(--stylo-text);\n}\n.preview :global(.stylo-callout)::before {\n content: attr(data-callout);\n display: block;\n margin-bottom: 0.2em;\n font-size: 0.8em;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--stylo-callout-accent, var(--stylo-text-muted));\n}\n.preview :global(.stylo-callout-note) {\n --stylo-callout-accent: var(--stylo-callout-note, #3b82f6);\n}\n.preview :global(.stylo-callout-tip) {\n --stylo-callout-accent: var(--stylo-callout-tip, #22c55e);\n}\n.preview :global(.stylo-callout-warn) {\n --stylo-callout-accent: var(--stylo-callout-warn, #f59e0b);\n}\n.preview :global(.stylo-callout-danger) {\n --stylo-callout-accent: var(--stylo-callout-danger, #ef4444);\n}\n.preview :global(.stylo-callout-example) {\n --stylo-callout-accent: var(--stylo-callout-example, #a855f7);\n}\n\n/* `![[embed]]` transclusion. `remark-embed` swaps a lone-`![[ref]]` paragraph\n for `<div class=\"stylo-embed\">`, and `Embed` nests the host-rendered content\n in `.stylo-embed-content`. Both classes are stable override points; set\n `--stylo-embed-accent` to reskin the rail, or zero the padding / border to\n opt out of the frame entirely. */\n.preview :global(.stylo-embed) {\n margin: 1.6em 0;\n padding-left: 1em;\n border-left: 0.25rem solid var(--stylo-embed-accent, var(--stylo-border));\n}\n.preview :global(.stylo-embed-content) > :first-child {\n margin-top: 0;\n}\n.preview :global(.stylo-embed-content) > :last-child {\n margin-bottom: 0;\n}\n\n.preview table {\n display: block;\n margin: 2em 0;\n border-collapse: collapse;\n overflow-x: auto;\n}\n\n.preview :is(th, td) {\n padding: 0.35em 0.6em;\n border: 1px solid var(--stylo-table-border);\n text-align: left;\n}\n\n.preview thead th {\n background: var(--stylo-table-header-bg);\n font-weight: 600;\n}\n\n/* Opt-in zebra striping — no-op until the host sets `--stylo-table-stripe-bg`. */\n.preview tbody tr:nth-child(even) td {\n background: var(--stylo-table-stripe-bg);\n}\n\n/* prose sets `hr { margin: 3em 0 }`, which reads as a page break, not a rule.\n GitHub / VS Code render it tight; `1em` each side matches that. */\n.preview hr {\n margin: 1em 0;\n border: none;\n border-top: 1px solid var(--stylo-border);\n}\n\n.preview :global(.katex-display) {\n padding: 0.25em 0;\n overflow-x: auto;\n overflow-y: hidden;\n}\n","/**\n * `[[target]]` or `[[target|label]]`. Capture group 1 is the target, group 2 the\n * optional display label. The `g` flag is set for `matchAll` / `exec` loops;\n * callers that keep the regex across calls must reset `lastIndex` (or use\n * `matchAll`, which is stateless).\n *\n * Single source of truth for both the render-side plugin (`remark-wikilink`) and\n * the in-place decoration scanner, so the two never drift.\n */\nexport const WIKILINK_PATTERN = /\\[\\[([^\\]|\\n]+?)(?:\\|([^\\]\\n]+?))?\\]\\]/g\n","import type { Text } from \"@codemirror/state\"\n\n/**\n * The leading `---` … `---` YAML block, if present. The CodeMirror Markdown\n * grammar has no frontmatter node — it parses the fences as two thematic breaks\n * — so the region is located by hand. Shared by the in-place decoration layer\n * and the toolbar's frontmatter command.\n */\nexport function frontmatterRange(doc: Text): { from: number; to: number } | null {\n if (doc.lines < 2 || doc.line(1).text.trim() !== \"---\") return null\n for (let n = 2; n <= doc.lines; n++) {\n if (doc.line(n).text.trim() === \"---\") return { from: 0, to: doc.line(n).to }\n }\n return null\n}\n\nconst FRONTMATTER_BLOCK = /^---\\r?\\n(?:([\\s\\S]*?)\\r?\\n)?---[ \\t]*(?:\\r?\\n|$)/\n\n/**\n * Split a leading `---` … `---` block off a Markdown string. `frontmatter` is\n * the inner text (`\"\"` for an empty block); `body` is everything after the\n * closing fence. Used by `preview` to render the block instead of dropping it.\n */\nexport function splitFrontmatter(md: string): { frontmatter: string; body: string } | null {\n const m = FRONTMATTER_BLOCK.exec(md)\n return m ? { frontmatter: m[1] ?? \"\", body: md.slice(m[0].length) } : null\n}\n","import { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\"\nimport { tags as t, type Tag } from \"@lezer/highlight\"\n\n/**\n * One row per `--stylo-syntax-*` token: which Lezer tags map to it, and\n * whether it reads italic. This is the single source of truth for fenced-code\n * colour — `styloHighlightStyle` below builds the live CodeMirror extension\n * from it, and `src/render/highlightCode.ts` builds `preview`'s tree-walking\n * highlighter (a `tagHighlighter` emitting `stylo-tok-<token>` classes,\n * styled in `stylo.module.css`) from the same list, so both surfaces agree by\n * construction rather than by two hand-kept mappings staying in sync.\n *\n * `token` doubles as the `--stylo-syntax-<token>` suffix and the\n * `stylo-tok-<token>` class suffix. `meta` shares its colour with `comment`\n * but isn't italic, so it gets its own row rather than merging into it.\n */\nexport interface SyntaxTagGroup {\n token: string\n tags: Tag[]\n italic?: boolean\n}\n\nexport const SYNTAX_TAG_GROUPS: SyntaxTagGroup[] = [\n {\n token: \"keyword\",\n tags: [\n t.keyword,\n t.modifier,\n t.controlKeyword,\n t.operatorKeyword,\n t.definitionKeyword,\n t.moduleKeyword,\n ],\n },\n { token: \"string\", tags: [t.string, t.special(t.string), t.regexp, t.attributeValue] },\n { token: \"escape\", tags: [t.escape, t.character] },\n {\n token: \"comment\",\n tags: [t.comment, t.lineComment, t.blockComment, t.docComment],\n italic: true,\n },\n { token: \"number\", tags: [t.number, t.integer, t.float] },\n { token: \"constant\", tags: [t.bool, t.null, t.atom, t.constant(t.name)] },\n {\n token: \"function\",\n tags: [t.function(t.variableName), t.function(t.propertyName), t.macroName],\n },\n { token: \"type\", tags: [t.typeName, t.className, t.namespace] },\n { token: \"property\", tags: [t.propertyName, t.attributeName] },\n { token: \"tag\", tags: [t.tagName] },\n { token: \"meta\", tags: [t.meta, t.annotation] },\n { token: \"invalid\", tags: [t.invalid] },\n]\n\n/**\n * Token colours for fenced code and any other embedded-language grammar.\n *\n * Every colour resolves to a `--stylo-syntax-*` custom property, so the host\n * restyles code the same way as the rest of the `--stylo-*` palette; the values\n * in `tokens.css` are the defaults. Both `@codemirror/language` and\n * `@lezer/highlight` are already transitive dependencies of\n * `@codemirror/lang-markdown`, so this adds no package weight.\n *\n * Markdown's own structural tokens (heading marks, emphasis markers, link\n * brackets) are deliberately left undefined: the in-place canvas styles those\n * with decorations, and `source` mode keeps its plain, un-tinted look. Only\n * tokens that come from a real programming-language parser get a colour.\n */\nexport const styloHighlightStyle = HighlightStyle.define(\n SYNTAX_TAG_GROUPS.map(({ tags, token, italic }) => ({\n tag: tags,\n color: `var(--stylo-syntax-${token === \"meta\" ? \"comment\" : token})`,\n ...(italic ? { fontStyle: \"italic\" } : {}),\n })),\n)\n\n/** The highlight style wrapped as an editor extension. */\nexport const styloHighlighting = syntaxHighlighting(styloHighlightStyle)\n"],"mappings":";;;;;;;;;;;;;;;;;;;GCSa,IAAmB;;;ACDhC,SAAgB,EAAiB,GAAgD;CAC/E,IAAI,EAAI,QAAQ,KAAK,EAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,OAAO,OAAO;CAC/D,KAAK,IAAI,IAAI,GAAG,KAAK,EAAI,OAAO,KAC9B,IAAI,EAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,OAAO,OAAO;EAAE,MAAM;EAAG,IAAI,EAAI,KAAK,CAAC,CAAC,CAAC;CAAG;CAE9E,OAAO;AACT;AAEA,IAAM,IAAoB;AAO1B,SAAgB,EAAiB,GAA0D;CACzF,IAAM,IAAI,EAAkB,KAAK,CAAE;CACnC,OAAO,IAAI;EAAE,aAAa,EAAE,MAAM;EAAI,MAAM,EAAG,MAAM,EAAE,EAAE,CAAC,MAAM;CAAE,IAAI;AACxE;;;ACJA,IAAa,IAAsC;CACjD;EACE,OAAO;EACP,MAAM;GACJ,EAAE;GACF,EAAE;GACF,EAAE;GACF,EAAE;GACF,EAAE;GACF,EAAE;EACJ;CACF;CACA;EAAE,OAAO;EAAU,MAAM;GAAC,EAAE;GAAQ,EAAE,QAAQ,EAAE,MAAM;GAAG,EAAE;GAAQ,EAAE;EAAc;CAAE;CACrF;EAAE,OAAO;EAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS;CAAE;CACjD;EACE,OAAO;EACP,MAAM;GAAC,EAAE;GAAS,EAAE;GAAa,EAAE;GAAc,EAAE;EAAU;EAC7D,QAAQ;CACV;CACA;EAAE,OAAO;EAAU,MAAM;GAAC,EAAE;GAAQ,EAAE;GAAS,EAAE;EAAK;CAAE;CACxD;EAAE,OAAO;EAAY,MAAM;GAAC,EAAE;GAAM,EAAE;GAAM,EAAE;GAAM,EAAE,SAAS,EAAE,IAAI;EAAC;CAAE;CACxE;EACE,OAAO;EACP,MAAM;GAAC,EAAE,SAAS,EAAE,YAAY;GAAG,EAAE,SAAS,EAAE,YAAY;GAAG,EAAE;EAAS;CAC5E;CACA;EAAE,OAAO;EAAQ,MAAM;GAAC,EAAE;GAAU,EAAE;GAAW,EAAE;EAAS;CAAE;CAC9D;EAAE,OAAO;EAAY,MAAM,CAAC,EAAE,cAAc,EAAE,aAAa;CAAE;CAC7D;EAAE,OAAO;EAAO,MAAM,CAAC,EAAE,OAAO;CAAE;CAClC;EAAE,OAAO;EAAQ,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU;CAAE;CAC9C;EAAE,OAAO;EAAW,MAAM,CAAC,EAAE,OAAO;CAAE;AACxC,GAgBa,IAAsB,EAAe,OAChD,EAAkB,KAAK,EAAE,SAAM,UAAO,iBAAc;CAClD,KAAK;CACL,OAAO,sBAAsB,MAAU,SAAS,YAAY,EAAM;CAClE,GAAI,IAAS,EAAE,WAAW,SAAS,IAAI,CAAC;AAC1C,EAAE,CACJ,GAGa,IAAoB,EAAmB,CAAmB"}