diff --git a/.eslintignore b/.eslintignore
index 5a6a90e..53c37a1 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1 @@
-dist
-.svelte-kit
\ No newline at end of file
+dist
\ No newline at end of file
diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml
index 842d40c..c9c1775 100644
--- a/.github/workflows/code-quality.yml
+++ b/.github/workflows/code-quality.yml
@@ -13,7 +13,7 @@ jobs:
- uses: actions/setup-node@v3
- uses: pnpm/action-setup@v2
with:
- version: 8
+ version: 6
- name: Install dependendencies
run: pnpm i
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 731c3a1..eb4a0a7 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-node@v3
- uses: pnpm/action-setup@v2
with:
- version: 8
+ version: 6
- name: Install dependencies
run: pnpm i
@@ -25,12 +25,12 @@ jobs:
- name: Build packages
run: pnpm run build
- - name: Build docs
+ - name: Build demo
run: pnpm run build
- working-directory: docs
+ working-directory: demo
- name: Deploy pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./docs/build
+ publish_dir: ./demo/build
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 84a2e6e..be810b1 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -16,7 +16,7 @@ jobs:
- uses: actions/setup-node@v3
- uses: pnpm/action-setup@v2
with:
- version: 8
+ version: 6
- name: Install dependendencies
run: pnpm i
@@ -45,7 +45,7 @@ jobs:
- uses: actions/setup-node@v3
- uses: pnpm/action-setup@v2
with:
- version: 8
+ version: 6
- name: Install dependendencies
run: pnpm i
@@ -53,6 +53,9 @@ jobs:
- name: Build all packages
run: pnpm build
+ - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
+ run: npm audit signatures
+
- name: Release
run: npm run publish
env:
diff --git a/.prettierrc b/.prettierrc
index 8bc6e86..a77fdde 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -3,6 +3,7 @@
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
- "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
+ "plugins": ["prettier-plugin-svelte"],
+ "pluginSearchDirs": ["."],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 85e3f0d..0c2fc2b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,26 +1,7 @@
{
- "cSpell.words": [
- "Carta",
- "cartamd",
- "coldark",
- "dompurify",
- "flexsearch",
- "Gemoji",
- "gruvbox",
- "iconify",
- "Katex",
- "mdsvex",
- "oldschool",
- "rehype",
- "shiki",
- "shikijs",
- "tikz",
- "tikzjax",
- "typeof"
- ],
+ "cSpell.words": ["Carta", "cartamd", "Katex", "tikzjax", "tikz"],
"typescript.tsdk": "node_modules\\typescript\\lib",
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
- },
- "css.customData": [".vscode/tailwind.json"]
+ }
}
diff --git a/.vscode/tailwind.json b/.vscode/tailwind.json
deleted file mode 100644
index a45bccc..0000000
--- a/.vscode/tailwind.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "version": 1.1,
- "atDirectives": [
- {
- "name": "@tailwind",
- "description": "Use the `@tailwind` directive to insert Tailwind's `base`, `components`, `utilities` and `screens` styles into your CSS.",
- "references": [
- {
- "name": "Tailwind Documentation",
- "url": "https://tailwindcss.com/docs/functions-and-directives#tailwind"
- }
- ]
- },
- {
- "name": "@apply",
- "description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS. This is useful when you find a common utility pattern in your HTML that youโd like to extract to a new component.",
- "references": [
- {
- "name": "Tailwind Documentation",
- "url": "https://tailwindcss.com/docs/functions-and-directives#apply"
- }
- ]
- },
- {
- "name": "@responsive",
- "description": "You can generate responsive variants of your own classes by wrapping their definitions in the `@responsive` directive:\n```css\n@responsive {\n .alert {\n background-color: #E53E3E;\n }\n}\n```\n",
- "references": [
- {
- "name": "Tailwind Documentation",
- "url": "https://tailwindcss.com/docs/functions-and-directives#responsive"
- }
- ]
- },
- {
- "name": "@screen",
- "description": "The `@screen` directive allows you to create media queries that reference your breakpoints by **name** instead of duplicating their values in your own CSS:\n```css\n@screen sm {\n /* ... */\n}\n```\nโฆgets transformed into this:\n```css\n@media (min-width: 640px) {\n /* ... */\n}\n```\n",
- "references": [
- {
- "name": "Tailwind Documentation",
- "url": "https://tailwindcss.com/docs/functions-and-directives#screen"
- }
- ]
- },
- {
- "name": "@variants",
- "description": "Generate `hover`, `focus`, `active` and other **variants** of your own utilities by wrapping their definitions in the `@variants` directive:\n```css\n@variants hover, focus {\n .btn-brand {\n background-color: #3182CE;\n }\n}\n```\n",
- "references": [
- {
- "name": "Tailwind Documentation",
- "url": "https://tailwindcss.com/docs/functions-and-directives#variants"
- }
- ]
- }
- ]
-}
diff --git a/README.md b/README.md
index 38235d5..5be5154 100644
--- a/README.md
+++ b/README.md
@@ -1,88 +1,42 @@
-
-
-[](https://beartocode.github.io/carta/)
-
-Carta
-Modern, lightweight, powerful Markdown Editor.
-
-# Introduction
+
-> [!NOTE]
-> Carta has recently been updated to `v4`, which features numerous major changes.
->
-> Follow the [Migration Guide](http://beartocode.github.io/carta/migration) to update your project.
+
-Carta is a **lightweight**, **fast** and **extensible** Svelte Markdown editor and viewer. It is powered by [unified](https://github.com/unifiedjs/unified), [remark](https://github.com/remarkjs/remark) and [rehype](https://github.com/rehypejs/rehype). Check out the [examples](http://beartocode.github.io/carta/examples) to see it in action.
-Differently from most editors, Carta does not include a code editor, but it is _just_ a textarea with syntax highlighting, shortcuts and more.
+Carta is a **lightweight**, **fast** and **extensible** Svelte Markdown editor and viewer, based on [Marked](https://github.com/markedjs/marked). Check out the [demo](http://beartocode.github.io/carta/) to see it in action.
+Differently from most editors, Carta includes neither ProseMirror nor CodeMirror, allowing for an extremely small bundle size and fast loading time.
## Features
-- ๐ Markdown syntax highlighting ([Shiki](https://shiki.style/));
-- ๐ ๏ธ Toolbar (extensible);
-- โจ๏ธ Keyboard **shortcuts** (extensible);
-- ๐ฆ Supports **[150+ plugins](https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins)** thanks to remark;
-- ๐ Scroll sync;
-- โ
Accessibility friendly;
-- ๐ฅ๏ธ **SSR** compatible;
-- โ๏ธ **KaTeX** support (plugin);
-- ๐จ **Slash** commands (plugin);
-- ๐ **Emojis**, with included search (plugin);
-- โ๏ธ **TikZ** support (plugin);
-- ๐ **Attachment** support (plugin);
-- โ **Anchor** links in headings (plugin);
-- ๐ Code blocks **syntax highlighting** (plugin).
+- Keyboard **shortcuts** (extensible);
+- Toolbar (extensible);
+- Markdown syntax highlighting;
+- Scroll sync;
+- **SSR** compatible;
+- **Katex** support (plugin);
+- **Slash** commands (plugin);
+- **Emojis**, with included search (plugin);
+- **Tikz** support(plugin);
+- **Attachment** support(plugin);
+- Code blocks **syntax highlighting** (plugin).
-## Packages
+## Getting started
-| Package | Status | Docs |
-| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
-| [carta-md](https://www.npmjs.com/package/carta-md) |  | [/](https://beartocode.github.io/carta/introduction) |
-| [plugin-math](https://www.npmjs.com/package/@cartamd/plugin-math) |  | [/plugins/math](https://beartocode.github.io/carta/plugins/math) |
-| [plugin-code](https://www.npmjs.com/package/@cartamd/plugin-code) |  | [/plugins/code](https://beartocode.github.io/carta/plugins/code) |
-| [plugin-emoji](https://www.npmjs.com/package/@cartamd/plugin-emoji) |  | [/plugins/emoji](https://beartocode.github.io/carta/plugins/emoji) |
-| [plugin-slash](https://www.npmjs.com/package/@cartamd/plugin-slash) |  | [/plugins/slash](https://beartocode.github.io/carta/plugins/slash) |
-| [plugin-tikz](https://www.npmjs.com/package/@cartamd/plugin-tikz) |  | [/plugins/tikz](https://beartocode.github.io/carta/plugins/tikz) |
-| [plugin-attachment](https://www.npmjs.com/package/@cartamd/plugin-attachment) |  | [/plugins/attachment](https://beartocode.github.io/carta/plugins/attachment) |
-| [plugin-anchor](https://www.npmjs.com/package/@cartamd/plugin-anchor) |  | [/plugins/anchor](https://beartocode.github.io/carta/plugins/anchor) |
-
-## Community plugins
-
-| Plugin | Description |
-| ----------------------------------------------------------------------------- | ---------------------------------- |
-| [carta-plugin-video](https://github.com/maisonsmd/carta-plugin-video) | Render online videos |
-| [carta-plugin-imsize](https://github.com/maisonsmd/carta-plugin-imsize) | Render images in specific sizes |
-| [carta-plugin-subscript](https://github.com/maisonsmd/carta-plugin-subscript) | Render subscripts and superscripts |
-| [carta-plugin-ins-del](https://github.com/maisonsmd/carta-plugin-ins-del) | `` and `` tags support |
-
-# Getting started
-
-> [!WARNING]
+> **Warning**
> Sanitization is not dealt with by Carta. You need to provide a `sanitizer` in the options.
> Common sanitizers are [isomorphic-dompurify](https://www.npmjs.com/package/isomorphic-dompurify) (suggested) and [sanitize-html](https://www.npmjs.com/package/sanitize-html).
-> Checkout the documentation for an example.
-## Installation
+### Installation
Core package:
@@ -96,13 +50,15 @@ Plugins:
npm i @cartamd/plugin-name
```
-## Basic configuration
+### Basic configuration
```svelte
-
+
```
-# Documentation
+Editor component exported properties:
-For the full documentation, examples, guides and more checkout the [website](https://beartocode.github.io/carta/).
+| Name | Type | Description |
+| ---------------- | ----------------------------- | ----------------------------------------- |
+| `carta` | `Carta` | Carta Editor |
+| `theme` | `string` | For custom css themes, see below for more |
+| `value` | `string` | Markdown input |
+| `placeholder` | `string` | Placeholder text for textarea |
+| `mode` | `'tabs' \| 'split' \| 'auto'` | Tabs settings |
+| `disableToolbar` | `boolean` | Option to disable the toolbar |
-- [Introduction](https://beartocode.github.io/carta/introduction)
-- [Examples](https://beartocode.github.io/carta/examples)
-- [Getting Started](https://beartocode.github.io/carta/getting-started)
-- [Editing Styles](https://beartocode.github.io/carta/editing-styles)
-- Plugins:
- - [Math](https://beartocode.github.io/carta/plugins/math)
- - [Code](https://beartocode.github.io/carta/plugins/code)
- - [Emoji](https://beartocode.github.io/carta/plugins/emoji)
- - [Slash](https://beartocode.github.io/carta/plugins/slash)
- - [TikZ](https://beartocode.github.io/carta/plugins/tikz)
- - [Attachment](https://beartocode.github.io/carta/plugins/attachment)
- - [Anchor](https://beartocode.github.io/carta/plugins/anchor)
-- API:
- - [Utilities](https://beartocode.github.io/carta/api/utilities)
- - [Core](https://beartocode.github.io/carta/api/core)
- - [Extension](https://beartocode.github.io/carta/api/extension)
+### Plugins
-# Contributing & Development
+Each plugin's _readme_ includes a guide on its use.
+
+| Name | Description |
+| ----------------------------------------------------------------------------------------------- | --------------------------------------- |
+| [plugin-math](https://github.com/BearToCode/carta/tree/master/packages/plugin-math) | Katex support |
+| [plugin-slash](https://github.com/BearToCode/carta/tree/master/packages/plugin-slash) | Slash commands support |
+| [plugin-emoji](https://github.com/BearToCode/carta/tree/master/packages/plugin-emoji) | Emojis support, including inline search |
+| [plugin-code](https://github.com/BearToCode/carta/tree/master/packages/plugin-code) | Code blocks syntax highlighting |
+| [plugin-tikz](https://github.com/BearToCode/carta/tree/master/packages/plugin-tikz) | TikZ support using TikZJax |
+| [plugin-attachment](https://github.com/BearToCode/carta/tree/master/packages/plugin-attachment) | Attachments support |
+
+## Themes customization
+
+By using the `theme` property in `CartaEditor` and `CartaPreview` you can change their classes to `carta-editor__{theme}` and `carta-viewer__{theme}`.
+
+Check out the [default theme](https://github.com/BearToCode/carta/blob/master/packages/carta-md/src/lib/default.css) to customize it.
+
+If you are using a plugin, look at its _readme_ for its customization.
+
+Markdown highlighting is done using **Speed Highlight JS**, [here](https://github.com/speed-highlight/core/tree/main/src/themes) you can find more themes.
+
+You can find complete Markdown stylesheet online. For example [github-markdown-css](https://github.com/sindresorhus/github-markdown-css)(used in the demo), or [tailwind-typography](https://tailwindcss.com/docs/typography-plugin).
+
+## Extensibility
+
+### Options
+
+Carta options:
+
+| Name | Type | Description |
+| ------------------ | ------------------------------ | ----------------------------------------------- |
+| `extensions` | `CartaExtension[]` | Editor/viewer extensions |
+| `rendererDebounce` | `number` | Renderer debouncing timeout, in ms (def. 300ms) |
+| `disableShortcuts` | `DefaultShortcutId[] \| true` | Remove default shortcuts by ids |
+| `disableIcons` | `DefaultIconId[] \| true` | Remove default icons by ids |
+| `disablePrefixes` | `DefaultPrefixId[] \| true` | Remove default prefixes by ids |
+| `historyOptions` | `Partial` | History (Undo/Redo) options |
+| `sanitizer` | `(html: string) => string` | HTML sanitizer |
+
+You can easily extend Carta by creating custom plugins. Here are all the `CartaExtension` properties:
+
+| Name | Type | Description |
+| ------------------ | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `markedExtensions` | `marked.MarkedExtension[]` | Marked extensions, more on that [here](https://marked.js.org/using_advanced) |
+| `shortcuts` | `KeyboardShortcut[]` | Additional keyboard shortcuts |
+| `icons` | `CartaIcon[]` | Additional icons |
+| `prefixes` | `Prefix[]` | Additional prefixes |
+| `listeners` | `CartaListener[]` | Textarea event listeners |
+| `components` | `CartaExtensionComponents` | Additional components, that will be put after the editor. All components are given a `carta: Carta`. prop The editor has a `relative` position, so you can position elements absolutely |
+| `highlightRules` | `HighlightRule[]` | Custom markdown highlight rules. See [Speed-Highlight Wiki](https://github.com/speed-highlight/core/wiki/Create-or-suggest-new-languages). |
+| `onLoad` | `(data: { carta:Carta, ... }) => void` | Use this callback to execute code when one Carta instance loads the extension. |
+
+If you created a plugin and want to share it, you can open an _issue_ and we will consider sponsoring it on this guide.
+
+## Contributions
Every contribution is well accepted. If you have a feature request you can open a new issue.
@@ -158,12 +159,3 @@ npm run commit
# or, if you have commitizen installed globally
git cz
```
-
-### Running docs
-
-If you want to preview the docs:
-
-```
-cd docs
-npm run dev
-```
diff --git a/packages/plugin-anchor/.gitignore b/demo/.gitignore
similarity index 95%
rename from packages/plugin-anchor/.gitignore
rename to demo/.gitignore
index ac7211b..6635cf5 100644
--- a/packages/plugin-anchor/.gitignore
+++ b/demo/.gitignore
@@ -1,7 +1,6 @@
.DS_Store
node_modules
/build
-/dist
/.svelte-kit
/package
.env
diff --git a/demo/.npmrc b/demo/.npmrc
new file mode 100644
index 0000000..0c05da4
--- /dev/null
+++ b/demo/.npmrc
@@ -0,0 +1,2 @@
+engine-strict=true
+resolution-mode=highest
diff --git a/docs/package.json b/demo/package.json
similarity index 53%
rename from docs/package.json
rename to demo/package.json
index 7a24ff5..892ece0 100644
--- a/docs/package.json
+++ b/demo/package.json
@@ -1,5 +1,5 @@
{
- "name": "docs",
+ "name": "demo",
"version": "0.0.1",
"private": true,
"license": "MIT",
@@ -15,40 +15,24 @@
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/adapter-static": "3.0.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
- "@types/flexsearch": "^0.7.6",
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/adapter-static": "1.0.0-next.50",
+ "@sveltejs/kit": "^1.5.0",
"@types/katex": "^0.16.0",
- "autoprefixer": "^10.4.16",
- "mdsvex": "^0.11.0",
- "rehype-autolink-headings": "^7.1.0",
- "rehype-slug": "^6.0.0",
- "sass": "^1.69.5",
- "svelte": "^4.2.12",
- "svelte-check": "^3.6.7",
- "tailwindcss": "^3.3.5",
+ "svelte": "^3.54.0 || ^4.0.0",
+ "svelte-check": "^3.0.1",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
- "vite": "^5.1.6"
+ "vite": "^4.3.9"
},
"type": "module",
"dependencies": {
- "@cartamd/plugin-attachment": "workspace:^",
"@cartamd/plugin-code": "workspace:^",
"@cartamd/plugin-emoji": "workspace:^",
"@cartamd/plugin-math": "workspace:^",
"@cartamd/plugin-slash": "workspace:^",
"@cartamd/plugin-tikz": "workspace:^",
- "bits-ui": "^0.9.1",
"carta-md": "workspace:^",
- "clsx": "^2.0.0",
- "cmdk-sv": "^0.0.6",
- "flexsearch": "0.7.21",
- "iconify-icon": "^2.0.0",
- "katex": "^0.16.10",
- "tailwind-merge": "^2.0.0"
+ "katex": "^0.16.7"
}
}
diff --git a/docs/src/app.d.ts b/demo/src/app.d.ts
similarity index 100%
rename from docs/src/app.d.ts
rename to demo/src/app.d.ts
diff --git a/packages/plugin-anchor/src/app.html b/demo/src/app.html
similarity index 51%
rename from packages/plugin-anchor/src/app.html
rename to demo/src/app.html
index f22aeaa..77d870b 100644
--- a/packages/plugin-anchor/src/app.html
+++ b/demo/src/app.html
@@ -1,12 +1,13 @@
-
+
-
+
+
%sveltekit.head%
- %sveltekit.body%
+ %sveltekit.body%
diff --git a/demo/src/routes/+page.svelte b/demo/src/routes/+page.svelte
new file mode 100644
index 0000000..879c4ad
--- /dev/null
+++ b/demo/src/routes/+page.svelte
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/src/routes/+page.ts b/demo/src/routes/+page.ts
new file mode 100644
index 0000000..189f71e
--- /dev/null
+++ b/demo/src/routes/+page.ts
@@ -0,0 +1 @@
+export const prerender = true;
diff --git a/demo/src/routes/placeholder.ts b/demo/src/routes/placeholder.ts
new file mode 100644
index 0000000..3731509
--- /dev/null
+++ b/demo/src/routes/placeholder.ts
@@ -0,0 +1,122 @@
+export const placeholderText = `# Carta Demo
+
+Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the **Galaxy** lies a small unregarded yellow sun.
+Orbiting this at a distance of roughly _ninety-two million miles_ is an utterly insignificant little blue green planet :earth_africa: whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.
+
+\`\`\`tikz
+\\usepackage{pgfplots}
+\\pgfplotsset{compat=1.16}
+
+\\pgfplotsset{width=7cm,compat=1.8}
+\\begin{document}
+\\begin{tikzpicture}[thick,scale=1.2, every node/.style={scale=1.2}]
+ \\begin{axis}
+ \\addplot3[
+ surf,
+ colormap/viridis,
+ samples=20,
+ domain=0:2*pi,
+ y domain=0:2*pi,
+ z buffer=sort
+ ]
+ ( {(2+cos(deg(x)))*cos(deg(y+pi/2))},
+ {(2+cos(deg(x)))*sin(deg(y+pi/2))},
+ {sin(deg(x))}
+ );
+ \\end{axis}
+\\end{tikzpicture}
+\\end{document}
+\`\`\`
+
+# Basic Markdown
+
+You can have different types of text: **bold**, _italic_, \`code\` and ~~strikethrough~~. This is a [link](http://beartocode.github.io/carta/) to the page you are currently viewing.
+
+Here is a quote:
+
+> Time is an illusion. Lunchtime doubly so.
+
+And then some lists:
+
+- This is a bulleted list
+- Which does not have an order
+- but only some dots
+
+1. And then that's one with numbers
+2. That just keep going
+3. and going
+
+- [ ] And finally this is a task list
+- [ ] Where you can keep track of to-dos
+- [x] by putting an _x_ inside the brackets
+
+You can also create tables, like so:
+
+| Item | Price | Origin |
+| ------- | ----- | ------ |
+| :apple: | 2.1 | Italy |
+| :banana:| 42 | Brazil |
+| :lemon: | 18 | Spain |
+
+# Official Plugins
+
+## \`plugin-code\`
+
+This plugin adds support for **syntax highlighting** on your code blocks:
+
+\`\`\`rs
+fn visit_mars() {
+ let spaceship = get_spaceship();
+
+ spaceship.liftoff();
+ spaceship.head_to(Planet::Mars);
+ thread::sleep(Time::Month(6));
+ spaceship.land();
+}
+\`\`\`
+
+## \`plugin-math\`
+
+
+With this plugin you can write beautiful Katex expressions, both _inline_ $\\underline{v}=A-\\lambda I_d$, and as _block_ equations:
+
+$$
+{\\displaystyle {\\boldsymbol {\\sigma }}=\\zeta (\\nabla \\cdot \\mathbf {u} )\\mathbf {I} +\\mu \\left[\\nabla \\mathbf {u} +(\\nabla \\mathbf {u} )^{\\mathrm {T} }-{\\tfrac {2}{3}}(\\nabla \\cdot \\mathbf {u} )\\mathbf {I} \\right]}
+$$
+
+## \`plugin-emoji\`
+
+Adds support for **emojis**, as well as an inline emoji search, that appears after typing a colon. :smile_cat:
+
+Try typing an icon to see the inline search. :alien:
+
+## \`plugin-slash\`
+
+Use a **slash** / to use commands while writing markdown. You can add your custom commands too. Also includes a inline command search.
+
+## \`plugin-tikz\`
+
+
+\`\`\`tikz
+\\usepackage{pgfplots}
+\\pgfplotsset{compat=1.16}
+\\pgfplotsset{width=7cm}
+
+\\begin{document}
+\\begin{tikzpicture}[thick,scale=1.2, every node/.style={scale=1.2}]
+ \\begin{axis}[domain=-1:1,y domain=-1:1]
+ \\addplot3[
+ surf,
+ colormap/viridis,
+ samples = 18
+ ]
+ {x*y*exp(x+2*y-9*x^2-9*y^2)};
+ \\end{axis}
+\\end{tikzpicture}
+\\end{document}
+\`\`\`
+
+Adds support for **TikZ**, thanks to [TikZJax](https://tikzjax.com/).
+
+
+`;
diff --git a/demo/static/.nojekyll b/demo/static/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/packages/plugin-anchor/static/favicon.png b/demo/static/favicon.png
similarity index 100%
rename from packages/plugin-anchor/static/favicon.png
rename to demo/static/favicon.png
diff --git a/demo/static/github-light-theme.css b/demo/static/github-light-theme.css
new file mode 100644
index 0000000..45f073b
--- /dev/null
+++ b/demo/static/github-light-theme.css
@@ -0,0 +1,1007 @@
+.markdown-body {
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ margin: 0;
+ color: #24292f;
+ background-color: #ffffff;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial,
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
+ font-size: 16px;
+ line-height: 1.5;
+ word-wrap: break-word;
+}
+
+.markdown-body .octicon {
+ display: inline-block;
+ fill: currentColor;
+ vertical-align: text-bottom;
+}
+
+.markdown-body h1:hover .anchor .octicon-link:before,
+.markdown-body h2:hover .anchor .octicon-link:before,
+.markdown-body h3:hover .anchor .octicon-link:before,
+.markdown-body h4:hover .anchor .octicon-link:before,
+.markdown-body h5:hover .anchor .octicon-link:before,
+.markdown-body h6:hover .anchor .octicon-link:before {
+ width: 16px;
+ height: 16px;
+ content: ' ';
+ display: inline-block;
+ background-color: currentColor;
+ -webkit-mask-image: url("data:image/svg+xml, ");
+ mask-image: url("data:image/svg+xml, ");
+}
+
+.markdown-body details,
+.markdown-body figcaption,
+.markdown-body figure {
+ display: block;
+}
+
+.markdown-body summary {
+ display: list-item;
+}
+
+.markdown-body [hidden] {
+ display: none !important;
+}
+
+.markdown-body a {
+ background-color: transparent;
+ color: #0969da;
+ text-decoration: none;
+}
+
+.markdown-body abbr[title] {
+ border-bottom: none;
+ text-decoration: underline dotted;
+}
+
+.markdown-body b,
+.markdown-body strong {
+ font-weight: 600;
+}
+
+.markdown-body dfn {
+ font-style: italic;
+}
+
+.markdown-body h1 {
+ margin: 0.67em 0;
+ font-weight: 600;
+ padding-bottom: 0.3em;
+ font-size: 2em;
+ border-bottom: 1px solid hsla(210, 18%, 87%, 1);
+}
+
+.markdown-body mark {
+ background-color: #fff8c5;
+ color: #24292f;
+}
+
+.markdown-body small {
+ font-size: 90%;
+}
+
+.markdown-body sub,
+.markdown-body sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+.markdown-body sub {
+ bottom: -0.25em;
+}
+
+.markdown-body sup {
+ top: -0.5em;
+}
+
+.markdown-body img {
+ border-style: none;
+ max-width: 100%;
+ box-sizing: content-box;
+ background-color: #ffffff;
+}
+
+.markdown-body code,
+.markdown-body kbd,
+.markdown-body pre,
+.markdown-body samp {
+ font-family: monospace;
+ font-size: 1em;
+}
+
+.markdown-body figure {
+ margin: 1em 40px;
+}
+
+.markdown-body hr {
+ box-sizing: content-box;
+ overflow: hidden;
+ background: transparent;
+ border-bottom: 1px solid hsla(210, 18%, 87%, 1);
+ height: 0.25em;
+ padding: 0;
+ margin: 24px 0;
+ background-color: #d0d7de;
+ border: 0;
+}
+
+.markdown-body input {
+ font: inherit;
+ margin: 0;
+ overflow: visible;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+.markdown-body [type='button'],
+.markdown-body [type='reset'],
+.markdown-body [type='submit'] {
+ -webkit-appearance: button;
+}
+
+.markdown-body [type='checkbox'],
+.markdown-body [type='radio'] {
+ box-sizing: border-box;
+ padding: 0;
+}
+
+.markdown-body [type='number']::-webkit-inner-spin-button,
+.markdown-body [type='number']::-webkit-outer-spin-button {
+ height: auto;
+}
+
+.markdown-body [type='search']::-webkit-search-cancel-button,
+.markdown-body [type='search']::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+.markdown-body ::-webkit-input-placeholder {
+ color: inherit;
+ opacity: 0.54;
+}
+
+.markdown-body ::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+
+.markdown-body a:hover {
+ text-decoration: underline;
+}
+
+.markdown-body ::placeholder {
+ color: #6e7781;
+ opacity: 1;
+}
+
+.markdown-body hr::before {
+ display: table;
+ content: '';
+}
+
+.markdown-body hr::after {
+ display: table;
+ clear: both;
+ content: '';
+}
+
+.markdown-body table {
+ border-spacing: 0;
+ border-collapse: collapse;
+ display: block;
+ width: max-content;
+ max-width: 100%;
+ overflow: auto;
+}
+
+.markdown-body td,
+.markdown-body th {
+ padding: 0;
+}
+
+.markdown-body details summary {
+ cursor: pointer;
+}
+
+.markdown-body details:not([open]) > *:not(summary) {
+ display: none !important;
+}
+
+.markdown-body a:focus,
+.markdown-body [role='button']:focus,
+.markdown-body input[type='radio']:focus,
+.markdown-body input[type='checkbox']:focus {
+ outline: 2px solid #0969da;
+ outline-offset: -2px;
+ box-shadow: none;
+}
+
+.markdown-body a:focus:not(:focus-visible),
+.markdown-body [role='button']:focus:not(:focus-visible),
+.markdown-body input[type='radio']:focus:not(:focus-visible),
+.markdown-body input[type='checkbox']:focus:not(:focus-visible) {
+ outline: solid 1px transparent;
+}
+
+.markdown-body a:focus-visible,
+.markdown-body [role='button']:focus-visible,
+.markdown-body input[type='radio']:focus-visible,
+.markdown-body input[type='checkbox']:focus-visible {
+ outline: 2px solid #0969da;
+ outline-offset: -2px;
+ box-shadow: none;
+}
+
+.markdown-body a:not([class]):focus,
+.markdown-body a:not([class]):focus-visible,
+.markdown-body input[type='radio']:focus,
+.markdown-body input[type='radio']:focus-visible,
+.markdown-body input[type='checkbox']:focus,
+.markdown-body input[type='checkbox']:focus-visible {
+ outline-offset: 0;
+}
+
+.markdown-body kbd {
+ display: inline-block;
+ padding: 3px 5px;
+ font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
+ line-height: 10px;
+ color: #24292f;
+ vertical-align: middle;
+ background-color: #f6f8fa;
+ border: solid 1px rgba(175, 184, 193, 0.2);
+ border-bottom-color: rgba(175, 184, 193, 0.2);
+ border-radius: 6px;
+ box-shadow: inset 0 -1px 0 rgba(175, 184, 193, 0.2);
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+ margin-top: 24px;
+ margin-bottom: 16px;
+ font-weight: 600;
+ line-height: 1.25;
+}
+
+.markdown-body h2 {
+ font-weight: 600;
+ padding-bottom: 0.3em;
+ font-size: 1.5em;
+ border-bottom: 1px solid hsla(210, 18%, 87%, 1);
+}
+
+.markdown-body h3 {
+ font-weight: 600;
+ font-size: 1.25em;
+}
+
+.markdown-body h4 {
+ font-weight: 600;
+ font-size: 1em;
+}
+
+.markdown-body h5 {
+ font-weight: 600;
+ font-size: 0.875em;
+}
+
+.markdown-body h6 {
+ font-weight: 600;
+ font-size: 0.85em;
+ color: #57606a;
+}
+
+.markdown-body p {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+.markdown-body blockquote {
+ margin: 0;
+ padding: 0 1em;
+ color: #57606a;
+ border-left: 0.25em solid #d0d7de;
+}
+
+.markdown-body ul,
+.markdown-body ol {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 2em;
+}
+
+.markdown-body ol ol,
+.markdown-body ul ol {
+ list-style-type: lower-roman;
+}
+
+.markdown-body ul ul ol,
+.markdown-body ul ol ol,
+.markdown-body ol ul ol,
+.markdown-body ol ol ol {
+ list-style-type: lower-alpha;
+}
+
+.markdown-body dd {
+ margin-left: 0;
+}
+
+.markdown-body tt,
+.markdown-body code,
+.markdown-body samp {
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
+ font-size: 12px;
+}
+
+.markdown-body pre {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
+ font-size: 12px;
+ word-wrap: normal;
+}
+
+.markdown-body .octicon {
+ display: inline-block;
+ overflow: visible !important;
+ vertical-align: text-bottom;
+ fill: currentColor;
+}
+
+.markdown-body input::-webkit-outer-spin-button,
+.markdown-body input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+.markdown-body::before {
+ display: table;
+ content: '';
+}
+
+.markdown-body::after {
+ display: table;
+ clear: both;
+ content: '';
+}
+
+.markdown-body > *:first-child {
+ margin-top: 0 !important;
+}
+
+.markdown-body > *:last-child {
+ margin-bottom: 0 !important;
+}
+
+.markdown-body a:not([href]) {
+ color: inherit;
+ text-decoration: none;
+}
+
+.markdown-body .absent {
+ color: #cf222e;
+}
+
+.markdown-body .anchor {
+ float: left;
+ padding-right: 4px;
+ margin-left: -20px;
+ line-height: 1;
+}
+
+.markdown-body .anchor:focus {
+ outline: none;
+}
+
+.markdown-body p,
+.markdown-body blockquote,
+.markdown-body ul,
+.markdown-body ol,
+.markdown-body dl,
+.markdown-body table,
+.markdown-body pre,
+.markdown-body details {
+ margin-top: 0;
+ margin-bottom: 16px;
+}
+
+.markdown-body blockquote > :first-child {
+ margin-top: 0;
+}
+
+.markdown-body blockquote > :last-child {
+ margin-bottom: 0;
+}
+
+.markdown-body h1 .octicon-link,
+.markdown-body h2 .octicon-link,
+.markdown-body h3 .octicon-link,
+.markdown-body h4 .octicon-link,
+.markdown-body h5 .octicon-link,
+.markdown-body h6 .octicon-link {
+ color: #24292f;
+ vertical-align: middle;
+ visibility: hidden;
+}
+
+.markdown-body h1:hover .anchor,
+.markdown-body h2:hover .anchor,
+.markdown-body h3:hover .anchor,
+.markdown-body h4:hover .anchor,
+.markdown-body h5:hover .anchor,
+.markdown-body h6:hover .anchor {
+ text-decoration: none;
+}
+
+.markdown-body h1:hover .anchor .octicon-link,
+.markdown-body h2:hover .anchor .octicon-link,
+.markdown-body h3:hover .anchor .octicon-link,
+.markdown-body h4:hover .anchor .octicon-link,
+.markdown-body h5:hover .anchor .octicon-link,
+.markdown-body h6:hover .anchor .octicon-link {
+ visibility: visible;
+}
+
+.markdown-body h1 tt,
+.markdown-body h1 code,
+.markdown-body h2 tt,
+.markdown-body h2 code,
+.markdown-body h3 tt,
+.markdown-body h3 code,
+.markdown-body h4 tt,
+.markdown-body h4 code,
+.markdown-body h5 tt,
+.markdown-body h5 code,
+.markdown-body h6 tt,
+.markdown-body h6 code {
+ padding: 0 0.2em;
+ font-size: inherit;
+}
+
+.markdown-body summary h1,
+.markdown-body summary h2,
+.markdown-body summary h3,
+.markdown-body summary h4,
+.markdown-body summary h5,
+.markdown-body summary h6 {
+ display: inline-block;
+}
+
+.markdown-body summary h1 .anchor,
+.markdown-body summary h2 .anchor,
+.markdown-body summary h3 .anchor,
+.markdown-body summary h4 .anchor,
+.markdown-body summary h5 .anchor,
+.markdown-body summary h6 .anchor {
+ margin-left: -40px;
+}
+
+.markdown-body summary h1,
+.markdown-body summary h2 {
+ padding-bottom: 0;
+ border-bottom: 0;
+}
+
+.markdown-body ul.no-list,
+.markdown-body ol.no-list {
+ padding: 0;
+ list-style-type: none;
+}
+
+.markdown-body ol[type='a'] {
+ list-style-type: lower-alpha;
+}
+
+.markdown-body ol[type='A'] {
+ list-style-type: upper-alpha;
+}
+
+.markdown-body ol[type='i'] {
+ list-style-type: lower-roman;
+}
+
+.markdown-body ol[type='I'] {
+ list-style-type: upper-roman;
+}
+
+.markdown-body ol[type='1'] {
+ list-style-type: decimal;
+}
+
+.markdown-body div > ol:not([type]) {
+ list-style-type: decimal;
+}
+
+.markdown-body ul ul,
+.markdown-body ul ol,
+.markdown-body ol ol,
+.markdown-body ol ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.markdown-body li > p {
+ margin-top: 16px;
+}
+
+.markdown-body li + li {
+ margin-top: 0.25em;
+}
+
+.markdown-body dl {
+ padding: 0;
+}
+
+.markdown-body dl dt {
+ padding: 0;
+ margin-top: 16px;
+ font-size: 1em;
+ font-style: italic;
+ font-weight: 600;
+}
+
+.markdown-body dl dd {
+ padding: 0 16px;
+ margin-bottom: 16px;
+}
+
+.markdown-body table th {
+ font-weight: 600;
+}
+
+.markdown-body table th,
+.markdown-body table td {
+ padding: 6px 13px;
+ border: 1px solid #d0d7de;
+}
+
+.markdown-body table tr {
+ background-color: #ffffff;
+ border-top: 1px solid hsla(210, 18%, 87%, 1);
+}
+
+.markdown-body table tr:nth-child(2n) {
+ background-color: #f6f8fa;
+}
+
+.markdown-body table img {
+ background-color: transparent;
+}
+
+.markdown-body img[align='right'] {
+ padding-left: 20px;
+}
+
+.markdown-body img[align='left'] {
+ padding-right: 20px;
+}
+
+.markdown-body .emoji {
+ max-width: none;
+ vertical-align: text-top;
+ background-color: transparent;
+}
+
+.markdown-body span.frame {
+ display: block;
+ overflow: hidden;
+}
+
+.markdown-body span.frame > span {
+ display: block;
+ float: left;
+ width: auto;
+ padding: 7px;
+ margin: 13px 0 0;
+ overflow: hidden;
+ border: 1px solid #d0d7de;
+}
+
+.markdown-body span.frame span img {
+ display: block;
+ float: left;
+}
+
+.markdown-body span.frame span span {
+ display: block;
+ padding: 5px 0 0;
+ clear: both;
+ color: #24292f;
+}
+
+.markdown-body span.align-center {
+ display: block;
+ overflow: hidden;
+ clear: both;
+}
+
+.markdown-body span.align-center > span {
+ display: block;
+ margin: 13px auto 0;
+ overflow: hidden;
+ text-align: center;
+}
+
+.markdown-body span.align-center span img {
+ margin: 0 auto;
+ text-align: center;
+}
+
+.markdown-body span.align-right {
+ display: block;
+ overflow: hidden;
+ clear: both;
+}
+
+.markdown-body span.align-right > span {
+ display: block;
+ margin: 13px 0 0;
+ overflow: hidden;
+ text-align: right;
+}
+
+.markdown-body span.align-right span img {
+ margin: 0;
+ text-align: right;
+}
+
+.markdown-body span.float-left {
+ display: block;
+ float: left;
+ margin-right: 13px;
+ overflow: hidden;
+}
+
+.markdown-body span.float-left span {
+ margin: 13px 0 0;
+}
+
+.markdown-body span.float-right {
+ display: block;
+ float: right;
+ margin-left: 13px;
+ overflow: hidden;
+}
+
+.markdown-body span.float-right > span {
+ display: block;
+ margin: 13px auto 0;
+ overflow: hidden;
+ text-align: right;
+}
+
+.markdown-body code,
+.markdown-body tt {
+ padding: 0.2em 0.4em;
+ margin: 0;
+ font-size: 85%;
+ white-space: break-spaces;
+ background-color: rgba(175, 184, 193, 0.2);
+ border-radius: 6px;
+}
+
+.markdown-body code br,
+.markdown-body tt br {
+ display: none;
+}
+
+.markdown-body del code {
+ text-decoration: inherit;
+}
+
+.markdown-body samp {
+ font-size: 85%;
+}
+
+.markdown-body pre code {
+ font-size: 100%;
+}
+
+.markdown-body pre > code {
+ padding: 0;
+ margin: 0;
+ word-break: normal;
+ white-space: pre;
+ background: transparent;
+ border: 0;
+}
+
+.markdown-body .highlight {
+ margin-bottom: 16px;
+}
+
+.markdown-body .highlight pre {
+ margin-bottom: 0;
+ word-break: normal;
+}
+
+.markdown-body .highlight pre,
+.markdown-body pre {
+ padding: 16px;
+ overflow: auto;
+ font-size: 85%;
+ line-height: 1.45;
+ background-color: #f6f8fa;
+ border-radius: 6px;
+}
+
+.markdown-body pre code,
+.markdown-body pre tt {
+ display: inline;
+ max-width: auto;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ line-height: inherit;
+ word-wrap: normal;
+ background-color: transparent;
+ border: 0;
+}
+
+.markdown-body .csv-data td,
+.markdown-body .csv-data th {
+ padding: 5px;
+ overflow: hidden;
+ font-size: 12px;
+ line-height: 1;
+ text-align: left;
+ white-space: nowrap;
+}
+
+.markdown-body .csv-data .blob-num {
+ padding: 10px 8px 9px;
+ text-align: right;
+ background: #ffffff;
+ border: 0;
+}
+
+.markdown-body .csv-data tr {
+ border-top: 0;
+}
+
+.markdown-body .csv-data th {
+ font-weight: 600;
+ background: #f6f8fa;
+ border-top: 0;
+}
+
+.markdown-body [data-footnote-ref]::before {
+ content: '[';
+}
+
+.markdown-body [data-footnote-ref]::after {
+ content: ']';
+}
+
+.markdown-body .footnotes {
+ font-size: 12px;
+ color: #57606a;
+ border-top: 1px solid #d0d7de;
+}
+
+.markdown-body .footnotes ol {
+ padding-left: 16px;
+}
+
+.markdown-body .footnotes ol ul {
+ display: inline-block;
+ padding-left: 16px;
+ margin-top: 16px;
+}
+
+.markdown-body .footnotes li {
+ position: relative;
+}
+
+.markdown-body .footnotes li:target::before {
+ position: absolute;
+ top: -8px;
+ right: -8px;
+ bottom: -8px;
+ left: -24px;
+ pointer-events: none;
+ content: '';
+ border: 2px solid #0969da;
+ border-radius: 6px;
+}
+
+.markdown-body .footnotes li:target {
+ color: #24292f;
+}
+
+.markdown-body .footnotes .data-footnote-backref g-emoji {
+ font-family: monospace;
+}
+
+.markdown-body .pl-c {
+ color: #6e7781;
+}
+
+.markdown-body .pl-c1,
+.markdown-body .pl-s .pl-v {
+ color: #0550ae;
+}
+
+.markdown-body .pl-e,
+.markdown-body .pl-en {
+ color: #8250df;
+}
+
+.markdown-body .pl-smi,
+.markdown-body .pl-s .pl-s1 {
+ color: #24292f;
+}
+
+.markdown-body .pl-ent {
+ color: #116329;
+}
+
+.markdown-body .pl-k {
+ color: #cf222e;
+}
+
+.markdown-body .pl-s,
+.markdown-body .pl-pds,
+.markdown-body .pl-s .pl-pse .pl-s1,
+.markdown-body .pl-sr,
+.markdown-body .pl-sr .pl-cce,
+.markdown-body .pl-sr .pl-sre,
+.markdown-body .pl-sr .pl-sra {
+ color: #0a3069;
+}
+
+.markdown-body .pl-v,
+.markdown-body .pl-smw {
+ color: #953800;
+}
+
+.markdown-body .pl-bu {
+ color: #82071e;
+}
+
+.markdown-body .pl-ii {
+ color: #f6f8fa;
+ background-color: #82071e;
+}
+
+.markdown-body .pl-c2 {
+ color: #f6f8fa;
+ background-color: #cf222e;
+}
+
+.markdown-body .pl-sr .pl-cce {
+ font-weight: bold;
+ color: #116329;
+}
+
+.markdown-body .pl-ml {
+ color: #3b2300;
+}
+
+.markdown-body .pl-mh,
+.markdown-body .pl-mh .pl-en,
+.markdown-body .pl-ms {
+ font-weight: bold;
+ color: #0550ae;
+}
+
+.markdown-body .pl-mi {
+ font-style: italic;
+ color: #24292f;
+}
+
+.markdown-body .pl-mb {
+ font-weight: bold;
+ color: #24292f;
+}
+
+.markdown-body .pl-md {
+ color: #82071e;
+ background-color: #ffebe9;
+}
+
+.markdown-body .pl-mi1 {
+ color: #116329;
+ background-color: #dafbe1;
+}
+
+.markdown-body .pl-mc {
+ color: #953800;
+ background-color: #ffd8b5;
+}
+
+.markdown-body .pl-mi2 {
+ color: #eaeef2;
+ background-color: #0550ae;
+}
+
+.markdown-body .pl-mdr {
+ font-weight: bold;
+ color: #8250df;
+}
+
+.markdown-body .pl-ba {
+ color: #57606a;
+}
+
+.markdown-body .pl-sg {
+ color: #8c959f;
+}
+
+.markdown-body .pl-corl {
+ text-decoration: underline;
+ color: #0a3069;
+}
+
+.markdown-body g-emoji {
+ display: inline-block;
+ min-width: 1ch;
+ font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
+ font-size: 1em;
+ font-style: normal !important;
+ font-weight: 400;
+ line-height: 1;
+ vertical-align: -0.075em;
+}
+
+.markdown-body g-emoji img {
+ width: 1em;
+ height: 1em;
+}
+
+.markdown-body .task-list-item {
+ list-style-type: none;
+}
+
+.markdown-body .task-list-item label {
+ font-weight: 400;
+}
+
+.markdown-body .task-list-item.enabled label {
+ cursor: pointer;
+}
+
+.markdown-body .task-list-item + .task-list-item {
+ margin-top: 4px;
+}
+
+.markdown-body .task-list-item .handle {
+ display: none;
+}
+
+.markdown-body .task-list-item-checkbox {
+ margin: 0 0.2em 0.25em -1.4em;
+ vertical-align: middle;
+}
+
+.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {
+ margin: 0 -1.6em 0.25em 0.2em;
+}
+
+.markdown-body .contains-task-list {
+ position: relative;
+}
+
+.markdown-body .contains-task-list:hover .task-list-item-convert-container,
+.markdown-body .contains-task-list:focus-within .task-list-item-convert-container {
+ display: block;
+ width: auto;
+ height: 24px;
+ overflow: visible;
+ clip: auto;
+}
+
+.markdown-body ::-webkit-calendar-picker-indicator {
+ filter: invert(50%);
+}
diff --git a/docs/svelte.config.js b/demo/svelte.config.js
similarity index 61%
rename from docs/svelte.config.js
rename to demo/svelte.config.js
index 3f812da..c3da9f2 100644
--- a/docs/svelte.config.js
+++ b/demo/svelte.config.js
@@ -1,15 +1,11 @@
-import mdsvexConfig from './mdsvex.config.js';
import adapter from '@sveltejs/adapter-static';
-import { mdsvex } from 'mdsvex';
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
+import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */
const config = {
- extensions: ['.svelte', ...mdsvexConfig.extensions],
-
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
- preprocess: [vitePreprocess(), mdsvex(mdsvexConfig)],
+ preprocess: vitePreprocess(),
kit: {
adapter: adapter({
diff --git a/docs/tsconfig.json b/demo/tsconfig.json
similarity index 100%
rename from docs/tsconfig.json
rename to demo/tsconfig.json
diff --git a/docs/vite.config.ts b/demo/vite.config.ts
similarity index 100%
rename from docs/vite.config.ts
rename to demo/vite.config.ts
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index ac7211b..0000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.DS_Store
-node_modules
-/build
-/dist
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-vite.config.js.timestamp-*
-vite.config.ts.timestamp-*
diff --git a/docs/components.json b/docs/components.json
deleted file mode 100644
index 849ec61..0000000
--- a/docs/components.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "$schema": "https://shadcn-svelte.com/schema.json",
- "style": "new-york",
- "tailwind": {
- "config": "tailwind.config.js",
- "css": "src/app.postcss",
- "baseColor": "neutral"
- },
- "aliases": {
- "components": "$lib/components",
- "utils": "$lib/utils"
- }
-}
diff --git a/docs/mdsvex.config.js b/docs/mdsvex.config.js
deleted file mode 100644
index 93d975b..0000000
--- a/docs/mdsvex.config.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import { defineMDSveXConfig as defineConfig } from 'mdsvex';
-import rehypeSlug from 'rehype-slug';
-import rehypeAutolinkHeadings from 'rehype-autolink-headings';
-
-const config = defineConfig({
- extensions: ['.svelte.md', '.md', '.svx'],
-
- smartypants: {
- dashes: 'oldschool'
- },
-
- remarkPlugins: [],
- rehypePlugins: [rehypeSlug, [rehypeAutolinkHeadings, { behavior: 'wrap' }]]
-});
-
-export default config;
diff --git a/docs/postcss.config.cjs b/docs/postcss.config.cjs
deleted file mode 100644
index 4eb987c..0000000
--- a/docs/postcss.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-const tailwindcss = require('tailwindcss');
-const autoprefixer = require('autoprefixer');
-
-const config = {
- plugins: [tailwindcss(), autoprefixer]
-};
-
-module.exports = config;
diff --git a/docs/src/app.html b/docs/src/app.html
deleted file mode 100644
index e9a46db..0000000
--- a/docs/src/app.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
- %sveltekit.head%
-
-
-
-
-
-
-
-
-
- %sveltekit.body%
-
-
diff --git a/docs/src/app.postcss b/docs/src/app.postcss
deleted file mode 100644
index 5c9e7a3..0000000
--- a/docs/src/app.postcss
+++ /dev/null
@@ -1,84 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 0 0% 3.9%;
-
- --muted: 0 0% 96.1%;
- --muted-foreground: 0 0% 45.1%;
-
- --popover: 0 0% 100%;
- --popover-foreground: 0 0% 3.9%;
-
- --card: 0 0% 100%;
- --card-foreground: 0 0% 3.9%;
-
- --border: 0 0% 89.8%;
- --input: 0 0% 89.8%;
-
- --primary: 0 0% 9%;
- --primary-foreground: 0 0% 98%;
-
- --secondary: 0 0% 96.1%;
- --secondary-foreground: 0 0% 9%;
-
- --accent: 0 0% 96.1%;
- --accent-foreground: 0 0% 9%;
-
- --destructive: 0 84.2% 60.2%;
- --destructive-foreground: 0 0% 98%;
-
- --ring: 0 0% 3.9%;
-
- --radius: 0.5rem;
-
- font-family: 'Inter', sans-serif;
- }
-
- .dark {
- --background: 0 0% 3.9%;
- --foreground: 0 0% 98%;
-
- --muted: 0 0% 14.9%;
- --muted-foreground: 0 0% 63.9%;
-
- --popover: 0 0% 3.9%;
- --popover-foreground: 0 0% 98%;
-
- --card: 0 0% 3.9%;
- --card-foreground: 0 0% 98%;
-
- --border: 0 0% 14.9%;
- --input: 0 0% 14.9%;
-
- --primary: 0 0% 98%;
- --primary-foreground: 0 0% 9%;
-
- --secondary: 0 0% 14.9%;
- --secondary-foreground: 0 0% 98%;
-
- --accent: 0 0% 14.9%;
- --accent-foreground: 0 0% 98%;
-
- --destructive: 0 62.8% 30.6%;
- --destructive-foreground: 0 0% 98%;
-
- --ring: 0 0% 83.1%;
- }
-}
-
-@layer base {
- * {
- @apply border-border;
- }
- body {
- @apply bg-background text-foreground;
- }
-}
-
-nav div[data-portal] {
- display: none;
-}
diff --git a/docs/src/lib/components/code/Code.svelte b/docs/src/lib/components/code/Code.svelte
deleted file mode 100644
index 8be7d1f..0000000
--- a/docs/src/lib/components/code/Code.svelte
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
- {
- navigator.clipboard.writeText(elem.innerText);
- }}
- class="
- absolute right-4 top-[min(50%_,_32px)] aspect-square -translate-y-1/2 transform
- rounded hover:bg-neutral-800 hover:text-neutral-300 active:text-sky-300
- "
- >
-
-
-
diff --git a/docs/src/lib/components/footer/Footer.svelte b/docs/src/lib/components/footer/Footer.svelte
deleted file mode 100644
index c1725e0..0000000
--- a/docs/src/lib/components/footer/Footer.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/docs/src/lib/components/header-tracker/HeaderTracker.svelte b/docs/src/lib/components/header-tracker/HeaderTracker.svelte
deleted file mode 100644
index d584c97..0000000
--- a/docs/src/lib/components/header-tracker/HeaderTracker.svelte
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
- {
- throttledHighlightHeader();
- debouncedHighlightHeader(); // So it is called at the end of the scroll event
- }}
-/>
-
-
- {#each headers as header, i}
- {@const margin = Number(header.tagName.split('')[1]) - 1}
- {#key selectedHeaderIndex}
- {#if header.children[0] instanceof HTMLAnchorElement && header.children[0].href}
-
- {/if}
- {/key}
- {/each}
-
diff --git a/docs/src/lib/components/link/Link.svelte b/docs/src/lib/components/link/Link.svelte
deleted file mode 100644
index 5090779..0000000
--- a/docs/src/lib/components/link/Link.svelte
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/link/PluginLink.svelte b/docs/src/lib/components/link/PluginLink.svelte
deleted file mode 100644
index 8318e91..0000000
--- a/docs/src/lib/components/link/PluginLink.svelte
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/mobile-sidebar/MobileSidebar.svelte b/docs/src/lib/components/mobile-sidebar/MobileSidebar.svelte
deleted file mode 100644
index 1ebb918..0000000
--- a/docs/src/lib/components/mobile-sidebar/MobileSidebar.svelte
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
- (enabled = !enabled)} class="text-neutral-500 hover:text-neutral-200">
-
-
-
-
-{#if enabled}
-
-
-
-
- (enabled = false)}
- class="absolute right-4 top-4 text-neutral-500 hover:text-neutral-200"
- >
-
-
-
-{/if}
diff --git a/docs/src/lib/components/navbar/GitHub.svelte b/docs/src/lib/components/navbar/GitHub.svelte
deleted file mode 100644
index 226d95d..0000000
--- a/docs/src/lib/components/navbar/GitHub.svelte
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
BearToCode/carta
- {#if loading}
-
- {:else}
-
-
- {stars}
-
- {/if}
-
-
diff --git a/docs/src/lib/components/navbar/Navbar.svelte b/docs/src/lib/components/navbar/Navbar.svelte
deleted file mode 100644
index 8923502..0000000
--- a/docs/src/lib/components/navbar/Navbar.svelte
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/lib/components/navbar/Search.svelte b/docs/src/lib/components/navbar/Search.svelte
deleted file mode 100644
index 93c9390..0000000
--- a/docs/src/lib/components/navbar/Search.svelte
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
- (open = !open)} class="mr-2 block aspect-square md:hidden">
-
-
-
- (open = !open)}
->
-
-
- Search...
-
-
- โ K
-
-
-
-
-
-
- {#if value}
- No results found.
-
- {#each results as result}
- {
- if (result.match?.heading) goto(`${base}/${result.path}#${result.match.heading.id}`);
- else goto(`${base}/${result.path}`);
- open = false;
- }}
- class="group"
- value={result.title}
- >
-
- {result.title}
-
- {#if result.match?.heading}
- - {result.match.heading.text}
- {/if}
-
-
- {#if result.match}
- {result.match.text}
- {/if}
-
-
-
-
-
- {/each}
-
- {/if}
-
-
diff --git a/docs/src/lib/components/sidebar/Sidebar.svelte b/docs/src/lib/components/sidebar/Sidebar.svelte
deleted file mode 100644
index cb82c46..0000000
--- a/docs/src/lib/components/sidebar/Sidebar.svelte
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
Overview
-
-
-
-
- Introduction
-
-
-
-
-
- Examples
-
-
-
-
-
- Getting Started
-
-
-
-
-
- Editing Styles
-
-
-
-
-
- Migration
-
-
-
-
-
- Community Plugins
-
-
-
-
-
- Using Components
-
-
- Plugins
-
-
-
-
- Math
-
-
-
-
-
- Code
-
-
-
-
-
- Emoji
-
-
-
-
-
- Slash
-
-
-
-
-
- TikZ
-
-
-
-
-
- Attachment
-
-
-
-
-
- Anchor
-
-
- API
-
-
-
- Utilities
-
-
-
-
- Core
-
-
-
-
- Extension
-
-
diff --git a/docs/src/lib/components/sidebar/SidebarLink.svelte b/docs/src/lib/components/sidebar/SidebarLink.svelte
deleted file mode 100644
index 69762d7..0000000
--- a/docs/src/lib/components/sidebar/SidebarLink.svelte
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
diff --git a/docs/src/lib/components/ui/card/card-content.svelte b/docs/src/lib/components/ui/card/card-content.svelte
deleted file mode 100644
index c87d58a..0000000
--- a/docs/src/lib/components/ui/card/card-content.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/card-description.svelte b/docs/src/lib/components/ui/card/card-description.svelte
deleted file mode 100644
index 243e439..0000000
--- a/docs/src/lib/components/ui/card/card-description.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/card-footer.svelte b/docs/src/lib/components/ui/card/card-footer.svelte
deleted file mode 100644
index 414ded9..0000000
--- a/docs/src/lib/components/ui/card/card-footer.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/card-header.svelte b/docs/src/lib/components/ui/card/card-header.svelte
deleted file mode 100644
index 8079df3..0000000
--- a/docs/src/lib/components/ui/card/card-header.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/card-title.svelte b/docs/src/lib/components/ui/card/card-title.svelte
deleted file mode 100644
index d0d98c0..0000000
--- a/docs/src/lib/components/ui/card/card-title.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/card.svelte b/docs/src/lib/components/ui/card/card.svelte
deleted file mode 100644
index d1fd1dc..0000000
--- a/docs/src/lib/components/ui/card/card.svelte
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/card/index.ts b/docs/src/lib/components/ui/card/index.ts
deleted file mode 100644
index 86c5408..0000000
--- a/docs/src/lib/components/ui/card/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import Root from './card.svelte';
-import Content from './card-content.svelte';
-import Description from './card-description.svelte';
-import Footer from './card-footer.svelte';
-import Header from './card-header.svelte';
-import Title from './card-title.svelte';
-
-export {
- Root,
- Content,
- Description,
- Footer,
- Header,
- Title,
- //
- Root as Card,
- Content as CardContent,
- Description as CardDescription,
- Footer as CardFooter,
- Header as CardHeader,
- Title as CardTitle
-};
-
-export type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
diff --git a/docs/src/lib/components/ui/command/command-dialog.svelte b/docs/src/lib/components/ui/command/command-dialog.svelte
deleted file mode 100644
index 634b2b2..0000000
--- a/docs/src/lib/components/ui/command/command-dialog.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-empty.svelte b/docs/src/lib/components/ui/command/command-empty.svelte
deleted file mode 100644
index 1e0b7b7..0000000
--- a/docs/src/lib/components/ui/command/command-empty.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-group.svelte b/docs/src/lib/components/ui/command/command-group.svelte
deleted file mode 100644
index ff2e2c8..0000000
--- a/docs/src/lib/components/ui/command/command-group.svelte
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-input.svelte b/docs/src/lib/components/ui/command/command-input.svelte
deleted file mode 100644
index 8a59e0f..0000000
--- a/docs/src/lib/components/ui/command/command-input.svelte
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-item.svelte b/docs/src/lib/components/ui/command/command-item.svelte
deleted file mode 100644
index 843eff9..0000000
--- a/docs/src/lib/components/ui/command/command-item.svelte
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-list.svelte b/docs/src/lib/components/ui/command/command-list.svelte
deleted file mode 100644
index fc40d07..0000000
--- a/docs/src/lib/components/ui/command/command-list.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-separator.svelte b/docs/src/lib/components/ui/command/command-separator.svelte
deleted file mode 100644
index f13ac8b..0000000
--- a/docs/src/lib/components/ui/command/command-separator.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/docs/src/lib/components/ui/command/command-shortcut.svelte b/docs/src/lib/components/ui/command/command-shortcut.svelte
deleted file mode 100644
index ec0b3ee..0000000
--- a/docs/src/lib/components/ui/command/command-shortcut.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/command.svelte b/docs/src/lib/components/ui/command/command.svelte
deleted file mode 100644
index 2c59ff3..0000000
--- a/docs/src/lib/components/ui/command/command.svelte
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/command/index.ts b/docs/src/lib/components/ui/command/index.ts
deleted file mode 100644
index 03922d5..0000000
--- a/docs/src/lib/components/ui/command/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { Command as CommandPrimitive } from 'cmdk-sv';
-
-import Root from './command.svelte';
-import Dialog from './command-dialog.svelte';
-import Empty from './command-empty.svelte';
-import Group from './command-group.svelte';
-import Item from './command-item.svelte';
-import Input from './command-input.svelte';
-import List from './command-list.svelte';
-import Separator from './command-separator.svelte';
-import Shortcut from './command-shortcut.svelte';
-
-const Loading = CommandPrimitive.Loading;
-
-export {
- Root,
- Dialog,
- Empty,
- Group,
- Item,
- Input,
- List,
- Separator,
- Shortcut,
- Loading,
- //
- Root as Command,
- Dialog as CommandDialog,
- Empty as CommandEmpty,
- Group as CommandGroup,
- Item as CommandItem,
- Input as CommandInput,
- List as CommandList,
- Separator as CommandSeparator,
- Shortcut as CommandShortcut,
- Loading as CommandLoading
-};
diff --git a/docs/src/lib/components/ui/dialog/dialog-content.svelte b/docs/src/lib/components/ui/dialog/dialog-content.svelte
deleted file mode 100644
index 91af447..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-content.svelte
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
- Close
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-description.svelte b/docs/src/lib/components/ui/dialog/dialog-description.svelte
deleted file mode 100644
index de3d9ee..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-description.svelte
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-footer.svelte b/docs/src/lib/components/ui/dialog/dialog-footer.svelte
deleted file mode 100644
index da4f517..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-footer.svelte
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-header.svelte b/docs/src/lib/components/ui/dialog/dialog-header.svelte
deleted file mode 100644
index e4b3608..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-header.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-overlay.svelte b/docs/src/lib/components/ui/dialog/dialog-overlay.svelte
deleted file mode 100644
index 4461f90..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-overlay.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-portal.svelte b/docs/src/lib/components/ui/dialog/dialog-portal.svelte
deleted file mode 100644
index 6707ba7..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-portal.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/dialog-title.svelte b/docs/src/lib/components/ui/dialog/dialog-title.svelte
deleted file mode 100644
index c133166..0000000
--- a/docs/src/lib/components/ui/dialog/dialog-title.svelte
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/lib/components/ui/dialog/index.ts b/docs/src/lib/components/ui/dialog/index.ts
deleted file mode 100644
index 2a1a048..0000000
--- a/docs/src/lib/components/ui/dialog/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Dialog as DialogPrimitive } from 'bits-ui';
-
-const Root = DialogPrimitive.Root;
-const Trigger = DialogPrimitive.Trigger;
-
-import Title from './dialog-title.svelte';
-import Portal from './dialog-portal.svelte';
-import Footer from './dialog-footer.svelte';
-import Header from './dialog-header.svelte';
-import Overlay from './dialog-overlay.svelte';
-import Content from './dialog-content.svelte';
-import Description from './dialog-description.svelte';
-
-export {
- Root,
- Title,
- Portal,
- Footer,
- Header,
- Trigger,
- Overlay,
- Content,
- Description,
- //
- Root as Dialog,
- Title as DialogTitle,
- Portal as DialogPortal,
- Footer as DialogFooter,
- Header as DialogHeader,
- Trigger as DialogTrigger,
- Overlay as DialogOverlay,
- Content as DialogContent,
- Description as DialogDescription
-};
diff --git a/docs/src/lib/examples/DiscordExample.svelte b/docs/src/lib/examples/DiscordExample.svelte
deleted file mode 100644
index bfc048a..0000000
--- a/docs/src/lib/examples/DiscordExample.svelte
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/docs/src/lib/examples/GitHubExample.svelte b/docs/src/lib/examples/GitHubExample.svelte
deleted file mode 100644
index 5de31c6..0000000
--- a/docs/src/lib/examples/GitHubExample.svelte
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
diff --git a/docs/src/lib/examples/MathStackExchangeExample.svelte b/docs/src/lib/examples/MathStackExchangeExample.svelte
deleted file mode 100644
index c6057b1..0000000
--- a/docs/src/lib/examples/MathStackExchangeExample.svelte
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
- {#key value}
-
- {/key}
-
diff --git a/docs/src/lib/examples/assets/PlusIcon.svelte b/docs/src/lib/examples/assets/PlusIcon.svelte
deleted file mode 100644
index aaa4ef9..0000000
--- a/docs/src/lib/examples/assets/PlusIcon.svelte
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/docs/src/lib/examples/math-stack-exchange-placeholder.tex b/docs/src/lib/examples/math-stack-exchange-placeholder.tex
deleted file mode 100644
index c63338d..0000000
--- a/docs/src/lib/examples/math-stack-exchange-placeholder.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-> Here is a formula:
-
-$$
-\dfrac{\partial}{\partial t}(
- \dfrac{\partial \mathcal{L}}{\partial \dot{q}_k}
-) - \dfrac{\partial \mathcal{L}}{\partial q_k} = 0
-$$
-
-> And here is a circuit:
-
-```tikz
-\usepackage{circuitikz}
-
-\begin{document}
- \begin{circuitikz} \draw
- (0,0) to[battery] (0,4)
- to[ammeter] (4,4) -- (4,0)
- to[lamp] (0,0)
- ;
- \end{circuitikz}
-\end{document}
-```
-
diff --git a/docs/src/lib/search/index.ts b/docs/src/lib/search/index.ts
deleted file mode 100644
index 7a1623f..0000000
--- a/docs/src/lib/search/index.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-import flexsearch from 'flexsearch';
-import type { SvelteComponent } from 'svelte';
-
-export interface SearchResult {
- path: string;
- content: string;
- html: string;
- title: string;
-}
-
-export type EnrichedSearchResult = SearchResult & {
- match?: {
- heading?: {
- text: string;
- id: string;
- };
- text: string;
- };
-};
-
-export async function initializeSearch() {
- const indexedPages = new flexsearch.Document({
- tokenize: 'full',
- cache: true,
- context: true,
- document: {
- id: 'path',
- index: ['title', 'content'],
- store: true
- }
- });
-
- const pages = import.meta.glob('../../pages/**/*.svelte.md');
- await Promise.all(
- Object.keys(pages).map(async (page) => {
- const module = (await pages[page]()) as {
- default: typeof SvelteComponent;
- metadata: Record;
- };
- const elem = document.createElement('div');
- new module.default({ target: elem });
-
- const path = page.replace('../../pages/', '').replace('.svelte.md', '');
- const title = module.metadata.title as string;
- const html = elem.innerHTML;
- const content = extractText(module.default);
-
- indexedPages.add({
- path,
- html,
- title,
- content
- });
- })
- );
- return indexedPages;
-}
-
-function extractText(component: typeof SvelteComponent) {
- const parentElem = document.createElement('div');
- new component({ target: parentElem });
-
- const text = parentElem.textContent ?? '';
- // Remove extra spaces
- return text.replace(/\s+/g, ' ').trim();
-}
-
-export function enrichResult(result: SearchResult, query: string): EnrichedSearchResult {
- let heading: HTMLHeadingElement | null = null;
-
- const parentElem = document.createElement('div');
- parentElem.innerHTML = result.html;
-
- for (const node of parentElem.childNodes) {
- const content = node.textContent?.replaceAll('\n', '').replace(/\s+/g, ' ').trim() ?? '';
- if (['h1', 'h2', 'h3'].includes(node.nodeName.toLowerCase())) {
- heading = node as HTMLHeadingElement;
- }
- if (content?.toLowerCase().includes(query.toLowerCase())) {
- return {
- ...result,
- match: {
- heading: heading
- ? {
- text: heading.textContent ?? '',
- id: heading.id
- }
- : undefined,
- text: content
- }
- };
- }
- }
-
- return result;
-}
diff --git a/docs/src/lib/styles/coldark.scss b/docs/src/lib/styles/coldark.scss
deleted file mode 100644
index f6f6833..0000000
--- a/docs/src/lib/styles/coldark.scss
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- * Coldark Theme for Prism.js
- * Theme variation: Dark
- * Tested with HTML, CSS, JS, JSON, PHP, YAML, Bash script
- * @author Armand Philippot
- * @homepage https://github.com/ArmandPhilippot/coldark-prism
- * @license MIT
- */
-code[class*='language-'],
-pre[class*='language-'] {
- color: #e3eaf2;
- background: none;
- font-family: 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-pre[class*='language-']::-moz-selection,
-pre[class*='language-'] ::-moz-selection,
-code[class*='language-']::-moz-selection,
-code[class*='language-'] ::-moz-selection {
- background: #3c526d;
-}
-
-pre[class*='language-']::selection,
-pre[class*='language-'] ::selection,
-code[class*='language-']::selection,
-code[class*='language-'] ::selection {
- background: #3c526d;
-}
-
-/* Code blocks */
-pre[class*='language-'] {
- padding: 1em;
- margin: 0.5em 0;
- overflow: auto;
-}
-
-:not(pre) > code[class*='language-'],
-pre[class*='language-'] {
- @apply rounded-md border border-neutral-800 bg-neutral-950 bg-opacity-50;
-}
-
-/* Inline code */
-:not(pre) > code[class*='language-'] {
- padding: 0.1em 0.3em;
- border-radius: 0.3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: #8da1b9;
-}
-
-.token.punctuation {
- color: #e3eaf2;
-}
-
-.token.delimiter.important,
-.token.selector .parent,
-.token.tag,
-.token.tag .token.punctuation {
- color: #66cccc;
-}
-
-.token.attr-name,
-.token.boolean,
-.token.boolean.important,
-.token.number,
-.token.constant,
-.token.selector .token.attribute {
- color: #e6d37a;
-}
-
-.token.class-name,
-.token.key,
-.token.parameter,
-.token.property,
-.token.property-access,
-.token.variable {
- color: #6cb8e6;
-}
-
-.token.attr-value,
-.token.inserted,
-.token.color,
-.token.selector .token.value,
-.token.string,
-.token.string .token.url-link {
- color: #91d076;
-}
-
-.token.builtin,
-.token.keyword-array,
-.token.package,
-.token.regex {
- color: #f4adf4;
-}
-
-.token.function,
-.token.selector .token.class,
-.token.selector .token.id {
- color: #c699e3;
-}
-
-.token.atrule .token.rule,
-.token.combinator,
-.token.keyword,
-.token.operator,
-.token.pseudo-class,
-.token.pseudo-element,
-.token.selector,
-.token.unit {
- color: #e9ae7e;
-}
-
-.token.deleted,
-.token.important {
- color: #cd6660;
-}
-
-.token.keyword-this,
-.token.this {
- color: #6cb8e6;
-}
-
-.token.important,
-.token.keyword-this,
-.token.this,
-.token.bold {
- font-weight: bold;
-}
-
-.token.delimiter.important {
- font-weight: inherit;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
-
-.language-markdown .token.title,
-.language-markdown .token.title .token.punctuation {
- color: #6cb8e6;
- font-weight: bold;
-}
-
-.language-markdown .token.blockquote.punctuation {
- color: #f4adf4;
-}
-
-.language-markdown .token.code {
- color: #66cccc;
-}
-
-.language-markdown .token.hr.punctuation {
- color: #6cb8e6;
-}
-
-.language-markdown .token.url .token.content {
- color: #91d076;
-}
-
-.language-markdown .token.url-link {
- color: #e6d37a;
-}
-
-.language-markdown .token.list.punctuation {
- color: #f4adf4;
-}
-
-.language-markdown .token.table-header {
- color: #e3eaf2;
-}
-
-.language-json .token.operator {
- color: #e3eaf2;
-}
-
-.language-scss .token.variable {
- color: #66cccc;
-}
-
-/* overrides color-values for the Show Invisibles plugin
- * https://prismjs.com/plugins/show-invisibles/
- */
-.token.token.tab:not(:empty):before,
-.token.token.cr:before,
-.token.token.lf:before,
-.token.token.space:before {
- color: #8da1b9;
-}
-
-/* overrides color-values for the Toolbar plugin
- * https://prismjs.com/plugins/toolbar/
- */
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > button {
- color: #111b27;
- background: #6cb8e6;
-}
-
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus {
- color: #111b27;
- background: #6cb8e6da;
- text-decoration: none;
-}
-
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > span,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,
-div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus {
- color: #111b27;
- background: #8da1b9;
-}
-
-/* overrides color-values for the Line Highlight plugin
- * http://prismjs.com/plugins/line-highlight/
- */
-.line-highlight.line-highlight {
- background: #3c526d5f;
- background: linear-gradient(to right, #3c526d5f 70%, #3c526d55);
-}
-
-.line-highlight.line-highlight:before,
-.line-highlight.line-highlight[data-end]:after {
- background-color: #8da1b9;
- color: #111b27;
- box-shadow: 0 1px #3c526d;
-}
-
-pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before {
- background-color: #8da1b918;
-}
-
-/* overrides color-values for the Line Numbers plugin
- * http://prismjs.com/plugins/line-numbers/
- */
-.line-numbers.line-numbers .line-numbers-rows {
- border-right: 1px solid #0b121b;
- background: #0b121b7a;
-}
-
-.line-numbers .line-numbers-rows > span:before {
- color: #8da1b9da;
-}
-
-/* overrides color-values for the Match Braces plugin
- * https://prismjs.com/plugins/match-braces/
- */
-.rainbow-braces .token.token.punctuation.brace-level-1,
-.rainbow-braces .token.token.punctuation.brace-level-5,
-.rainbow-braces .token.token.punctuation.brace-level-9 {
- color: #e6d37a;
-}
-
-.rainbow-braces .token.token.punctuation.brace-level-2,
-.rainbow-braces .token.token.punctuation.brace-level-6,
-.rainbow-braces .token.token.punctuation.brace-level-10 {
- color: #f4adf4;
-}
-
-.rainbow-braces .token.token.punctuation.brace-level-3,
-.rainbow-braces .token.token.punctuation.brace-level-7,
-.rainbow-braces .token.token.punctuation.brace-level-11 {
- color: #6cb8e6;
-}
-
-.rainbow-braces .token.token.punctuation.brace-level-4,
-.rainbow-braces .token.token.punctuation.brace-level-8,
-.rainbow-braces .token.token.punctuation.brace-level-12 {
- color: #c699e3;
-}
-
-/* overrides color-values for the Diff Highlight plugin
- * https://prismjs.com/plugins/diff-highlight/
- */
-pre.diff-highlight > code .token.token.deleted:not(.prefix),
-pre > code.diff-highlight .token.token.deleted:not(.prefix) {
- background-color: #cd66601f;
-}
-
-pre.diff-highlight > code .token.token.inserted:not(.prefix),
-pre > code.diff-highlight .token.token.inserted:not(.prefix) {
- background-color: #91d0761f;
-}
-
-/* overrides color-values for the Command Line plugin
- * https://prismjs.com/plugins/command-line/
- */
-.command-line .command-line-prompt {
- border-right: 1px solid #0b121b;
-}
-
-.command-line .command-line-prompt > span:before {
- color: #8da1b9da;
-}
diff --git a/docs/src/lib/styles/discord.scss b/docs/src/lib/styles/discord.scss
deleted file mode 100644
index 60d8d3b..0000000
--- a/docs/src/lib/styles/discord.scss
+++ /dev/null
@@ -1,83 +0,0 @@
-.carta-theme__discord {
- // Core styles
- $background: #2f3136;
- $background-light: #161b22;
- $background-contrast: #46484b;
-
- &.carta-editor {
- background-color: $background;
- border-radius: 0.5rem;
-
- ::placeholder {
- opacity: 0.5;
- }
-
- .carta-wrapper {
- padding: 1rem;
- padding-left: 56px;
- flex-grow: 1;
- overflow-y: auto;
-
- .carta-container {
- min-height: 32px;
- max-height: 400px;
- }
- }
-
- .carta-font-code {
- font-family: 'Fira Code', monospace;
- caret-color: white;
- font-size: 1.1rem;
- }
-
- .carta-toolbar {
- display: none;
- }
-
- .discord-plus-icon {
- position: absolute;
- top: 15px;
- left: -24px;
- width: 1.75rem;
- height: 1.75rem;
- transform: translateX(-50%) translateY(-50%);
- }
- }
-
- // Plugin emoji
- &.carta-emoji {
- width: 18rem;
- max-height: 14rem;
- overflow-y: scroll;
- border-radius: 4px;
- font-family: inherit;
- background-color: $background;
- padding: 6px;
- scroll-padding: 6px;
- gap: 6px;
- }
-
- &.carta-emoji button {
- background: $background-light;
-
- aspect-ratio: 1;
- border-radius: 4px;
- border: 0;
- padding: 0;
-
- cursor: pointer;
-
- font-size: 1.2rem;
- line-height: 100%;
- }
-
- &.carta-emoji button:hover,
- &.carta-emoji button.carta-active {
- background: $background-contrast;
- }
-}
-
-html.dark .shiki,
-html.dark .shiki span {
- color: var(--shiki-dark) !important;
-}
diff --git a/docs/src/lib/styles/github.scss b/docs/src/lib/styles/github.scss
deleted file mode 100644
index 7d2b961..0000000
--- a/docs/src/lib/styles/github.scss
+++ /dev/null
@@ -1,203 +0,0 @@
-.carta-theme__github {
- // Core styles
- $background: #0d1117;
- $background-light: #161b22;
- $border: #2b3138;
- $accent: #1f6feb;
-
- &.carta-editor {
- background-color: $background;
- border: 1px solid $border;
- border-radius: 0.5rem;
-
- &:focus-within {
- outline: 2px solid $accent;
- }
-
- .carta-wrapper {
- padding: 1rem;
- flex-grow: 1;
- overflow-y: auto;
-
- .carta-container {
- min-height: 120px;
- max-height: 160px;
- }
- }
-
- .carta-font-code {
- font-family: 'Fira Code', monospace;
- caret-color: white;
- font-size: 1.1rem;
- }
-
- .carta-toolbar {
- height: 2.5rem;
-
- background-color: $background-light;
-
- border-top-left-radius: 0.5rem;
- border-top-right-radius: 0.5rem;
-
- .carta-icon {
- width: 2rem;
- height: 2rem;
-
- &:hover {
- color: white;
- background-color: $border;
- }
- }
- }
-
- .carta-toolbar-left button,
- .carta-toolbar-right,
- .carta-filler {
- border-bottom: 1px solid $border;
- }
-
- .carta-toolbar-left {
- & > *:first-child {
- border-top-left-radius: 0.5rem;
- }
-
- & > * {
- padding-left: 1rem;
- padding-right: 1rem;
- font-size: 0.95rem;
- }
-
- button {
- height: 100%;
- }
-
- .carta-active {
- background-color: $background;
- color: white;
-
- border-right: 1px solid $border;
- border-bottom: 1px solid $background;
-
- &:not(:first-child) {
- border-left: 1px solid $border;
- }
- }
- }
-
- .carta-toolbar-right {
- padding-right: 12px;
- }
-
- .carta-icons-menu {
- padding: 8px;
- border: 1px solid $border;
- border-radius: 6px;
- min-width: 180px;
- background: $background;
-
- .carta-icon-full {
- padding-left: 6px;
- padding-right: 6px;
-
- margin-top: 2px;
- &:first-child {
- margin-top: 0;
- }
-
- &:hover {
- color: white;
- background-color: $border;
- }
-
- span {
- margin-left: 6px;
- color: white;
- font-size: 0.85rem;
- }
- }
- }
- }
-
- // Plugin emoji
- &.carta-emoji {
- width: 18rem;
- max-height: 14rem;
- overflow-y: scroll;
- border-radius: 4px;
- font-family: inherit;
- background-color: $background;
- padding: 6px;
- scroll-padding: 6px;
- gap: 6px;
- }
-
- &.carta-emoji button {
- background: $background-light;
-
- aspect-ratio: 1;
- border-radius: 4px;
- border: 0;
- padding: 0;
-
- cursor: pointer;
-
- font-size: 1.2rem;
- line-height: 100%;
- }
-
- &.carta-emoji button:hover,
- &.carta-emoji button.carta-active {
- background: $border;
- }
-
- // Plugin slash
- &.carta-slash {
- width: 18rem;
- max-height: 14rem;
- overflow-y: scroll;
- border-radius: 4px;
- font-family: inherit;
- background-color: $background;
- padding: 6px;
- scroll-padding: 6px;
- }
-
- &.carta-slash span {
- width: fit-content;
- }
-
- &.carta-slash button {
- background: none;
- width: 100%;
- padding: 10px;
- border: 0;
- border-radius: 4px;
- }
-
- &.carta-slash .carta-slash-group {
- padding: 0 4px 0 4px;
- margin-bottom: 4px;
- font-size: 0.8rem;
- }
-
- &.carta-slash button.carta-active,
- &.carta-slash button:hover {
- background: $background-light;
- cursor: pointer;
- }
-
- &.carta-slash .carta-snippet-title {
- font-size: 0.85rem;
- font-weight: 600;
- }
-
- &.carta-slash .carta-snippet-description {
- font-size: 0.8rem;
- text-overflow: ellipsis;
- }
-}
-
-html.dark .shiki,
-html.dark .shiki span {
- color: var(--shiki-dark) !important;
-}
diff --git a/docs/src/lib/styles/markdown.scss b/docs/src/lib/styles/markdown.scss
deleted file mode 100644
index 61eb539..0000000
--- a/docs/src/lib/styles/markdown.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-.markdown {
- & {
- @apply text-[1.05rem] leading-7 text-neutral-400;
- }
-
- h1 {
- @apply mb-4 mt-8 text-4xl font-bold text-white first:mt-0;
- }
-
- h2 {
- @apply mb-4 mt-8 text-3xl font-semibold text-white first:mt-0;
- }
-
- h3 {
- @apply mb-3 mt-7 text-2xl font-medium text-white first:mt-0;
- }
-
- h4 {
- @apply mb-3 mt-3 text-lg font-medium text-white first:mt-0;
- }
-
- h1,
- h2,
- h3,
- h4 {
- @apply scroll-mt-16;
- }
-
- blockquote {
- @apply mb-3 text-lg italic text-neutral-300;
- }
-
- li {
- @apply ml-4 list-disc;
- }
-
- strong {
- @apply text-neutral-300;
- }
-
- a:not(h1 > a, h2 > a, h3 > a, h4 > a, .bg-card) {
- @apply text-sky-300 underline;
- }
-
- code {
- @apply rounded bg-neutral-800 px-1 text-neutral-50;
- }
-
- p,
- h1,
- h2,
- h3 {
- code {
- @apply px-1;
- }
- }
-
- .carta-editor code {
- font-family: 'Fira Code', monospace;
- background: transparent;
- padding: 0;
- }
-}
diff --git a/docs/src/lib/styles/math-stack-exchange.scss b/docs/src/lib/styles/math-stack-exchange.scss
deleted file mode 100644
index 1354a4e..0000000
--- a/docs/src/lib/styles/math-stack-exchange.scss
+++ /dev/null
@@ -1,108 +0,0 @@
-.math-stack-exchange-container {
- background-color: #252526;
- border-radius: 0.25rem;
-}
-
-.carta-theme__math-stack-exchange {
- // Core styles
- $background: #252526;
- $background-light: #333333;
- $border: #333333;
- $accent: #2e8acb;
-
- &.carta-editor {
- background-color: $background;
- border: 1px solid $border;
- border-radius: 0.25rem;
-
- .carta-wrapper {
- padding: 1rem;
- flex-grow: 1;
- overflow-y: auto;
- border-bottom-left-radius: 0.25rem;
- border-bottom-right-radius: 0.25rem;
-
- &:focus-within {
- outline: 3px solid rgba($accent, 0.5);
- }
-
- .carta-container {
- height: 200px;
- }
- }
-
- .carta-font-code {
- font-family: 'Fira Code', monospace;
- caret-color: white;
- font-size: 1.1rem;
- }
-
- .carta-toolbar {
- height: 2.5rem;
-
- background-color: $background-light;
- border-bottom: 1px solid $border;
-
- padding-right: 12px;
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
-
- .carta-icon {
- width: 2rem;
- height: 2rem;
-
- &:hover {
- color: white;
- background-color: $border;
- }
- }
- }
-
- .carta-toolbar-left {
- display: none;
- }
-
- .carta-toolbar-right {
- justify-content: flex-start;
- }
- }
-
- .carta-icons-menu {
- padding: 8px;
- border: 1px solid $border;
- border-radius: 6px;
- min-width: 180px;
- background: $background;
-
- .carta-icon-full {
- padding-left: 6px;
- padding-right: 6px;
-
- margin-top: 2px;
- &:first-child {
- margin-top: 0;
- }
-
- &:hover {
- color: white;
- background-color: $border;
- }
-
- span {
- margin-left: 6px;
- color: white;
- font-size: 0.85rem;
- }
- }
- }
-
- &.carta-viewer {
- min-height: 60px;
- padding: 1rem;
- }
-}
-
-html.dark .shiki,
-html.dark .shiki span {
- color: var(--shiki-dark) !important;
-}
diff --git a/docs/src/lib/utils.ts b/docs/src/lib/utils.ts
deleted file mode 100644
index d2b288e..0000000
--- a/docs/src/lib/utils.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import { type ClassValue, clsx } from 'clsx';
-import { twMerge } from 'tailwind-merge';
-import { cubicOut } from 'svelte/easing';
-import type { TransitionConfig } from 'svelte/transition';
-
-export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs));
-}
-
-type FlyAndScaleParams = {
- y?: number;
- x?: number;
- start?: number;
- duration?: number;
-};
-
-export const flyAndScale = (
- node: Element,
- params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 }
-): TransitionConfig => {
- const style = getComputedStyle(node);
- const transform = style.transform === 'none' ? '' : style.transform;
-
- const scaleConversion = (valueA: number, scaleA: [number, number], scaleB: [number, number]) => {
- const [minA, maxA] = scaleA;
- const [minB, maxB] = scaleB;
-
- const percentage = (valueA - minA) / (maxA - minA);
- const valueB = percentage * (maxB - minB) + minB;
-
- return valueB;
- };
-
- const styleToString = (style: Record): string => {
- return Object.keys(style).reduce((str, key) => {
- if (style[key] === undefined) return str;
- return str + `${key}:${style[key]};`;
- }, '');
- };
-
- return {
- duration: params.duration ?? 200,
- delay: 0,
- css: (t) => {
- const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]);
- const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]);
- const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]);
-
- return styleToString({
- transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`,
- opacity: t
- });
- },
- easing: cubicOut
- };
-};
-
-export const throttle = (
- fn: (...args: A) => R,
- delay: number
-): [(...args: A) => R | undefined, () => void] => {
- let wait = false;
- let timeout: undefined | number;
- let cancelled = false;
-
- return [
- (...args: A) => {
- if (cancelled) return undefined;
- if (wait) return undefined;
-
- const val = fn(...args);
-
- wait = true;
-
- timeout = window.setTimeout(() => {
- wait = false;
- }, delay);
-
- return val;
- },
- () => {
- cancelled = true;
- clearTimeout(timeout);
- }
- ];
-};
-
-export function debounce(cb: (...args: T) => unknown, wait = 1000) {
- let timeout: NodeJS.Timeout;
- return (...args: T) => {
- clearTimeout(timeout);
- timeout = setTimeout(() => cb(...args), wait);
- };
-}
diff --git a/docs/src/pages/api/core.svelte.md b/docs/src/pages/api/core.svelte.md
deleted file mode 100644
index 62163f9..0000000
--- a/docs/src/pages/api/core.svelte.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-section: API
-title: Core
----
-
-
-
-# `Carta` options
-
-List of options that can be used when creating `Carta`:
-
-```ts
-new Carta({
- /* ... */
-});
-```
-
-### `gfmOptions`
-
-Type: `GfmOptions`
-
-GitHub Flavored Markdown options.
-
-### `extensions`
-
-Type: `Extension[]`
-
-List of extensions(plugins) to use.
-
-### `rendererDebounce`
-
-Type: `number`
-
-Rendering debouncing timeout, in milliseconds.
-Defaults to 300ms.
-
-### `disableShortcuts`
-
-Type: `DefaultShortcutId[] | true`
-
-Remove default shortcuts by id. You can use `true` to disable all of them.
-
-### `disableIcons`
-
-Type: `DefaultIconId[] | true`
-
-Remove default icons by id. You can use `true` to disable all of them.
-
-### `disablePrefixes`
-
-Type: `DefaultPrefixId[] | true`
-
-Remove default prefixes by id. You can use `true` to disable all of them.
-
-### `historyOptions`
-
-History management options.
-
-#### `historyOptions.minInterval`
-
-Type: `number`
-
-Minimum interval between save states in milliseconds.
-Defaults to 300ms.
-
-#### `historyOptions.maxSize`
-
-Type: `number`
-
-Maximum history size in bytes.
-Defaults to 1MB.
-
-### `sanitizer`
-
-Type: `(html: string) => void`
-
-HTML sanitizer. See [here]({base}/getting-started#sanitization) for more details.
-
-### `shikiOptions`
-
-Type: `ShikiOptions`
-
-Highlighter(Shiki) options.
-
-### `theme`
-
-Type: `Theme | DualTheme`
-
-Shiki theme to use to highlight Markdown.
-
-# `MarkdownEditor` options
-
-List of options that can be used in the `` component.
-
-### `carta`
-
-Type: `Carta`
-
-Carta manager to use for this editor.
-
-### `theme`
-
-Type: `string`
-
-The theme of this editor. The editor and related elements will have the `carta-theme__` as a class.
-
-### `value`
-
-Type: `string`
-
-Current Markdown input value.
-
-### `mode`
-
-Type: `'tabs' | 'split' | 'auto'`
-
-Editor windows mode. With `auto` it will split when the window size is greater than 768px.
-
-### `scroll`
-
-Type: `'sync' | 'async'`
-
-Scroll synchronization.
-
-### `disableToolbar`
-
-Type: `boolean`
-
-Option to disable the toolbar.
-
-### `placeholder`
-
-Type: `string`
-
-Set the textarea placeholder.
-
-### `textarea`
-
-Type: `TextAreaProps` (extends `Record`)
-
-Additional properties that will be used in the textarea used under the hood in the editor.
-`class`, `placeholder` and `value` are not allowed. Use the corresponding editor properties
-instead.
-
-### `labels`
-
-Type: `Partial`
-
-Can be used to provide custom text for labels in the editor.
-
-# `Markdown` options
-
-List of options that can be used in the `` component.
-
-### `carta`
-
-Type: `Carta`
-
-Carta manager to use for this editor.
-
-### `theme`
-
-Type: `string`
-
-The theme of this editor. The viewer and related elements will have the `carta-theme__` as a class.
-
-### `value`
-
-Type: `string`
-
-Current Markdown input value.
diff --git a/docs/src/pages/api/extension.svelte.md b/docs/src/pages/api/extension.svelte.md
deleted file mode 100644
index f39da6a..0000000
--- a/docs/src/pages/api/extension.svelte.md
+++ /dev/null
@@ -1,263 +0,0 @@
----
-section: API
-title: Extension
----
-
-
-
-# `Plugin` properties
-
-You can easily extend Carta by creating custom plugins.
-
-
-
-```ts
-const ext: Plugin = {
- // ...
-};
-
-const carta = new Carta({
- extensions: [ext]
-});
-```
-
-
-
-Here are all the `Plugin` properties:
-
-### `transformers`
-
-Type: `UnifiedTransformer`
-
-Remark or Rehype transformers.
-
-#### `UnifiedTransformer.execution`
-
-Type: `'sync' | 'async'`
-
-If you specify async, this transformer won't be available for SSR.
-
-#### `UnifiedTransformer.type`
-
-Type: `'remark' | 'rehype'`
-
-This determines at which step the transformer will operate, whether on Remark, on a Markdown-based syntax tree, or Rehype, on a HTML-based one.
-
-#### `UnifiedTransformer.transform`
-
-Type: `({ processor, carta }) => void`
-
-The actual processor, can be async if the execution is specified as such.
-
-
-
-```ts
-{
- execution: 'sync',
- type: 'rehype',
- transform({ processor }) {
- processor
- .use(rehypeSlug)
- .use(rehypeAutolinkHeadings);
- }
-}
-```
-
-
-
-### `shortcuts`
-
-Type: `KeyboardShortcut[]`
-
-Additional keyboards shortcut. For example:
-
-
-
-```ts
-const shortcut: KeyboardShortcut = {
- id: 'bold',
- combination: new Set(['control', 'b']),
- action: (input) => input.toggleSelectionSurrounding('**')
-};
-```
-
-
-
-#### `KeyboardShortcut.id`
-
-Type: `string`
-
-Id of the shortcut.
-
-#### `KeyboardShortcut.combination`
-
-Type: `Set`
-
-Set of keys, corresponding to the `e.key` of `KeyboardEvent`s, but lowercase.
-
-#### `KeyboardShortcut.action`
-
-Type: `(input: InputEnhancer) => void`
-
-Shortcut callback.
-
-#### `KeyboardShortcut.preventSave`
-
-Prevent saving the current state in history.
-
-### `icons`
-
-Type: `Icon[]`
-
-Additional toolbar icons. For example:
-
-
-
-```ts
-const icon: Icon = {
- id: 'heading',
- action: (input) => input.toggleLinePrefix('###'),
- component: HeadingIcon
-};
-```
-
-
-
-#### `Icon.id`
-
-Type: `string`
-
-Id of the icon.
-
-#### `Icon.action`
-
-Type: `(input: InputEnhancer) => void`
-
-Click callback.
-
-#### `Icon.component`
-
-Type: `ComponentType` (SvelteComponent)
-
-The Icon as a Svelte component.
-
-### `prefixes`
-
-Type: `Prefix[]`
-
-Text prefixes, default ones include the `- ` for bulleted lists, `1. ` for numbered lists, `- [ ]` for task lists.
-
-
-
-```ts
-const prefix: Prefix = {
- id: 'bulletedList',
- match: (line) => {
- const prefix = line.slice(0, 2);
- if (prefix === '- ') return prefix;
- },
- maker: () => '- '
-};
-```
-
-
-
-#### `Prefix.id`
-
-Type: `string`
-
-Id of the prefix.
-
-#### `Prefix.match`
-
-Type: `(line: string) => string | undefined`
-
-Function that returns the prefix, if it is present.
-
-#### `Prefix.maker`
-
-Type: `(previousMatch: string, previousLine: string) => string`
-
-Function that returns the prefix for the new line.
-
-Example:
-
-
-
-```ts
-const prefix: Prefix = {
- id: 'numberedList',
- match: (line) => line.match(/^\d+\./)?.at(0),
- maker: (prev) => `${Number(prev.slice(0, -1)) + 1}. `
-};
-```
-
-
-
-### `listeners`
-
-Type: `Listener[]`
-
-Textarea event listeners. Has an additional `carta-render` and `carta-render-ssr` events keys.
-
-
-
-```ts
-const click: Listener = ['click', () => console.log('I was clicked!')];
-const render: Listener = [
- 'carta-render',
- (e) => {
- const carta = e.detail.carta;
- // ...
- },
- {
- once: true
- }
-];
-```
-
-
-
-### `components`
-
-Type: `ExtensionComponent[]`
-
-Additional components to be added to the editor or viewer.
-
-#### `ExtensionComponent.component`
-
-Type: `typeof SvelteComponentTyped`
-
-Svelte components that exports `carta: Carta` and all the other properties specified as the generic parameter and in `props`.
-
-#### `ExtensionComponent.props`
-
-Type: `T`
-
-Properties that will be handed to the component.
-
-#### `ExtensionComponent.parent`
-
-Type: `MaybeArray<'editor' | 'input' | 'renderer' | 'preview'>`
-
-Where the element will be placed.
-
-### `grammarRules`
-
-Type: `GrammarRule[]`
-
-Custom Markdown TextMate grammar rules for Shiki. They will be injected into the language.
-
-### `highlightRules`
-
-Type: `HighlightingRule[]`
-
-Custom highlighting rules for ShiKi. They will be injected into the selected theme.
-
-### `onLoad`
-
-Type: `(data: { carta: Carta; highlight: HighlightFunctions }) => void`
-
-Use this callback to execute code when one Carta instance loads the extension.
diff --git a/docs/src/pages/api/utilities.svelte.md b/docs/src/pages/api/utilities.svelte.md
deleted file mode 100644
index 273796f..0000000
--- a/docs/src/pages/api/utilities.svelte.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-section: API
-title: Utilities
----
-
-## `Carta.render`
-
-Allows you to render Markdown asynchronously.
-
-```ts
-const carta = new Carta({
- /* ... */
-});
-const markdown = '# Some Markdown';
-const html = await carta.render(markdown);
-```
-
-## `Carta.renderSSR`
-
-Allows you to render Markdown synchronously, suitable for Server Side Rendering. Note that particular extensions that add content asynchronously will not work in this configuration.
-
-```ts
-const carta = new Carta({
- /* ... */
-});
-const markdown = '# Some Markdown';
-const html = carta.renderSSR(markdown);
-```
-
-## `Carta.bindToCaret`
-
-Svelte action that allows you to bind a specific element to the caret position. Used, for example, in `plugin-emoji` and `plugin-slash`.
-
-```svelte
-
-
-
-
-
-```
-
-## `Carta.highlighter`
-
-Get the Shiki highlighter.
-
-```ts
-const highlighter = await carta.highlighter();
-const userTheme = carta.theme;
-```
-
-Here are some other highlight related utilities:
-
-### `isBundleLanguage`
-
-Checks if a language is a bundled language.
-
-```ts
-export const isBundleLanguage = (lang: string): lang is BundledLanguage;
-```
-
-### `isBundleTheme`
-
-Checks if a theme is a bundled theme.
-
-```ts
-export const isBundleTheme = (theme: string): theme is BundledTheme;
-```
-
-### `isDualTheme`
-
-Checks if a theme is a dual theme.
-
-```ts
-export const isDualTheme = (theme: Theme | DualTheme): theme is DualTheme;
-```
-
-### `isSingleTheme`
-
-```ts
-export const isSingleTheme = (theme: Theme | DualTheme): theme is Theme;
-```
-
-### `isThemeRegistration`
-
-Checks if a theme is a theme registration.
-
-```ts
-export const isThemeRegistration = (theme: Theme): theme is ThemeRegistration;
-```
diff --git a/docs/src/pages/community-plugins.svelte.md b/docs/src/pages/community-plugins.svelte.md
deleted file mode 100644
index c30ce68..0000000
--- a/docs/src/pages/community-plugins.svelte.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: Community Plugins
-section: Overview
----
-
-
-
-Here are is a list of several plugins developed by the community:
-
-
-
-### `carta-plugin-video`
-
-
-
-> Adds ability to render online video from Youtube or Vimeo.
-
-
-
-```
-npm i carta-plugin-video
-```
-
-
-
-
-
-### `carta-plugin-imsize`
-
-
-
-> Adds ability to render images in specific sizes.
-
-
-
-```
-npm i carta-plugin-imsize
-```
-
-
-
-
-
-### `carta-plugin-ins-del`
-
-
-
-> `` and `` tags support
-
-
-
-```
-npm i carta-plugin-ins-del
-```
-
-
-
-
-
-### `carta-plugin-subscript`
-
-
-
-> Adds ability to render subscripts and superscripts.
-
-
-
-```
-npm i carta-plugin-subscript
-```
-
-
diff --git a/docs/src/pages/editing-styles.svelte.md b/docs/src/pages/editing-styles.svelte.md
deleted file mode 100644
index 81736ed..0000000
--- a/docs/src/pages/editing-styles.svelte.md
+++ /dev/null
@@ -1,111 +0,0 @@
----
-title: Editing Styles
-section: Overview
----
-
-
-
-## Customizing editor styles
-
-While the core styles are embedded in the Svelte components, the others can be set in a custom stylesheet. Here is what the final rendered HTML looks like.
-
-
-
-```html
-
-```
-
-
-
-### Using multiple themes
-
-By using the `theme` property in `` you can differentiate the themes of multiple editors.
-
-## Dark mode
-
-When using dark mode, there are two different themes that have to be changed: the editor theme and the one used for syntax highlighting:
-
-
-
-```css
-/* Editor dark mode */
-/* Only if you are using the default theme */
-html.dark .carta-theme__default {
- --border-color: var(--border-color-dark);
- --selection-color: var(--selection-color-dark);
- --focus-outline: var(--focus-outline-dark);
- --hover-color: var(--hover-color-dark);
- --caret-color: var(--caret-color-dark);
- --text-color: var(--text-color-dark);
-}
-
-/* Code dark mode */
-/* Only if you didn't specify a custom code theme */
-html.dark .shiki,
-html.dark .shiki span {
- color: var(--shiki-dark) !important;
-}
-```
-
-
-
-## Changing Markdown input color theme
-
-Carta uses [Shiki](https://shiki.matsu.io/) for syntax highlighting. Two default themes are included in the core package, which are set as a [dual theme](https://shiki.matsu.io/guide/dual-themes) to support light and dark mode. If you plan to use a custom one with light/dark modes, make sure to use a dual theme as well.
-
-You can change theme in the options:
-
-
-
-```ts
-const carta = new Carta({
- // ...
- theme: 'github-dark'
-});
-```
-
-
-
-If you use a [custom theme](https://shiki.matsu.io/guide/load-theme)(or a custom language), you need to provide it inside the options, so that it gets loaded into the highlighter:
-
-
-
-```ts
-const carta = new Carta({
- // ...
- shikiOptions: {
- langs: // ...
- themes: // ...
- }
-})
-```
-
-
-
-## Markdown stylesheets
-
-Markdown is converted into standard HTML, so you can edit the final styles by using standard CSS rules. If you do not wish to create one from the ground up, you can use some already complete stylesheets, like [github-markdown-css](https://github.com/sindresorhus/github-markdown-css) or [Tailwind Typography](https://tailwindcss.com/docs/typography-plugin).
diff --git a/docs/src/pages/examples.svelte.md b/docs/src/pages/examples.svelte.md
deleted file mode 100644
index dcdd61e..0000000
--- a/docs/src/pages/examples.svelte.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Examples
-section: Overview
----
-
-
-
-Here is a list of examples made using Carta and some of its plugins.
-
-## GitHub
-
-
-
-
-Plugins used: code, slash, emoji, attachment. View source on [GitHub](https://github.com/BearToCode/carta/blob/master/docs/src/lib/examples/GitHubExample.svelte).
-
-## Discord
-
-
-
-
-Plugins used: code, emoji. View source on [GitHub](https://github.com/BearToCode/carta/blob/master/docs/src/lib/examples/DiscordExample.svelte).
-
-## Math Stack Exchange
-
-
-
-
-Plugins used: math, tikz. View source on [GitHub](https://github.com/BearToCode/carta/blob/master/docs/src/lib/examples/MathStackExchangeExample.svelte).
diff --git a/docs/src/pages/getting-started.svelte.md b/docs/src/pages/getting-started.svelte.md
deleted file mode 100644
index 81b7662..0000000
--- a/docs/src/pages/getting-started.svelte.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Getting Started
-section: Overview
----
-
-
-
-## Installation
-
-Installing the core package:
-
-
-
-```
-npm i carta-md
-```
-
-
-
-Installing plugins:
-
-
-
-```
-npm i @cartamd/plugin-name
-```
-
-
-
-## Setup
-
-Setup a basic editor:
-
-
-
-```svelte
-
-
-
-
-
-```
-
-
-
-Or, if you just want to render content:
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Sanitization
-
-By default Carta does **not** sanitize user input, which can include malicious code that could lead to [XSS attacks](https://en.wikipedia.org/wiki/Cross-site_scripting). For this reason it is _strongly recommended_ to install a package that handles that for you.
-
-Since Carta operates both on the server and the client, you'd need a sanitizer able to work in both environments, for example [isomorphic-dompurify](https://www.npmjs.com/package/isomorphic-dompurify) or [sanitize-html](https://www.npmjs.com/package/sanitize-html). Here is an example using the former, which requires minimum configuration.
-
-
-
-```svelte
-
-
-
-```
-
-
diff --git a/docs/src/pages/introduction.svelte.md b/docs/src/pages/introduction.svelte.md
deleted file mode 100644
index 12e0af9..0000000
--- a/docs/src/pages/introduction.svelte.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: Carta
-section: Overview
----
-
-
-
-> Modern, lightweight, powerful Markdown Editor.
-
-Carta is a lightweight, fast and extensible Svelte Markdown editor and viewer, designed for flexibility. It works natively in SvelteKit, and supports Server Side Rendering.
-
-## Features
-
-- ๐ Markdown syntax highlighting ([Shiki](https://shiki.style/));
-- ๐ ๏ธ Toolbar (extensible);
-- โจ๏ธ Keyboard **shortcuts** (extensible);
-- ๐ฆ Supports **[+150 plugins](https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins)** thanks to remark.
-- ๐ Scroll sync;
-- โ
Accessibility friendly;
-- ๐ฅ๏ธ **SSR** compatible;
-
-## Official Plugins
-
-Carta comes with a set of official plugins for the most common use cases.
-
-
-
-
-
-
-
-
-Math
-Support for KaTex expressions.
-
-
-
-
-
-
-Code
-Code blocks syntax highlighting.
-
-
-
-
-
-
-Emoji
-Embed emojis in Markdown.
-
-
-
-
-
-
-Slash
-Support for slash commands.
-
-
-
-
-
-
-TikZ
-Support for TikZ/PgfPlots diagrams.
-
-
-
-
-
-
-Attachment
-Handle text attachments.
-
-
-
-
-
-
-Anchor
-Add anchor links to headings.
-
-
-
-
-
-
-Community Plugins
-Explore plugins from the community.
-
-
-
-
-
-## Examples
-
-A list of examples inspired by popular platforms.
-
-
-
-
-
-
-
-
-GitHub
-Inspired by GitHub.
-
-
-
-
-
-
-Discord
-Inspired by Discord.
-
-
-
-
-
-
-Math Stack Exchange
-Inspired by Math Stack Exchange.
-
-
-
-
diff --git a/docs/src/pages/migration.svelte.md b/docs/src/pages/migration.svelte.md
deleted file mode 100644
index 72d25dc..0000000
--- a/docs/src/pages/migration.svelte.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Migration Guide
-section: Overview
----
-
-# Major Changes
-
-## Removal of Marked
-
-Marked has been replaced with a combination of Unified, Remark and Rehype. If you previously used a custom plugin with it, you'll have to update it manually. Otherwise, all builtin plugins have already been updated. Make sure to **update** them!
-
-Some plugins now have a different implementation and their options have changed. Those plugins are [plugin-math](https://beartocode.github.io/carta/plugins/math) and [plugin-anchor](https://beartocode.github.io/carta/plugins/anchor).
-
-## Syntax highlighter update
-
-SpeedHighlight has been replaced with [Shiki](https://shiki.matsu.io/). It now offers support for more languages, themes, and extensibility.
-
-Make sure to remove previous themes imports, as Shiki uses JS based ones.
-
-```ts
-import 'carta-md/light.css'; // ๐ To be removed!
-```
-
-And also update the default theme. Previous based selectors should be removed:
-
-```css
-/* ๐ To be removed! */
-[class*='shj-lang-'] {
- /* ... */
-}
-```
-
-## Removed verbose prefixes
-
-Many exports have been renamed to make them less verbose:
-
-- `CartaEditor` -> `MarkdownEditor` (old one still supported);
-- `CartaRenderer` -> `Markdown` (old one still supported);
-- `CartaEvent` -> `Event`;
-- `CartaEventType` -> `EventType`;
-- `CartaExtension` -> `Plugin`;
-- `CartaExtensionComponent` -> `ExtensionComponent`;
-- `CartaOptions` -> `Options`;
-- `CartaHistory` -> `TextAreaHistory`;
-- `CartaHistoryOptions` -> `TextAreaHistoryOptions`;
-- `CartaIcon` -> `Icon`;
-- `CartaListener` -> `Listener`;
-- `CartaInput` -> `InputEnhancer`;
-- `CartaRenderer` -> `Renderer`;
-- `CartaLabels` -> `Labels`;
-
-# Minor Changes
-
-- If you don't use a sanitizer, you need to explicitly set it to `false`;
-- Removed deprecated option `cartaRef` and `shjRef` for extensions;
-- Removed deprecated options `postProcess` for `plugin-tikz`;
-- `Carta.options` are no longer available.
diff --git a/docs/src/pages/plugins/anchor.svelte.md b/docs/src/pages/plugins/anchor.svelte.md
deleted file mode 100644
index 4b17150..0000000
--- a/docs/src/pages/plugins/anchor.svelte.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-section: Plugins
-title: Anchor
----
-
-
-
-This plugin adds `id` attributes and permalinks to headings.
-
-## Installation
-
-
-
-```
-npm i @cartamd/plugin-anchor
-```
-
-
-
-## Setup
-
-### Styles
-
-Import the default theme, or create you own:
-
-
-
-```ts
-import '@cartamd/plugin-anchor/default.css';
-```
-
-
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-Here are the options you can pass to `anchor()`:
-
-```ts
-export interface AnchorExtensionOptions {
- /**
- * rehype-slug options.
- */
- slug?: SlugOptions;
- /**
- * rehype-autolink-headings options.
- */
- autolink?: AutolinkOptions;
-}
-```
diff --git a/docs/src/pages/plugins/attachment.svelte.md b/docs/src/pages/plugins/attachment.svelte.md
deleted file mode 100644
index bbd0eca..0000000
--- a/docs/src/pages/plugins/attachment.svelte.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-section: Plugins
-title: Attachment
----
-
-
-
-This plugin adds support for attachments.
-
-## Installation
-
-```
-npm i @cartamd/plugin-attachment
-```
-
-## Setup
-
-### Styles
-
-Import the default theme, or create you own:
-
-
-
-```ts
-import '@cartamd/plugin-attachment/default.css';
-```
-
-
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-Here are the options you can pass to `attachment()`:
-
-```ts
-export interface AttachmentExtensionOptions {
- /**
- * Upload a file to the server. Return the url of the uploaded file.
- * If an error occurs, return null. This function does **not** handle errors.
- * @param file The file to upload
- * @returns The uploaded file url, or null if it failed
- */
- upload: (file: File) => Promise;
- /**
- * Supported mime types.
- *
- * @default ['image/png', 'image/jpeg', 'image/gif', 'image/svg+xml'].
- */
- supportedMimeTypes?: string[];
- /**
- * Whether to disable the attach icon.
- *
- * @default false
- */
- disableIcon?: boolean;
- /**
- * Custom drop overlay component. Use `false` to disable the overlay.
- */
- dropOverlay?: false | typeof SvelteComponent;
- /**
- * Custom loading overlay component. Use `false` to disable the overlay.
- */
- loadingOverlay?: false | typeof SvelteComponent<{ uploadingFiles: Writable }>;
-}
-```
diff --git a/docs/src/pages/plugins/code.svelte.md b/docs/src/pages/plugins/code.svelte.md
deleted file mode 100644
index d1c2c82..0000000
--- a/docs/src/pages/plugins/code.svelte.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-section: Plugins
-title: Code
----
-
-
-
-This plugin adds support for code blocks **syntax highlighting**. It uses the same highlighter from the core package(Shiki).
-
-## Installation
-
-
-
-```
-npm i @cartamd/plugin-code
-```
-
-
-
-## Setup
-
-### Styles
-
-Import the default styles:
-
-
-
-```ts
-import '@cartamd/plugin-code/default.css';
-```
-
-
-
-### Using the default highlighter
-
-Carta comes with a default highlighter that matches the one used to highlight markdown in the editor and is used by default (Shiki). If you want to use a theme different from the one used to highlight Markdown, you can specify it in the options.
-
-
-
-```ts
-const carta = new Carta({
- // ...
- extensions: [
- code({
- theme: 'ayu-light'
- })
- ]
-});
-```
-
-
-
-### Using a custom highlighter
-
-It is no longer possible to specify a custom highlighter in this plugin. However, there are many different [Remark plugins](https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins) that provide syntax highlighting.
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-The options you can pass to `code()` extend the ones provided by [Shiki](https://shiki.matsu.io/guide/transformers).
diff --git a/docs/src/pages/plugins/emoji.svelte.md b/docs/src/pages/plugins/emoji.svelte.md
deleted file mode 100644
index e7162bd..0000000
--- a/docs/src/pages/plugins/emoji.svelte.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-section: Plugins
-title: Emoji
----
-
-
-
-This plugin adds support for **Emojis**.
-
-## Installation
-
-
-
-```
-npm i @cartamd/plugin-emoji
-```
-
-
-
-## Setup
-
-### Styles
-
-Import the default theme, or create you own:
-
-
-
-```ts
-import '@cartamd/plugin-emoji/default.css';
-```
-
-
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-Here are the options you can pass to `emoji()`:
-
-```ts
-export interface EmojiExtensionOptions {
- /**
- * Custom in transition. See https://svelte.dev/docs#run-time-svelte-transition.
- */
- inTransition?: (node: Element) => TransitionConfig;
- /**
- * Custom out transition. See https://svelte.dev/docs#run-time-svelte-transition.
- */
- outTransition?: (node: Element) => TransitionConfig;
-}
-```
diff --git a/docs/src/pages/plugins/math.svelte.md b/docs/src/pages/plugins/math.svelte.md
deleted file mode 100644
index 7d4cc5c..0000000
--- a/docs/src/pages/plugins/math.svelte.md
+++ /dev/null
@@ -1,160 +0,0 @@
----
-section: Plugins
-title: Math
----
-
-
-
-This plugins adds support for [KaTeX](https://katex.org/) expressions.
-
-## Installation
-
-
-
-```
-npm i @cartamd/plugin-math
-```
-
-
-
-## Setup
-
-### Styles
-
-You need to get access to the katex **stylesheet**,
-to do so, you can either install katex using:
-
-
-
-```
-npm i katex
-```
-
-
-
-and then adding this import to your app:
-
-
-
-```ts
-import 'katex/dist/katex.css';
-```
-
-
-
-or by using a content delivery network:
-
-
-
-```html
-
-```
-
-
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Usage
-
-Inline:
-
-
-
-```
-Pythagorean theorem: $a^2+b^2=c^2$
-```
-
-
-
-
-
-
-
-Block:
-
-
-
-```
-$$
- \\mathcal{L}\\{f\\}(s) = \\int_0^{\\infty} {f(t)e^{-st}dt}
-$$
-```
-
-
-
-
-
-## Options
-
-Here are the options you can pass to `math()`:
-
-```ts
-interface MathExtensionOptions {
- /**
- * Options for inline katex, eg: $a^2+b^2=c^2$
- */
- inline?: {
- /**
- * @default control+m
- */
- shortcut?: Set;
- };
- /**
- * Option for block katex, eg:
- * $$
- * a^2+b^2=c^2
- * $$
- */
- block?: {
- /**
- * @default ctrl+shift+m
- */
- shortcut?: Set;
- };
- /**
- * Options for remark-math
- */
- remarkMath?: RemarkMathOptions;
- /**
- * Options for rehype-katex
- */
- rehypeKatex?: RehypeKatexOptions;
-}
-```
diff --git a/docs/src/pages/plugins/slash.svelte.md b/docs/src/pages/plugins/slash.svelte.md
deleted file mode 100644
index 5593a72..0000000
--- a/docs/src/pages/plugins/slash.svelte.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-section: Plugins
-title: Slash
----
-
-
-
-This plugin adds support for **Slash** commands.
-
-## Installation
-
-
-
-```
-npm i @cartamd/plugin-slash
-```
-
-
-
-## Setup
-
-### Styles
-
-Import the default theme, or create you own:
-
-
-
-```ts
-import '@cartamd/plugin-slash/default.css';
-```
-
-
-
-### Extension
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-Here are the options you can pass to `slash()`:
-
-```ts
-export interface SlashExtensionOptions {
- /**
- * List of default snippets to disable.
- */
- disableDefaultSnippets?: DefaultSnippetId[] | true;
- /**
- * Additional snippets.
- */
- snippets?: SlashSnippet[];
- /**
- * Custom in transition. See https://svelte.dev/docs#run-time-svelte-transition.
- */
- inTransition?: (node: Element) => TransitionConfig;
- /**
- * Custom out transition. See https://svelte.dev/docs#run-time-svelte-transition.
- */
- outTransition?: (node: Element) => TransitionConfig;
-}
-```
diff --git a/docs/src/pages/plugins/tikz.svelte.md b/docs/src/pages/plugins/tikz.svelte.md
deleted file mode 100644
index c878f8a..0000000
--- a/docs/src/pages/plugins/tikz.svelte.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-section: Plugins
-title: TikZ
----
-
-
-
-This plugin adds support for **PGF/TikZ** illustrations thanks to [TikZJax](https://tikzjax.com/). It uses the code generated for the [Obsidian-TikZ plugin](https://github.com/artisticat1/obsidian-tikzjax).
-
-
-
-```
-npm i @cartamd/plugin-tikz
-```
-
-
-
-## Important Notes
-
-1. This plugin requires the import of a **heavy** library (~7Mb), which is dynamically imported at runtime;
-2. Generated images are **not SSR compatible**, as they are rendered in the browser;
-3. You need to update your sanitizer to allow the specific tag: ``.
-
-## Setup
-
-
-
-```svelte
-
-
-
-```
-
-
-
-## Options
-
-Here are the options you can pass to `tikz()`:
-
-```ts
-interface TikzExtensionOptions {
- /**
- * Enables Tikzjax console output.
- */
- debug?: boolean;
- /**
- * Class for generated svg div container.
- */
- class?: string;
- /**
- * Whether to center the generated expression.
- * @default true
- */
- center?: boolean;
- /**
- * Post processing function for html.
- * This also runs on stored html.
- */
- postProcessing?: (html: string) => string;
-}
-```
diff --git a/docs/src/pages/using-components.svelte.md b/docs/src/pages/using-components.svelte.md
deleted file mode 100644
index f301c51..0000000
--- a/docs/src/pages/using-components.svelte.md
+++ /dev/null
@@ -1,217 +0,0 @@
----
-title: Using Svelte Components
-section: Overview
----
-
-
-
-Svelte components can be embedded into the rendered HTML to make certain elements interactive. However, they require a bit more work, as Remark is configured to only render static HTML. To get around this, the idea is to do the following:
-
-1. Create a Unified plugin to isolate the targeted element;
-2. Replace all the elements with the component, after every render.
-
-## Example
-
-Let's say we want to replace all hashtags, such as `#something`, with a custom component. Here is as example of how that could be achieved.
-
-### Parsing the hashtags
-
-First things first: we need to tell the parser that we want to parse hashtags as custom elements. To do this, it's useful to first install the following packages:
-
-
-
-```shell
-npm i unist-util-visit
-# Types
-npm i -D unified hast
-```
-
-
-
-Let's create a Unified plugin. The basic structure of a plugin is the following:
-
-
-
-```ts
-import type { Plugin as UnifiedPlugin } from 'unified'
-import { SKIP, visit } from 'unist-util-visit'
-
-const unifiedPlugin: UnifiedPlugin<[], hast.Root> = () => {
- return function (tree) {
- // Visit every node in the syntax tree
- visit(tree, (node, index, parent) => {
- // Do something with the node
- }
- }
-}
-```
-
-
-
-We now want to parse text nodes, so that words such as `#pizza` and `#123` are separated from the rest. This is a possible implementation:
-
-
-
-```ts
-const unifiedPlugin: UnifiedPlugin<[], hast.Root> = () => {
- return function (tree) {
- visit(tree, (node, index, parent) => {
- // Skip code blocks and their children
- if (node.type === 'element' && node.tagName === 'pre') return [SKIP];
- // Skip non-text nodes
- if (node.type !== 'text') return;
- const text = node as hast.Text;
-
- // Parse the text node and replace hashtags with spans
- const regex = /#(\w+)/g;
- const children: (hast.Element | hast.Text)[] = [];
- let lastIndex = 0;
- let match;
- while ((match = regex.exec(text.value))) {
- const before = text.value.slice(lastIndex, match.index);
- if (before) {
- children.push({ type: 'text', value: before });
- }
- children.push({
- type: 'element',
- tagName: 'span',
- properties: { type: 'hashtag', value: match[1] },
- children: [{ type: 'text', value: match[0] }]
- });
- lastIndex = regex.lastIndex;
- }
- if (lastIndex < text.value.length) {
- children.push({ type: 'text', value: text.value.slice(lastIndex) });
- }
-
- // Replace the text node with all the children
- parent!.children.splice(index!, 1, ...children);
-
- // Skip the children
- return [SKIP, index! + children.length];
- });
- };
-};
-```
-
-
-
-If you want a more in-depth guide on writing Unified plugins, you can check out the official [documentation](https://unifiedjs.com/learn/guide/create-a-plugin/).
-
-Notice that hashtags are now replaced with the following:
-
-```html
-
#pizza
-```
-
-### Configuring the transformer
-
-Unified plugins need to be wrapped inside a `UnifiedTransformer` type, to be able to be used in Carta.
-
-
-
-```ts
-import type { UnifiedTransformer } from 'carta-md';
-
-const hashtagTransformer: UnifiedTransformer<'sync'> = {
- execution: 'sync', // Sync, since the plugin is synchronous
- type: 'rehype', // Rehype, since it operates on HTML
- transform({ processor }) {
- processor.use(unifiedPlugin);
- }
-};
-```
-
-
-
-### Mounting the components
-
-We now want to replace the generated hashtag placeholders with the following element:
-
-
-
-```svelte
-
-
-
- {
- console.log('Hashtag clicked!');
- }}
->
- #{value}
-
-```
-
-
-
-To do that, we create a listener that:
-
-1. Finds all the previous placeholders;
-2. Mounts the component next to them;
-3. Removes the placeholders.
-
-
-
-```ts
-import type { Listener } from 'carta-md';
-import Hashtag from './Hashtag.svelte';
-
-const convertHashtags: Listener<'carta-render'> = [
- 'carta-render',
- function onRender({ detail: { carta } }) {
- const rendererContainer = carta.renderer?.container;
- if (!rendererContainer) return;
-
- // Find all hashtag spans and replace them with Svelte components
- const hashtagSpans = rendererContainer.querySelectorAll('span[type="hashtag"]');
- for (const span of hashtagSpans) {
- const hashtag = span.getAttribute('value') ?? '';
-
- new Hashtag({
- target: span.parentElement!,
- anchor: span,
- props: { value: hashtag }
- });
-
- span.remove();
- }
- }
-];
-```
-
-
-
-### Using the plugin
-
-Let's now create a Plugin with the transformer and the listener:
-
-
-
-```ts
-import type { Plugin } from 'carta-md';
-
-export const hashtag = (): Plugin => ({
- transformers: [hashtagTransformer],
- listeners: [convertHashtags]
-});
-```
-
-
-
-We can now use the plugin with the following:
-
-```ts
-import { Carta } from 'carta-md';
-
-const carta = new Carta({
- // ...
- extensions: [hashtag()]
-});
-```
-
-You can find the example source code [here](https://github.com/BearToCode/svelte-in-carta-example).
diff --git a/docs/src/routes/+layout.svelte b/docs/src/routes/+layout.svelte
deleted file mode 100644
index 723f83f..0000000
--- a/docs/src/routes/+layout.svelte
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
diff --git a/docs/src/routes/+layout.ts b/docs/src/routes/+layout.ts
deleted file mode 100644
index a4c5a95..0000000
--- a/docs/src/routes/+layout.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import 'iconify-icon'; // Register iconify web components
-
-export const prerender = true;
diff --git a/docs/src/routes/+page.svelte b/docs/src/routes/+page.svelte
deleted file mode 100644
index ac2153e..0000000
--- a/docs/src/routes/+page.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/docs/src/routes/[...slug]/+page.server.ts b/docs/src/routes/[...slug]/+page.server.ts
deleted file mode 100644
index 3b3b4ac..0000000
--- a/docs/src/routes/[...slug]/+page.server.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import type { SvelteComponent } from 'svelte';
-import type { PageServerLoad } from './$types';
-import { error } from '@sveltejs/kit';
-import { base } from '$app/paths';
-
-export const load: PageServerLoad = async (event) => {
- const pages = import.meta.glob('../../pages/**/*.svelte.md');
- const path = event.url.pathname.slice(base.length).slice(1);
- const match = pages[`../../pages/${path}.svelte.md`];
- if (!match) throw error(404, 'Not found');
-
- const Markdown = (await match()) as {
- default: SvelteComponent;
- metadata: Record
;
- };
- const content = Markdown.default.render();
- const metadata = Markdown.metadata;
-
- return {
- content,
- metadata
- };
-};
diff --git a/docs/src/routes/[...slug]/+page.svelte b/docs/src/routes/[...slug]/+page.svelte
deleted file mode 100644
index 449ea7b..0000000
--- a/docs/src/routes/[...slug]/+page.svelte
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
- {data.metadata['title']} - Carta
-
-
-{data.metadata['section']}
-
-{data.metadata['title']}
-
-
- {#if clientSideComponent}
-
- {:else}
- {#key $page.url}
-
- {@html data.content.html}
- {/key}
- {/if}
-
diff --git a/docs/static/background.png b/docs/static/background.png
deleted file mode 100644
index d10b065..0000000
Binary files a/docs/static/background.png and /dev/null differ
diff --git a/docs/static/favicon.png b/docs/static/favicon.png
deleted file mode 100644
index 02cdc60..0000000
Binary files a/docs/static/favicon.png and /dev/null differ
diff --git a/docs/static/logo-small.png b/docs/static/logo-small.png
deleted file mode 100644
index 8481411..0000000
Binary files a/docs/static/logo-small.png and /dev/null differ
diff --git a/docs/static/logo.png b/docs/static/logo.png
deleted file mode 100644
index a496221..0000000
Binary files a/docs/static/logo.png and /dev/null differ
diff --git a/docs/tailwind.config.js b/docs/tailwind.config.js
deleted file mode 100644
index e1ff2a1..0000000
--- a/docs/tailwind.config.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-const config = {
- darkMode: 'class',
- content: ['./src/**/*.{html,js,svelte,ts,md}'],
- safelist: ['dark'],
- theme: {
- container: {
- center: true,
- padding: '2rem',
- screens: {
- '2xl': '1400px'
- }
- },
- extend: {
- colors: {
- border: 'hsl(var(--border) / )',
- input: 'hsl(var(--input) / )',
- ring: 'hsl(var(--ring) / )',
- background: 'hsl(var(--background) / )',
- foreground: 'hsl(var(--foreground) / )',
- primary: {
- DEFAULT: 'hsl(var(--primary) / )',
- foreground: 'hsl(var(--primary-foreground) / )'
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary) / )',
- foreground: 'hsl(var(--secondary-foreground) / )'
- },
- destructive: {
- DEFAULT: 'hsl(var(--destructive) / )',
- foreground: 'hsl(var(--destructive-foreground) / )'
- },
- muted: {
- DEFAULT: 'hsl(var(--muted) / )',
- foreground: 'hsl(var(--muted-foreground) / )'
- },
- accent: {
- DEFAULT: 'hsl(var(--accent) / )',
- foreground: 'hsl(var(--accent-foreground) / )'
- },
- popover: {
- DEFAULT: 'hsl(var(--popover) / )',
- foreground: 'hsl(var(--popover-foreground) / )'
- },
- card: {
- DEFAULT: 'hsl(var(--card) / )',
- foreground: 'hsl(var(--card-foreground) / )'
- }
- },
- borderRadius: {
- lg: 'var(--radius)',
- md: 'calc(var(--radius) - 2px)',
- sm: 'calc(var(--radius) - 4px)'
- }
- }
- }
-};
-
-export default config;
diff --git a/package.json b/package.json
index 85b8d68..f525ec7 100644
--- a/package.json
+++ b/package.json
@@ -11,11 +11,12 @@
"scripts": {
"preinstall": "npx only-allow pnpm",
"core": "cd packages/carta-md && npm run dev",
+ "dev": "cd demo && npm run dev",
"check": "cd packages/carta-md && npm run check",
"build": "node scripts/build.js",
"publish": "node scripts/publish.js",
- "lint": "prettier --check . && eslint .",
- "format": "prettier --write .",
+ "lint": "prettier --plugin-search-dir . --check . && eslint .",
+ "format": "prettier --plugin-search-dir . --write .",
"prepare": "husky install",
"commit": "cz"
},
@@ -31,14 +32,13 @@
"husky": "^8.0.3",
"lint-staged": "^13.2.2",
"ora": "^6.3.0",
- "prettier": "3.1.0",
- "prettier-plugin-svelte": "^3.1.0",
- "prettier-plugin-tailwindcss": "^0.5.7",
+ "prettier": "^2.8.8",
+ "prettier-plugin-svelte": "^2.10.0",
"semantic-release": "^20.1.3",
"semantic-release-monorepo": "^7.0.5"
},
"lint-staged": {
- "*.{js,ts,svelte}": "eslint --cache --fix --no-error-on-unmatched-pattern",
+ "*.{js,ts,svelte}": "eslint --cache --fix",
"*.{js,ts,css,md,svelte,html,yml,json,cjs}": "prettier --write"
},
"config": {
@@ -53,5 +53,13 @@
"@semantic-release/npm",
"@semantic-release/github"
]
+ },
+ "pnpm": {
+ "overrides": {
+ "@adobe/css-tools@<4.3.1": ">=4.3.1",
+ "semver@>=7.0.0 <7.5.2": ">=7.5.2",
+ "postcss@<8.4.31": ">=8.4.31",
+ "undici@<5.26.2": ">=5.26.2"
+ }
}
}
diff --git a/packages/carta-md/README.md b/packages/carta-md/README.md
index 2b4495b..5be5154 100644
--- a/packages/carta-md/README.md
+++ b/packages/carta-md/README.md
@@ -1,88 +1,42 @@
-
-
-[](https://beartocode.github.io/carta/)
-
-Carta
-Modern, lightweight, powerful Markdown Editor.
-
-# Introduction
+
-> **NOTE**:
-> Carta has recently been updated to `v4`, which features numerous major changes.
->
-> Follow the [Migration Guide](http://beartocode.github.io/carta/migration) to update your project.
+
-Carta is a **lightweight**, **fast** and **extensible** Svelte Markdown editor and viewer. It is powered by [unified](https://github.com/unifiedjs/unified), [remark](https://github.com/remarkjs/remark) and [rehype](https://github.com/rehypejs/rehype). Check out the [examples](http://beartocode.github.io/carta/examples) to see it in action.
-Differently from most editors, Carta does not include a code editor, but it is _just_ a textarea with syntax highlighting, shortcuts and more.
+Carta is a **lightweight**, **fast** and **extensible** Svelte Markdown editor and viewer, based on [Marked](https://github.com/markedjs/marked). Check out the [demo](http://beartocode.github.io/carta/) to see it in action.
+Differently from most editors, Carta includes neither ProseMirror nor CodeMirror, allowing for an extremely small bundle size and fast loading time.
## Features
-- ๐ Markdown syntax highlighting ([Shiki](https://shiki.style/));
-- ๐ ๏ธ Toolbar (extensible);
-- โจ๏ธ Keyboard **shortcuts** (extensible);
-- ๐ฆ Supports **[150+ plugins](https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins)** thanks to remark;
-- ๐ Scroll sync;
-- โ
Accessibility friendly;
-- ๐ฅ๏ธ **SSR** compatible;
-- โ๏ธ **KaTeX** support (plugin);
-- ๐จ **Slash** commands (plugin);
-- ๐ **Emojis**, with included search (plugin);
-- โ๏ธ **TikZ** support (plugin);
-- ๐ **Attachment** support (plugin);
-- โ **Anchor** links in headings (plugin);
-- ๐ Code blocks **syntax highlighting** (plugin).
+- Keyboard **shortcuts** (extensible);
+- Toolbar (extensible);
+- Markdown syntax highlighting;
+- Scroll sync;
+- **SSR** compatible;
+- **Katex** support (plugin);
+- **Slash** commands (plugin);
+- **Emojis**, with included search (plugin);
+- **Tikz** support(plugin);
+- **Attachment** support(plugin);
+- Code blocks **syntax highlighting** (plugin).
-## Packages
+## Getting started
-| Package | Status | Docs |
-| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
-| [carta-md](https://www.npmjs.com/package/carta-md) |  | [/](https://beartocode.github.io/carta/introduction) |
-| [plugin-math](https://www.npmjs.com/package/@cartamd/plugin-math) |  | [/plugins/math](https://beartocode.github.io/carta/plugins/math) |
-| [plugin-code](https://www.npmjs.com/package/@cartamd/plugin-code) |  | [/plugins/code](https://beartocode.github.io/carta/plugins/code) |
-| [plugin-emoji](https://www.npmjs.com/package/@cartamd/plugin-emoji) |  | [/plugins/emoji](https://beartocode.github.io/carta/plugins/emoji) |
-| [plugin-slash](https://www.npmjs.com/package/@cartamd/plugin-slash) |  | [/plugins/slash](https://beartocode.github.io/carta/plugins/slash) |
-| [plugin-tikz](https://www.npmjs.com/package/@cartamd/plugin-tikz) |  | [/plugins/tikz](https://beartocode.github.io/carta/plugins/tikz) |
-| [plugin-attachment](https://www.npmjs.com/package/@cartamd/plugin-attachment) |  | [/plugins/attachment](https://beartocode.github.io/carta/plugins/attachment) |
-| [plugin-anchor](https://www.npmjs.com/package/@cartamd/plugin-anchor) |  | [/plugins/anchor](https://beartocode.github.io/carta/plugins/anchor) |
-
-## Community plugins
-
-| Plugin | Description |
-| ----------------------------------------------------------------------------- | ---------------------------------- |
-| [carta-plugin-video](https://github.com/maisonsmd/carta-plugin-video) | Render online videos |
-| [carta-plugin-imsize](https://github.com/maisonsmd/carta-plugin-imsize) | Render images in specific sizes |
-| [carta-plugin-subscript](https://github.com/maisonsmd/carta-plugin-subscript) | Render subscripts and superscripts |
-| [carta-plugin-ins-del](https://github.com/maisonsmd/carta-plugin-ins-del) | `` and `` tags support |
-
-# Getting started
-
-> **WARNING**
+> **Warning**
> Sanitization is not dealt with by Carta. You need to provide a `sanitizer` in the options.
> Common sanitizers are [isomorphic-dompurify](https://www.npmjs.com/package/isomorphic-dompurify) (suggested) and [sanitize-html](https://www.npmjs.com/package/sanitize-html).
-> Checkout the documentation for an example.
-## Installation
+### Installation
Core package:
@@ -96,13 +50,15 @@ Plugins:
npm i @cartamd/plugin-name
```
-## Basic configuration
+### Basic configuration
```svelte
-
+
```
-# Documentation
+Editor component exported properties:
-For the full documentation, examples, guides and more checkout the [website](https://beartocode.github.io/carta/).
+| Name | Type | Description |
+| ---------------- | ----------------------------- | ----------------------------------------- |
+| `carta` | `Carta` | Carta Editor |
+| `theme` | `string` | For custom css themes, see below for more |
+| `value` | `string` | Markdown input |
+| `placeholder` | `string` | Placeholder text for textarea |
+| `mode` | `'tabs' \| 'split' \| 'auto'` | Tabs settings |
+| `disableToolbar` | `boolean` | Option to disable the toolbar |
-- [Introduction](https://beartocode.github.io/carta/introduction)
-- [Examples](https://beartocode.github.io/carta/examples)
-- [Getting Started](https://beartocode.github.io/carta/getting-started)
-- [Editing Styles](https://beartocode.github.io/carta/editing-styles)
-- Plugins:
- - [Math](https://beartocode.github.io/carta/plugins/math)
- - [Code](https://beartocode.github.io/carta/plugins/code)
- - [Emoji](https://beartocode.github.io/carta/plugins/emoji)
- - [Slash](https://beartocode.github.io/carta/plugins/slash)
- - [TikZ](https://beartocode.github.io/carta/plugins/tikz)
- - [Attachment](https://beartocode.github.io/carta/plugins/attachment)
- - [Anchor](https://beartocode.github.io/carta/plugins/anchor)
-- API:
- - [Utilities](https://beartocode.github.io/carta/api/utilities)
- - [Core](https://beartocode.github.io/carta/api/core)
- - [Extension](https://beartocode.github.io/carta/api/extension)
+### Plugins
-# Contributing & Development
+Each plugin's _readme_ includes a guide on its use.
+
+| Name | Description |
+| ----------------------------------------------------------------------------------------------- | --------------------------------------- |
+| [plugin-math](https://github.com/BearToCode/carta/tree/master/packages/plugin-math) | Katex support |
+| [plugin-slash](https://github.com/BearToCode/carta/tree/master/packages/plugin-slash) | Slash commands support |
+| [plugin-emoji](https://github.com/BearToCode/carta/tree/master/packages/plugin-emoji) | Emojis support, including inline search |
+| [plugin-code](https://github.com/BearToCode/carta/tree/master/packages/plugin-code) | Code blocks syntax highlighting |
+| [plugin-tikz](https://github.com/BearToCode/carta/tree/master/packages/plugin-tikz) | TikZ support using TikZJax |
+| [plugin-attachment](https://github.com/BearToCode/carta/tree/master/packages/plugin-attachment) | Attachments support |
+
+## Themes customization
+
+By using the `theme` property in `CartaEditor` and `CartaPreview` you can change their classes to `carta-editor__{theme}` and `carta-viewer__{theme}`.
+
+Check out the [default theme](https://github.com/BearToCode/carta/blob/master/packages/carta-md/src/lib/default.css) to customize it.
+
+If you are using a plugin, look at its _readme_ for its customization.
+
+Markdown highlighting is done using **Speed Highlight JS**, [here](https://github.com/speed-highlight/core/tree/main/src/themes) you can find more themes.
+
+You can find complete Markdown stylesheet online. For example [github-markdown-css](https://github.com/sindresorhus/github-markdown-css)(used in the demo), or [tailwind-typography](https://tailwindcss.com/docs/typography-plugin).
+
+## Extensibility
+
+### Options
+
+Carta options:
+
+| Name | Type | Description |
+| ------------------ | ------------------------------ | ----------------------------------------------- |
+| `extensions` | `CartaExtension[]` | Editor/viewer extensions |
+| `rendererDebounce` | `number` | Renderer debouncing timeout, in ms (def. 300ms) |
+| `disableShortcuts` | `DefaultShortcutId[] \| true` | Remove default shortcuts by ids |
+| `disableIcons` | `DefaultIconId[] \| true` | Remove default icons by ids |
+| `disablePrefixes` | `DefaultPrefixId[] \| true` | Remove default prefixes by ids |
+| `historyOptions` | `Partial` | History (Undo/Redo) options |
+| `sanitizer` | `(html: string) => string` | HTML sanitizer |
+
+You can easily extend Carta by creating custom plugins. Here are all the `CartaExtension` properties:
+
+| Name | Type | Description |
+| ------------------ | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `markedExtensions` | `marked.MarkedExtension[]` | Marked extensions, more on that [here](https://marked.js.org/using_advanced) |
+| `shortcuts` | `KeyboardShortcut[]` | Additional keyboard shortcuts |
+| `icons` | `CartaIcon[]` | Additional icons |
+| `prefixes` | `Prefix[]` | Additional prefixes |
+| `listeners` | `CartaListener[]` | Textarea event listeners |
+| `components` | `CartaExtensionComponents` | Additional components, that will be put after the editor. All components are given a `carta: Carta`. prop The editor has a `relative` position, so you can position elements absolutely |
+| `highlightRules` | `HighlightRule[]` | Custom markdown highlight rules. See [Speed-Highlight Wiki](https://github.com/speed-highlight/core/wiki/Create-or-suggest-new-languages). |
+| `onLoad` | `(data: { carta:Carta, ... }) => void` | Use this callback to execute code when one Carta instance loads the extension. |
+
+If you created a plugin and want to share it, you can open an _issue_ and we will consider sponsoring it on this guide.
+
+## Contributions
Every contribution is well accepted. If you have a feature request you can open a new issue.
@@ -158,12 +159,3 @@ npm run commit
# or, if you have commitizen installed globally
git cz
```
-
-### Running docs
-
-If you want to preview the docs:
-
-```
-cd docs
-npm run dev
-```
diff --git a/packages/carta-md/package.json b/packages/carta-md/package.json
index bc074ef..30eaff3 100644
--- a/packages/carta-md/package.json
+++ b/packages/carta-md/package.json
@@ -14,7 +14,10 @@
"svelte": "./dist/index.js",
"import": "./dist/index.js"
},
- "./default.css": "./dist/default.css"
+ "./default.css": "./dist/default.css",
+ "./default-theme.css": "./dist/default.css",
+ "./light.css": "./dist/light.css",
+ "./dark.css": "./dist/dark.css"
},
"version": "3.0.0",
"scripts": {
@@ -24,23 +27,18 @@
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
- "svelte-check": "^3.6.7",
+ "@sveltejs/adapter-auto": "^1.0.0-next.90",
+ "@sveltejs/kit": "^1.0.0-next.587",
+ "@sveltejs/package": "^2.0.2",
+ "svelte-check": "^3.2.0",
"tslib": "^2.4.1",
"typescript": "^5.1.6",
- "vite": "^5.1.6"
+ "typescript-plugin-css-modules": "^5.0.1"
},
"type": "module",
"dependencies": {
- "rehype-stringify": "^10.0.0",
- "remark-gfm": "^4.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.1.0",
- "shiki": "^1.4.0",
- "unified": "^11.0.4"
+ "@speed-highlight/core": "1.2.2",
+ "marked": "^9.1.5"
},
"peerDependencies": {
"svelte": "^3.54.0 || ^4.0.0"
diff --git a/packages/carta-md/src/app.html b/packages/carta-md/src/app.html
index 866ddd0..2f83674 100644
--- a/packages/carta-md/src/app.html
+++ b/packages/carta-md/src/app.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/carta-md/src/lib/MarkdownEditor.svelte b/packages/carta-md/src/lib/CartaEditor.svelte
similarity index 70%
rename from packages/carta-md/src/lib/MarkdownEditor.svelte
rename to packages/carta-md/src/lib/CartaEditor.svelte
index 8e8cb33..9595047 100644
--- a/packages/carta-md/src/lib/MarkdownEditor.svelte
+++ b/packages/carta-md/src/lib/CartaEditor.svelte
@@ -1,12 +1,9 @@
-
+
{@html rendered}
{#if mounted}
diff --git a/packages/carta-md/src/lib/dark.css b/packages/carta-md/src/lib/dark.css
new file mode 100644
index 0000000..3b8e471
--- /dev/null
+++ b/packages/carta-md/src/lib/dark.css
@@ -0,0 +1,41 @@
+@import 'light.css';
+
+[class*='shj-lang-'] {
+ color: #f8f8f2;
+ background: #1a1a1c;
+}
+[class*='shj-lang-']:before {
+ color: #6f9aff;
+}
+
+.shj-syn-deleted,
+.shj-syn-err,
+.shj-syn-var {
+ color: #ff5261;
+}
+.shj-syn-section,
+.shj-syn-kwd {
+ color: #ff7cc6;
+}
+.shj-syn-class {
+ color: #eab07c;
+}
+.shj-numbers,
+.shj-syn-cmnt {
+ color: #7d828b;
+}
+.shj-syn-insert,
+.shj-syn-type,
+.shj-syn-func,
+.shj-syn-bool {
+ color: #71d58a;
+}
+.shj-syn-num {
+ color: #b581fd;
+}
+.shj-syn-oper {
+ color: #80c6ff;
+}
+.shj-syn-str {
+ color: #4dacfa;
+}
diff --git a/packages/carta-md/src/lib/default.css b/packages/carta-md/src/lib/default.css
index 27de0bd..dac1fc6 100644
--- a/packages/carta-md/src/lib/default.css
+++ b/packages/carta-md/src/lib/default.css
@@ -3,15 +3,6 @@
--selection-color: #b5f0ff3d;
--focus-outline: #76bbf3;
--hover-color: #e9e9e9;
- --caret-color: #161616;
- --text-color: #1a1a1a;
-
- --border-color-dark: #4d4d4c;
- --selection-color-dark: #b5f0ff3d;
- --focus-outline-dark: #76bbf3;
- --hover-color-dark: #4d4d4c;
- --caret-color-dark: #ffffff;
- --text-color-dark: #f1f1f1;
}
.carta-theme__default.carta-editor {
@@ -38,14 +29,10 @@
/* Text settings */
.carta-theme__default .carta-input {
- caret-color: var(--caret-color);
+ caret-color: #4d4d4c;
font-size: 0.95rem;
}
-.carta-theme__default .carta-input ::placeholder {
- color: var(--text-color);
-}
-
/* Splitter */
.carta-theme__default .mode-split.carta-container::after {
content: '';
@@ -75,10 +62,6 @@
align-items: flex-end;
}
-.carta-theme__default button {
- color: var(--text-color);
-}
-
/* Markdown input and renderer */
.carta-theme__default .carta-input,
.carta-theme__default .carta-renderer {
@@ -87,22 +70,12 @@
}
/* Icons */
-.carta-theme__default .carta-icon,
-.carta-theme__default .carta-icon-full {
+.carta-theme__default .carta-icon {
border: 0;
background: transparent;
}
-.carta-theme__default .carta-icon-full {
- padding: 6px 4px;
-}
-
-.carta-theme__default .carta-icon-full span {
- margin-left: 6px;
-}
-
-.carta-theme__default .carta-icon:hover,
-.carta-theme__default .carta-icon-full:hover {
+.carta-theme__default .carta-icon:hover {
background: var(--hover-color);
}
@@ -110,21 +83,6 @@
background: inherit;
}
-.carta-theme__default .carta-icons-menu {
- padding: 6px;
- border: 1px solid var(--border-color);
- border-radius: 6px;
- min-width: 180px;
-}
-
-.carta-theme__default .carta-icons-menu .carta-icon-full {
- margin-top: 2px;
-}
-
-.carta-theme__default .carta-icons-menu .carta-icon-full:first-child {
- margin-top: 0;
-}
-
/* Buttons */
.carta-theme__default .carta-toolbar-left button {
background: none;
diff --git a/packages/carta-md/src/lib/index.ts b/packages/carta-md/src/lib/index.ts
index a188dad..c8f6155 100644
--- a/packages/carta-md/src/lib/index.ts
+++ b/packages/carta-md/src/lib/index.ts
@@ -1,15 +1,10 @@
-export { default as MarkdownEditor } from '$lib/MarkdownEditor.svelte';
-export { default as Markdown } from '$lib/Markdown.svelte';
-export type { InputEnhancer, TextSelection } from '$lib/internal/input';
-export type { Icon } from '$lib/internal/icons';
+export { default as CartaEditor } from '$lib/CartaEditor.svelte';
+export { default as CartaViewer } from '$lib/CartaViewer.svelte';
+export type { CartaInput, TextSelection } from '$lib/internal/input';
+export type { CartaIcon } from '$lib/internal/icons';
export type { KeyboardShortcut } from '$lib/internal/shortcuts';
export type { Prefix } from '$lib/internal/prefixes';
export * from '$lib/internal/carta';
export * from '$lib/internal/highlight';
-export * from '$lib/internal/textarea-props';
-export * from '$lib/internal/labels';
export * from './default.css?inline';
-
-// Legacy
-export { default as CartaEditor } from '$lib/MarkdownEditor.svelte';
-export { default as CartaViewer } from '$lib/Markdown.svelte';
+export * from './light.css?inline';
diff --git a/packages/carta-md/src/lib/internal/accessibility.ts b/packages/carta-md/src/lib/internal/accessibility.ts
deleted file mode 100644
index e5e81a0..0000000
--- a/packages/carta-md/src/lib/internal/accessibility.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Handles arrow key navigation for a list of elements.
- * @param e The event to handle.
- */
-export function handleArrowKeysNavigation(e: KeyboardEvent & { currentTarget: HTMLElement }) {
- if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;
- e.preventDefault();
-
- const siblings = e.currentTarget.parentElement?.children;
- if (!siblings) return;
-
- const next = (e.currentTarget.nextElementSibling ?? siblings[0]) as HTMLElement;
- const prev = (e.currentTarget.previousElementSibling ??
- siblings[siblings.length - 1]) as HTMLElement;
-
- if (e.key === 'ArrowRight') {
- next.focus();
- } else {
- prev.focus();
- }
-}
diff --git a/packages/carta-md/src/lib/internal/assets/markdown.ts b/packages/carta-md/src/lib/internal/assets/markdown.ts
deleted file mode 100644
index e058507..0000000
--- a/packages/carta-md/src/lib/internal/assets/markdown.ts
+++ /dev/null
@@ -1,1779 +0,0 @@
-import { type LanguageInput } from 'shiki';
-
-const lang = {
- displayName: 'CartaMarkdown',
- name: 'cartamd' as const,
- patterns: [{ include: '#frontMatter' }, { include: '#block' }],
- repository: {
- $self: {},
- $base: {},
- ampersand: {
- // comment:
- // 'Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.',
- match: '&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)',
- name: 'meta.other.valid-ampersand.markdown'
- },
- block: {
- patterns: [
- { include: '#separator' },
- { include: '#heading' },
- { include: '#blockquote' },
- { include: '#lists' },
- { include: '#fenced_code_block' },
- { include: '#raw_block' },
- { include: '#link-def' },
- { include: '#html' },
- { include: '#table' },
- { include: '#paragraph' }
- ]
- },
- blockquote: {
- begin: '(^|\\G)[ ]{0,3}(>) ?',
- captures: { '2': { name: 'punctuation.definition.quote.begin.markdown' } },
- name: 'markup.quote.markdown',
- patterns: [{ include: '#block' }],
- while: '(^|\\G)\\s*(>) ?'
- },
- bold: {
- begin:
- '(?x) (?
(\\*\\*(?=\\w)|(?]*+>\n| (?`+)([^`]|(?!(?(?!`))`)*+\\k\n\n| \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+\n| \\[\n(\n(?\n[^\\[\\]\\\\]\n| \\\\.\n| \\[ \\g*+ \\]\n)*+\n\\]\n(\n(\n[ ]?\n\\[[^\\]]*+\\]\n)\n| (\n\\(\n[ \\t]*+\n(.*?)>?\n[ \\t]*+\n(\n(?[\'"])\n(.*?)\n\\k\n)?\n\\)\n)\n)\n)\n| (?!(?<=\\S)\\k).\n\n)++\n(?<=\\S)(?=__\\b|\\*\\*)\\k\n)\n',
- captures: { '1': { name: 'punctuation.definition.bold.markdown' } },
- end: '(?<=\\S)(\\1)',
- name: 'markup.bold.markdown',
- patterns: [
- {
- applyEndPatternLast: true,
- begin: '(?=<[^>]*?>)',
- end: '(?<=>)',
- patterns: [{ include: 'text.html.derivative' }]
- },
- { include: '#escape' },
- { include: '#ampersand' },
- { include: '#bracket' },
- { include: '#raw' },
- { include: '#bold' },
- { include: '#italic' },
- { include: '#image-inline' },
- { include: '#link-inline' },
- { include: '#link-inet' },
- { include: '#link-email' },
- { include: '#image-ref' },
- { include: '#link-ref-literal' },
- { include: '#link-ref' },
- { include: '#link-ref-shortcut' },
- { include: '#strikethrough' }
- ]
- },
- bracket: {
- // comment:
- // 'Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.',
- match: '<(?![a-zA-Z/?\\$!])',
- name: 'meta.other.valid-bracket.markdown'
- },
- escape: { match: '\\\\[-`*_#+.!(){}\\[\\]\\\\>]', name: 'constant.character.escape.markdown' },
- fenced_code_block: {
- patterns: [
- { include: '#fenced_code_block_css' },
- { include: '#fenced_code_block_basic' },
- { include: '#fenced_code_block_ini' },
- { include: '#fenced_code_block_java' },
- { include: '#fenced_code_block_lua' },
- { include: '#fenced_code_block_makefile' },
- { include: '#fenced_code_block_perl' },
- { include: '#fenced_code_block_r' },
- { include: '#fenced_code_block_ruby' },
- { include: '#fenced_code_block_php' },
- { include: '#fenced_code_block_sql' },
- { include: '#fenced_code_block_vs_net' },
- { include: '#fenced_code_block_xml' },
- { include: '#fenced_code_block_xsl' },
- { include: '#fenced_code_block_yaml' },
- { include: '#fenced_code_block_dosbatch' },
- { include: '#fenced_code_block_clojure' },
- { include: '#fenced_code_block_coffee' },
- { include: '#fenced_code_block_c' },
- { include: '#fenced_code_block_cpp' },
- { include: '#fenced_code_block_diff' },
- { include: '#fenced_code_block_dockerfile' },
- { include: '#fenced_code_block_git_commit' },
- { include: '#fenced_code_block_git_rebase' },
- { include: '#fenced_code_block_go' },
- { include: '#fenced_code_block_groovy' },
- { include: '#fenced_code_block_pug' },
- { include: '#fenced_code_block_js' },
- { include: '#fenced_code_block_js_regexp' },
- { include: '#fenced_code_block_json' },
- { include: '#fenced_code_block_jsonc' },
- { include: '#fenced_code_block_less' },
- { include: '#fenced_code_block_objc' },
- { include: '#fenced_code_block_swift' },
- { include: '#fenced_code_block_scss' },
- { include: '#fenced_code_block_perl6' },
- { include: '#fenced_code_block_powershell' },
- { include: '#fenced_code_block_python' },
- { include: '#fenced_code_block_julia' },
- { include: '#fenced_code_block_regexp_python' },
- { include: '#fenced_code_block_rust' },
- { include: '#fenced_code_block_scala' },
- { include: '#fenced_code_block_shell' },
- { include: '#fenced_code_block_ts' },
- { include: '#fenced_code_block_tsx' },
- { include: '#fenced_code_block_csharp' },
- { include: '#fenced_code_block_fsharp' },
- { include: '#fenced_code_block_dart' },
- { include: '#fenced_code_block_handlebars' },
- { include: '#fenced_code_block_markdown' },
- { include: '#fenced_code_block_log' },
- { include: '#fenced_code_block_erlang' },
- { include: '#fenced_code_block_elixir' },
- { include: '#fenced_code_block_latex' },
- { include: '#fenced_code_block_bibtex' },
- { include: '#fenced_code_block_twig' },
- { include: '#fenced_code_block_unknown' }
- ]
- },
- fenced_code_block_basic: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.html',
- patterns: [{ include: 'text.html.basic' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_bibtex: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.bibtex',
- patterns: [{ include: 'text.bibtex' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_c: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.c',
- patterns: [{ include: 'source.c' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_clojure: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(clj|cljs|clojure)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.clojure',
- patterns: [{ include: 'source.clojure' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_coffee: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.coffee',
- patterns: [{ include: 'source.coffee' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_cpp: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cpp|c\\+\\+|cxx)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.cpp source.cpp',
- patterns: [{ include: 'source.cpp' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_csharp: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cs|csharp|c#)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.csharp',
- patterns: [{ include: 'source.cs' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_css: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(css|css.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.css',
- patterns: [{ include: 'source.css' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_dart: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.dart',
- patterns: [{ include: 'source.dart' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_diff: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.diff',
- patterns: [{ include: 'source.diff' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_dockerfile: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dockerfile|Dockerfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.dockerfile',
- patterns: [{ include: 'source.dockerfile' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_dosbatch: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat|batch)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.dosbatch',
- patterns: [{ include: 'source.batchfile' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_elixir: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(elixir)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.elixir',
- patterns: [{ include: 'source.elixir' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_erlang: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(erlang)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.erlang',
- patterns: [{ include: 'source.erlang' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_fsharp: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(fs|fsharp|f#)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.fsharp',
- patterns: [{ include: 'source.fsharp' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_git_commit: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.git_commit',
- patterns: [{ include: 'text.git-commit' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_git_rebase: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.git_rebase',
- patterns: [{ include: 'text.git-rebase' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_go: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(go|golang)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.go',
- patterns: [{ include: 'source.go' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_groovy: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(groovy|gvy)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.groovy',
- patterns: [{ include: 'source.groovy' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_handlebars: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(handlebars|hbs)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.handlebars',
- patterns: [{ include: 'text.html.handlebars' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_ini: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.ini',
- patterns: [{ include: 'source.ini' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_java: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.java',
- patterns: [{ include: 'source.java' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_js: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\{\\.js.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.javascript',
- patterns: [{ include: 'source.js' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_js_regexp: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.js_regexp',
- patterns: [{ include: 'source.js.regexp' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_json: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.json',
- patterns: [{ include: 'source.json' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_jsonc: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.jsonc',
- patterns: [{ include: 'source.json.comments' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_julia: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.julia',
- patterns: [{ include: 'source.julia' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_latex: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(latex|tex)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.latex',
- patterns: [{ include: 'text.tex.latex' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_less: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.less',
- patterns: [{ include: 'source.css.less' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_log: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.log',
- patterns: [{ include: 'text.log' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_lua: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.lua',
- patterns: [{ include: 'source.lua' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_makefile: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.makefile',
- patterns: [{ include: 'source.makefile' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_markdown: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(markdown|md)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.markdown',
- patterns: [{ include: 'text.html.markdown' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_objc: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.objc',
- patterns: [{ include: 'source.objc' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_perl: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.perl',
- patterns: [{ include: 'source.perl' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_perl6: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.perl6',
- patterns: [{ include: 'source.perl.6' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_php: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.php',
- patterns: [{ include: 'text.html.basic' }, { include: 'source.php' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_powershell: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(powershell|ps1|psm1|psd1|pwsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.powershell',
- patterns: [{ include: 'source.powershell' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_pug: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.pug',
- patterns: [{ include: 'text.pug' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_python: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\{\\.python.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.python',
- patterns: [{ include: 'source.python' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_r: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(R|r|s|S|Rprofile|\\{\\.r.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.r',
- patterns: [{ include: 'source.r' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_regexp_python: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.regexp_python',
- patterns: [{ include: 'source.regexp.python' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_ruby: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.ruby',
- patterns: [{ include: 'source.ruby' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_rust: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.rust',
- patterns: [{ include: 'source.rust' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_scala: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scala|sbt)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.scala',
- patterns: [{ include: 'source.scala' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_scss: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.scss',
- patterns: [{ include: 'source.css.scss' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_shell: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.shellscript',
- patterns: [{ include: 'source.shell' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_sql: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.sql',
- patterns: [{ include: 'source.sql' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_swift: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.swift',
- patterns: [{ include: 'source.swift' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_ts: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(typescript|ts)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.typescript',
- patterns: [{ include: 'source.ts' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_tsx: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.typescriptreact',
- patterns: [{ include: 'source.tsx' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_twig: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.twig',
- patterns: [{ include: 'source.twig' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_unknown: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown'
- },
- fenced_code_block_vs_net: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.vs_net',
- patterns: [{ include: 'source.asp.vb.net' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_xml: {
- begin:
- '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.xml',
- patterns: [{ include: 'text.xml' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_xsl: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xsl|xslt)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.xsl',
- patterns: [{ include: 'text.xml.xsl' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- fenced_code_block_yaml: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(yaml|yml)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.yaml',
- patterns: [{ include: 'source.yaml' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- },
- frontMatter: {
- begin: '\\A-{3}\\s*$',
- contentName: 'meta.embedded.block.frontmatter',
- end: '(^|\\G)-{3}|\\.{3}\\s*$',
- patterns: [{ include: 'source.yaml' }]
- },
- heading: {
- captures: {
- '1': {
- patterns: [
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.6.markdown'
- },
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.5.markdown'
- },
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.4.markdown'
- },
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.3.markdown'
- },
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.2.markdown'
- },
- {
- captures: {
- '1': { name: 'punctuation.definition.heading.markdown' },
- '2': {
- name: 'entity.name.section.markdown',
- patterns: [{ include: '#inline' }, { include: 'text.html.derivative' }]
- },
- '3': { name: 'punctuation.definition.heading.markdown' }
- },
- match: '(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$',
- name: 'heading.1.markdown'
- }
- ]
- }
- },
- match: '(?:^|\\G)[ ]{0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$',
- name: 'markup.heading.markdown'
- },
- 'heading-setext': {
- patterns: [
- { match: '^(={3,})(?=[ \\t]*$\\n?)', name: 'markup.heading.setext.1.markdown' },
- { match: '^(-{3,})(?=[ \\t]*$\\n?)', name: 'markup.heading.setext.2.markdown' }
- ]
- },
- html: {
- patterns: [
- {
- begin: '(^|\\G)\\s*()',
- name: 'comment.block.html'
- },
- {
- begin: '(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|$|>)(?!.*?(script|style|pre)>))',
- end: '(?i)(.*)(()(script|style|pre)(>))',
- endCaptures: {
- '1': { patterns: [{ include: 'text.html.derivative' }] },
- '2': { name: 'meta.tag.structure.$4.end.html' },
- '3': { name: 'punctuation.definition.tag.begin.html' },
- '4': { name: 'entity.name.tag.html' },
- '5': { name: 'punctuation.definition.tag.end.html' }
- },
- patterns: [
- {
- begin: '(\\s*|$)',
- patterns: [{ include: 'text.html.derivative' }],
- while: '(?i)^(?!.*(script|style|pre)>)'
- }
- ]
- },
- {
- begin: '(?i)(^|\\G)\\s*(?=?[a-zA-Z]+[^\\s/>]*(\\s|$|/?>))',
- patterns: [{ include: 'text.html.derivative' }],
- while: '^(?!\\s*$)'
- },
- {
- begin: '(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|[a-zA-Z0-9\\-]>)\\s*$)',
- patterns: [{ include: 'text.html.derivative' }],
- while: '^(?!\\s*$)'
- }
- ]
- },
- 'image-inline': {
- captures: {
- '1': { name: 'punctuation.definition.link.description.begin.markdown' },
- '2': { name: 'string.other.link.description.markdown' },
- '4': { name: 'punctuation.definition.link.description.end.markdown' },
- '5': { name: 'punctuation.definition.metadata.markdown' },
- '7': { name: 'punctuation.definition.link.markdown' },
- '8': { name: 'markup.underline.link.image.markdown' },
- '9': { name: 'punctuation.definition.link.markdown' },
- '10': { name: 'markup.underline.link.image.markdown' },
- '12': { name: 'string.other.link.description.title.markdown' },
- '13': { name: 'punctuation.definition.string.begin.markdown' },
- '14': { name: 'punctuation.definition.string.end.markdown' },
- '15': { name: 'string.other.link.description.title.markdown' },
- '16': { name: 'punctuation.definition.string.begin.markdown' },
- '17': { name: 'punctuation.definition.string.end.markdown' },
- '18': { name: 'string.other.link.description.title.markdown' },
- '19': { name: 'punctuation.definition.string.begin.markdown' },
- '20': { name: 'punctuation.definition.string.end.markdown' },
- '21': { name: 'punctuation.definition.metadata.markdown' }
- },
- match: `(?x)
-(\\!\\[)((?[^\\[\\]\\\\]|\\\\.|\\[\\g*+\\])*+)(\\])
-
-(\\()
-
-[ \\t]*
-(
-(<)((?:\\\\[<>]|[^<>\\n])*)(>)
-| ((?(?>[^\\s()]+)|\\(\\g*\\))*)
-)
-[ \\t]*
-(?:
-((\\().+?(\\)))
-| ((").+?("))
-| ((').+?('))
-)?
-\\s*
-(\\))
-`,
- name: 'meta.image.inline.markdown'
- },
- 'image-ref': {
- captures: {
- '1': { name: 'punctuation.definition.link.description.begin.markdown' },
- '2': { name: 'string.other.link.description.markdown' },
- '4': { name: 'punctuation.definition.link.description.end.markdown' },
- '5': { name: 'punctuation.definition.constant.markdown' },
- '6': { name: 'constant.other.reference.link.markdown' },
- '7': { name: 'punctuation.definition.constant.markdown' }
- },
- match:
- '(\\!\\[)((?[^\\[\\]\\\\]|\\\\.|\\[\\g*+\\])*+)(\\])[ ]?(\\[)(.*?)(\\])',
- name: 'meta.image.reference.markdown'
- },
- inline: {
- patterns: [
- { include: '#ampersand' },
- { include: '#bracket' },
- { include: '#bold' },
- { include: '#italic' },
- { include: '#raw' },
- { include: '#strikethrough' },
- { include: '#escape' },
- { include: '#image-inline' },
- { include: '#image-ref' },
- { include: '#link-email' },
- { include: '#link-inet' },
- { include: '#link-inline' },
- { include: '#link-ref' },
- { include: '#link-ref-literal' },
- { include: '#link-ref-shortcut' }
- ]
- },
- italic: {
- begin:
- '(?x) (?(\\*(?=\\w)|(?]*+>\n| (?`+)([^`]|(?!(?(?!`))`)*+\\k\n\n| \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+\n| \\[\n(\n(?\n[^\\[\\]\\\\]\n| \\\\.\n| \\[ \\g*+ \\]\n)*+\n\\]\n(\n(\n[ ]?\n\\[[^\\]]*+\\]\n)\n| (\n\\(\n[ \\t]*+\n(.*?)>?\n[ \\t]*+\n(\n(?[\'"])\n(.*?)\n\\k\n)?\n\\)\n)\n)\n)\n| \\k\\k\n| (?!(?<=\\S)\\k).\n\n)++\n(?<=\\S)(?=_\\b|\\*)\\k\n)\n',
- captures: { '1': { name: 'punctuation.definition.italic.markdown' } },
- end: '(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))',
- name: 'markup.italic.markdown',
- patterns: [
- {
- applyEndPatternLast: true,
- begin: '(?=<[^>]*?>)',
- end: '(?<=>)',
- patterns: [{ include: 'text.html.derivative' }]
- },
- { include: '#escape' },
- { include: '#ampersand' },
- { include: '#bracket' },
- { include: '#raw' },
- { include: '#bold' },
- { include: '#image-inline' },
- { include: '#link-inline' },
- { include: '#link-inet' },
- { include: '#link-email' },
- { include: '#image-ref' },
- { include: '#link-ref-literal' },
- { include: '#link-ref' },
- { include: '#link-ref-shortcut' },
- { include: '#strikethrough' }
- ]
- },
- 'link-def': {
- captures: {
- '1': { name: 'punctuation.definition.constant.markdown' },
- '2': { name: 'constant.other.reference.link.markdown' },
- '3': { name: 'punctuation.definition.constant.markdown' },
- '4': { name: 'punctuation.separator.key-value.markdown' },
- '5': { name: 'punctuation.definition.link.markdown' },
- '6': { name: 'markup.underline.link.markdown' },
- '7': { name: 'punctuation.definition.link.markdown' },
- '8': { name: 'markup.underline.link.markdown' },
- '9': { name: 'string.other.link.description.title.markdown' },
- '10': { name: 'punctuation.definition.string.begin.markdown' },
- '11': { name: 'punctuation.definition.string.end.markdown' },
- '12': { name: 'string.other.link.description.title.markdown' },
- '13': { name: 'punctuation.definition.string.begin.markdown' },
- '14': { name: 'punctuation.definition.string.end.markdown' },
- '15': { name: 'string.other.link.description.title.markdown' },
- '16': { name: 'punctuation.definition.string.begin.markdown' },
- '17': { name: 'punctuation.definition.string.end.markdown' }
- },
- match: `(?x)
-\\s*
-(\\[)([^]]+?)(\\])(:)
-[ \\t]*
-(?:(<)((?:\\\\[<>]|[^<>\\n])*)(>)|(\\S+?))
-[ \\t]*
-(?:
-((\\().+?(\\)))
-| ((").+?("))
-| ((').+?('))
-)?
-\\s*
-$
-`,
- name: 'meta.link.reference.def.markdown'
- },
- 'link-email': {
- captures: {
- '1': { name: 'punctuation.definition.link.markdown' },
- '2': { name: 'markup.underline.link.markdown' },
- '4': { name: 'punctuation.definition.link.markdown' }
- },
- match:
- "(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)(>)",
- name: 'meta.link.email.lt-gt.markdown'
- },
- 'link-inet': {
- captures: {
- '1': { name: 'punctuation.definition.link.markdown' },
- '2': { name: 'markup.underline.link.markdown' },
- '3': { name: 'punctuation.definition.link.markdown' }
- },
- match: '(<)((?:https?|ftp)://.*?)(>)',
- name: 'meta.link.inet.markdown'
- },
- 'link-inline': {
- captures: {
- '1': { name: 'punctuation.definition.link.title.begin.markdown' },
- '2': {
- name: 'string.other.link.title.markdown',
- patterns: [
- { include: '#raw' },
- { include: '#bold' },
- { include: '#italic' },
- { include: '#strikethrough' },
- { include: '#image-inline' }
- ]
- },
- '4': { name: 'punctuation.definition.link.title.end.markdown' },
- '5': { name: 'punctuation.definition.metadata.markdown' },
- '7': { name: 'punctuation.definition.link.markdown' },
- '8': { name: 'markup.underline.link.markdown' },
- '9': { name: 'punctuation.definition.link.markdown' },
- '10': { name: 'markup.underline.link.markdown' },
- '12': { name: 'string.other.link.description.title.markdown' },
- '13': { name: 'punctuation.definition.string.begin.markdown' },
- '14': { name: 'punctuation.definition.string.end.markdown' },
- '15': { name: 'string.other.link.description.title.markdown' },
- '16': { name: 'punctuation.definition.string.begin.markdown' },
- '17': { name: 'punctuation.definition.string.end.markdown' },
- '18': { name: 'string.other.link.description.title.markdown' },
- '19': { name: 'punctuation.definition.string.begin.markdown' },
- '20': { name: 'punctuation.definition.string.end.markdown' },
- '21': { name: 'punctuation.definition.metadata.markdown' }
- },
- match: `(?x)
-(\\[)((?[^\\[\\]\\\\]|\\\\.|\\[\\g*+\\])*+)(\\])
-
-(\\()
-
-[ \\t]*
-(
-(<)((?:\\\\[<>]|[^<>\\n])*)(>)
-| ((?(?>[^\\s()]+)|\\(\\g*\\))*)
-)
-[ \\t]*
-
-(?:
-((\\()[^()]*(\\)))
-| ((")[^"]*("))
-| ((')[^']*('))
-)?
-\\s*
-(\\))
-`,
- name: 'meta.link.inline.markdown'
- },
- 'link-ref': {
- captures: {
- '1': { name: 'punctuation.definition.link.title.begin.markdown' },
- '2': {
- name: 'string.other.link.title.markdown',
- patterns: [
- { include: '#raw' },
- { include: '#bold' },
- { include: '#italic' },
- { include: '#strikethrough' },
- { include: '#image-inline' }
- ]
- },
- '4': { name: 'punctuation.definition.link.title.end.markdown' },
- '5': { name: 'punctuation.definition.constant.begin.markdown' },
- '6': { name: 'constant.other.reference.link.markdown' },
- '7': { name: 'punctuation.definition.constant.end.markdown' }
- },
- match:
- '(?[^\\[\\]\\\\]|\\\\.|\\[\\g*+\\])*+)(\\])(\\[)([^\\]]*+)(\\])',
- name: 'meta.link.reference.markdown'
- },
- 'link-ref-literal': {
- captures: {
- '1': { name: 'punctuation.definition.link.title.begin.markdown' },
- '2': { name: 'string.other.link.title.markdown' },
- '4': { name: 'punctuation.definition.link.title.end.markdown' },
- '5': { name: 'punctuation.definition.constant.begin.markdown' },
- '6': { name: 'punctuation.definition.constant.end.markdown' }
- },
- match:
- '(?[^\\[\\]\\\\]|\\\\.|\\[\\g*+\\])*+)(\\])[ ]?(\\[)(\\])',
- name: 'meta.link.reference.literal.markdown'
- },
- 'link-ref-shortcut': {
- captures: {
- '1': { name: 'punctuation.definition.link.title.begin.markdown' },
- '2': { name: 'string.other.link.title.markdown' },
- '3': { name: 'punctuation.definition.link.title.end.markdown' }
- },
- match: '(?]\\s|[0-9]+\\.\\s)',
- name: 'meta.paragraph.markdown',
- patterns: [
- { include: '#inline' },
- { include: 'text.html.derivative' },
- { include: '#heading-setext' }
- ],
- while:
- '(^|\\G)(?!\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\t]*$\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\.)'
- },
- lists: {
- patterns: [
- {
- begin: '(^|\\G)([ ]{0,3})([*+-])([ \\t])',
- beginCaptures: { '3': { name: 'punctuation.definition.list.begin.markdown' } },
- name: 'markup.list.unnumbered.markdown',
- patterns: [{ include: '#block' }, { include: '#list_paragraph' }],
- while: '((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)'
- },
- {
- begin: '(^|\\G)([ ]{0,3})([0-9]+[\\.\\)])([ \\t])',
- beginCaptures: { '3': { name: 'punctuation.definition.list.begin.markdown' } },
- name: 'markup.list.numbered.markdown',
- patterns: [{ include: '#block' }, { include: '#list_paragraph' }],
- while: '((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)'
- }
- ]
- },
- paragraph: {
- begin: '(^|\\G)[ ]{0,3}(?=[^ \\t\\n])',
- name: 'meta.paragraph.markdown',
- patterns: [
- { include: '#inline' },
- { include: 'text.html.derivative' },
- { include: '#heading-setext' }
- ],
- while: '(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=[^ \\t\\n]))'
- },
- raw: {
- captures: {
- '1': { name: 'punctuation.definition.raw.markdown' },
- '3': { name: 'punctuation.definition.raw.markdown' }
- },
- match: '(`+)((?:[^`]|(?!(?]*?>)',
- end: '(?<=>)',
- patterns: [{ include: 'text.html.derivative' }]
- },
- { include: '#escape' },
- { include: '#ampersand' },
- { include: '#bracket' },
- { include: '#raw' },
- { include: '#bold' },
- { include: '#italic' },
- { include: '#image-inline' },
- { include: '#link-inline' },
- { include: '#link-inet' },
- { include: '#link-email' },
- { include: '#image-ref' },
- { include: '#link-ref-literal' },
- { include: '#link-ref' },
- { include: '#link-ref-shortcut' }
- ]
- },
- '3': { name: 'punctuation.definition.strikethrough.markdown' }
- },
- match: '(?;
+export type CartaEvent = CustomEvent<{ carta: Carta }>;
const cartaEvents = ['carta-render', 'carta-render-ssr'] as const;
type CartaEventType = (typeof cartaEvents)[number];
-/**
- * Custom listeners for the textarea element.
- */
-export type Listener = [
+export type CartaListener = [
type: K,
listener: (
this: HTMLTextAreaElement,
ev: K extends CartaEventType
- ? Event
+ ? CartaEvent
: K extends keyof HTMLElementEventMap
- ? HTMLElementEventMap[K]
- : Event
+ ? HTMLElementEventMap[K]
+ : Event
) => unknown,
options?: boolean | AddEventListenerOptions
];
-/**
- * Custom Svelte component for extensions.
- */
-export interface ExtensionComponent {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+type CartaListeners = CartaListener[];
+
+type MaybeArray = T | Array;
+
+export interface CartaExtensionComponent {
/**
* Svelte components that exports `carta: Carta` and all the other properties specified in `props`.
*/
- component: typeof SvelteComponent;
+ component: typeof SvelteComponentTyped;
/**
* Properties that will be handed to the component.
*/
@@ -67,22 +59,16 @@ export interface ExtensionComponent {
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
-type Listeners = Listener[];
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-type ExtensionComponents = Array>;
+type CartaExtensionComponents = Array>;
/**
* Carta editor options.
*/
-export interface Options {
- /**
- * GitHub Flavored Markdown options.
- */
- gfmOptions?: GfmOptions;
+export interface CartaOptions {
/**
* Editor/viewer extensions.
*/
- extensions?: Plugin[];
+ extensions?: CartaExtension[];
/**
* Renderer debouncing timeout, in ms.
* @defaults 300ms
@@ -103,47 +89,21 @@ export interface Options {
/**
* History (Undo/Redo) options.
*/
- historyOptions?: TextAreaHistoryOptions;
+ historyOptions?: Partial;
/**
* HTML sanitizer.
*/
- sanitizer: ((html: string) => string) | false;
- /**
- * Highlighter options.
- */
- shikiOptions?: ShikiOptions;
- /**
- * ShikiJS theme
- * @default 'carta-light' for light mode and 'carta-dark' for dark mode.
- */
- theme?: Theme | DualTheme;
+ sanitizer?: (html: string) => string;
}
-/**
- * Unified transformers plugins.
- */
-export type UnifiedTransformer = {
- execution: 'sync' | 'async';
- type: 'remark' | 'rehype';
- transform: ({
- processor,
- carta
- }: {
- processor: Processor;
- carta: Carta;
- }) => E extends 'sync' ? void : Promise;
-};
-
/**
* Carta editor extensions.
*/
-export interface Plugin {
+export interface CartaExtension {
/**
- * Unified transformers plugins.
- * @important If the plugin is async, it will not run in SSR rendering.
+ * Marked extensions, more on that [here](https://marked.js.org/using_advanced).
*/
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- transformers?: UnifiedTransformer<'sync' | 'async'>[];
+ markedExtensions?: MarkedExtension[];
/**
* Additional keyboard shortcuts.
*/
@@ -151,7 +111,7 @@ export interface Plugin {
/**
* Additional icons.
*/
- icons?: Icon[];
+ icons?: CartaIcon[];
/**
* Additional prefixes.
*/
@@ -159,78 +119,58 @@ export interface Plugin {
/**
* Textarea event listeners.
*/
- listeners?: Listeners;
+ listeners?: CartaListeners;
/**
* Additional components, that will be put after the editor.
* All components are given a `carta: Carta` prop.
* The editor has a `relative` position, so you can position
* elements absolutely.
*/
- components?: ExtensionComponents;
+ components?: CartaExtensionComponents;
/**
- * Custom markdown grammar highlight rules for ShiKi.
+ * Custom markdown highlight rules. See [Speed-Highlight Wiki](https://github.com/speed-highlight/core/wiki/Create-or-suggest-new-languages).
*/
- grammarRules?: GrammarRule[];
- /**
- * Custom markdown highlighting rules for ShiKi.
- */
- highlightingRules?: HighlightingRule[];
+ highlightRules?: ShjLanguageDefinition;
/**
* Use this callback to execute code when one Carta instance loads the extension.
* @param data General Carta related data.
*/
- onLoad?: (data: { carta: Carta }) => void;
+ onLoad?: (data: { carta: Carta; highlight: HighlightFunctions }) => void;
+ /**
+ * This function can be used to access a reference to the `Carta` class immediately after initialization.
+ * @deprecated Use `onLoad` instead.
+ */
+ cartaRef?: (carta: Carta) => void;
+ /**
+ * This function can be used to access a reference to all highlight functions immediately after initialization.
+ * @deprecated Use `onLoad` instead.
+ */
+ shjRef?: (functions: HighlightFunctions) => void;
}
export class Carta {
- public readonly sanitizer?: (html: string) => string;
- public readonly historyOptions?: TextAreaHistoryOptions;
- public readonly theme?: Theme | DualTheme;
- public readonly shikiOptions?: ShikiOptions;
- public readonly rendererDebounce: number;
public readonly keyboardShortcuts: KeyboardShortcut[];
- public readonly icons: Icon[];
+ public readonly icons: CartaIcon[];
public readonly prefixes: Prefix[];
- public readonly grammarRules: GrammarRule[];
- public readonly highlightingRules: HighlightingRule[];
- public readonly textareaListeners: Listeners;
- public readonly cartaListeners: Listeners;
- public readonly components: ExtensionComponents;
+ public readonly highlightRules: ShjLanguageDefinition;
+ public readonly textareaListeners: CartaListeners;
+ public readonly cartaListeners: CartaListeners;
+ public readonly components: CartaExtensionComponents;
public readonly dispatcher = new EventTarget();
- public readonly syncProcessor: Processor;
- public readonly asyncProcessor: Promise;
-
- private mElement: HTMLDivElement | undefined;
- private mInput: InputEnhancer | undefined;
- private mRenderer: Renderer | undefined;
- private mHighlighter: Highlighter | Promise | undefined;
- private mSyncTransformers: UnifiedTransformer<'sync'>[] = [];
- private mAsyncTransformers: UnifiedTransformer<'async'>[] = [];
+ public readonly markedAsync = new Marked();
+ public readonly markedSync = new Marked();
+ private _element: HTMLDivElement | undefined;
+ private _input: CartaInput | undefined;
+ private _renderer: CartaRenderer | undefined;
public get element() {
- return this.mElement;
+ return this._element;
}
public get input() {
- return this.mInput;
+ return this._input;
}
public get renderer() {
- return this.mRenderer;
- }
-
- public async highlighter(): Promise {
- if (!this.mHighlighter) {
- const promise = async () => {
- return loadHighlighter({
- theme: this.theme ?? (await loadDefaultTheme()),
- grammarRules: this.grammarRules,
- highlightingRules: this.highlightingRules,
- shiki: this.shikiOptions
- });
- };
- this.mHighlighter = promise();
- this.mHighlighter = await this.mHighlighter;
- }
- return this.mHighlighter;
+ return this._renderer;
}
private elementsToBind: {
@@ -239,31 +179,23 @@ export class Carta {
callback: (() => void) | undefined;
}[] = [];
- public constructor(options?: Options) {
- this.sanitizer = options?.sanitizer || undefined;
- this.historyOptions = options?.historyOptions;
- this.theme = options?.theme;
- this.shikiOptions = options?.shikiOptions;
- this.rendererDebounce = options?.rendererDebounce ?? 300;
-
- // Load plugins
+ public constructor(public readonly options?: CartaOptions) {
this.keyboardShortcuts = [];
this.icons = [];
this.prefixes = [];
this.textareaListeners = [];
this.cartaListeners = [];
this.components = [];
- this.grammarRules = [];
- this.highlightingRules = [];
+ this.highlightRules = [];
const listeners = [];
+
for (const ext of options?.extensions ?? []) {
this.keyboardShortcuts.push(...(ext.shortcuts ?? []));
this.icons.push(...(ext.icons ?? []));
this.prefixes.push(...(ext.prefixes ?? []));
this.components.push(...(ext.components ?? []));
- this.grammarRules.push(...(ext.grammarRules ?? []));
- this.highlightingRules.push(...(ext.highlightingRules ?? []));
+ this.highlightRules.push(...(ext.highlightRules ?? []));
listeners.push(...(ext.listeners ?? []));
}
@@ -300,82 +232,43 @@ export class Carta {
)
);
- // Load unified extensions
- this.mSyncTransformers = [];
- this.mAsyncTransformers = [];
+ // Load marked extensions
+ const markedExtensions = this.options?.extensions
+ ?.flatMap((ext) => ext.markedExtensions)
+ .filter((ext) => ext != null) as MarkedExtension[] | undefined;
+ if (markedExtensions)
+ markedExtensions.forEach((ext) => {
+ this.useMarkedExtension(ext);
+ });
- for (const ext of options?.extensions ?? []) {
- for (const transformer of ext.transformers ?? []) {
- if (transformer.execution === 'sync') {
- this.mSyncTransformers.push(transformer);
- } else {
- this.mAsyncTransformers.push(transformer);
- }
- }
- }
+ // Load highlight custom language
+ loadCustomMarkdown(this.options?.extensions ?? [])
+ // trigger re-render
+ .then(() => this.input?.update());
- this.syncProcessor = this.setupSynchronousProcessor({ gfmOptions: options?.gfmOptions });
- this.asyncProcessor = this.setupAsynchronousProcessor({ gfmOptions: options?.gfmOptions });
-
- for (const ext of options?.extensions ?? []) {
- if (ext.onLoad) {
- ext.onLoad({
- carta: this
+ for (const ext of this.options?.extensions ?? []) {
+ ext.cartaRef && ext.cartaRef(this);
+ ext.shjRef &&
+ ext.shjRef({
+ highlight,
+ highlightAutodetect,
+ loadCustomLanguage
+ });
+ ext.onLoad &&
+ ext.onLoad({
+ carta: this,
+ highlight: {
+ highlight,
+ highlightAutodetect,
+ loadCustomLanguage
+ }
});
- }
}
}
- private setupSynchronousProcessor({ gfmOptions }: { gfmOptions?: GfmOptions }) {
- const syncProcessor = unified();
-
- const remarkPlugins = this.mSyncTransformers.filter((it) => it.type === 'remark');
- const rehypePlugins = this.mSyncTransformers.filter((it) => it.type === 'rehype');
-
- syncProcessor.use(remarkParse);
- syncProcessor.use(remarkGfm, gfmOptions);
-
- for (const plugin of remarkPlugins) {
- plugin.transform({ processor: syncProcessor, carta: this });
- }
-
- syncProcessor.use(remarkRehype);
-
- for (const plugin of rehypePlugins) {
- plugin.transform({ processor: syncProcessor, carta: this });
- }
-
- syncProcessor.use(rehypeStringify);
-
- return syncProcessor;
- }
-
- private async setupAsynchronousProcessor({ gfmOptions }: { gfmOptions?: GfmOptions }) {
- const asyncProcessor = unified();
-
- const remarkPlugins = [...this.mSyncTransformers, ...this.mAsyncTransformers].filter(
- (it) => it.type === 'remark'
- );
- const rehypePlugins = [...this.mSyncTransformers, ...this.mAsyncTransformers].filter(
- (it) => it.type === 'rehype'
- );
-
- asyncProcessor.use(remarkParse);
- asyncProcessor.use(remarkGfm, gfmOptions);
-
- for (const plugin of remarkPlugins) {
- await plugin.transform({ processor: asyncProcessor, carta: this });
- }
-
- asyncProcessor.use(remarkRehype);
-
- for (const plugin of rehypePlugins) {
- await plugin.transform({ processor: asyncProcessor, carta: this });
- }
-
- asyncProcessor.use(rehypeStringify);
-
- return asyncProcessor;
+ private useMarkedExtension(exts: MarkedExtension) {
+ this.markedAsync.use(exts);
+ if (!exts.async) this.markedSync.use(exts);
}
/**
@@ -384,13 +277,12 @@ export class Carta {
* @returns Rendered html.
*/
public async render(markdown: string): Promise {
- const processor = await this.asyncProcessor;
- const dirty = String(await processor.process(markdown));
+ const dirty = await this.markedAsync.parse(markdown, { async: true });
if (!dirty) return '';
this.dispatcher.dispatchEvent(
new CustomEvent<{ carta: Carta }>('carta-render', { detail: { carta: this } })
);
- return (this.sanitizer && this.sanitizer(dirty)) ?? dirty;
+ return (this.options?.sanitizer && this.options?.sanitizer(dirty)) ?? dirty;
}
/**
@@ -399,12 +291,12 @@ export class Carta {
* @returns Rendered html.
*/
public renderSSR(markdown: string): string {
- const dirty = String(this.syncProcessor.processSync(markdown));
+ const dirty = this.markedSync.parse(markdown, { async: false });
if (typeof dirty != 'string') return '';
this.dispatcher.dispatchEvent(
new CustomEvent<{ carta: Carta }>('carta-render-ssr', { detail: { carta: this } })
);
- if (this.sanitizer) return this.sanitizer(dirty);
+ if (this.options?.sanitizer) return this.options.sanitizer(dirty);
return dirty;
}
@@ -413,7 +305,7 @@ export class Carta {
* @param element The editor element.
*/
public $setElement(element: HTMLDivElement) {
- this.mElement = element;
+ this._element = element;
}
/**
@@ -423,29 +315,22 @@ export class Carta {
*/
public $setInput(textarea: HTMLTextAreaElement, container: HTMLDivElement, callback: () => void) {
// Remove old listeners if any
- const previousInput = this.input;
+ this.input?.events.removeEventListener('update', callback);
- this.mInput = new InputEnhancer(textarea, container, {
+ this._input = new CartaInput(textarea, container, {
shortcuts: this.keyboardShortcuts,
prefixes: this.prefixes,
listeners: this.textareaListeners,
- historyOpts: this.historyOptions
+ historyOpts: this.options?.historyOptions
});
- if (previousInput) {
- previousInput.events.removeEventListener('update', callback);
- this.mInput.history = previousInput.history;
- }
-
- this.mInput.events.addEventListener('update', callback);
+ this._input.events.addEventListener('update', callback);
// Bind elements
this.elementsToBind.forEach((it) => {
- it.callback = this.input?.$bindToCaret(it.elem, {
- portal: it.portal,
- editorElement: this.element
- }).destroy;
+ it.callback = this.input?.$bindToCaret(it.elem, it.portal).destroy;
});
+ this.elementsToBind = [];
}
/**
@@ -453,7 +338,7 @@ export class Carta {
* @param container Div container of the rendered element.
*/
public $setRenderer(container: HTMLDivElement) {
- this.mRenderer = new Renderer(container);
+ this._renderer = new CartaRenderer(container);
}
/**
@@ -474,20 +359,25 @@ export class Carta {
*
* ```
*/
- public bindToCaret(element: HTMLElement, portal = document.querySelector('body') as HTMLElement) {
- let callback: (() => void) | undefined;
+ public bindToCaret(
+ element: HTMLElement,
+ portal = document.querySelector('body') as HTMLBodyElement
+ ) {
+ if (this.input) {
+ return this.input.$bindToCaret(element, portal);
+ } else {
+ let callback: (() => void) | undefined;
- if (this.input)
- callback = this.input.$bindToCaret(element, { portal, editorElement: this.element }).destroy;
+ // Bind the element later, when the input is ready
+ this.elementsToBind.push({ elem: element, portal, callback });
- // Bind the element later, when the input is ready
- this.elementsToBind.push({ elem: element, portal, callback });
-
- return {
- destroy: () => {
- callback && callback();
- this.elementsToBind = this.elementsToBind.filter((it) => it.elem != element);
- }
- };
+ return {
+ destroy() {
+ if (callback) {
+ callback();
+ }
+ }
+ };
+ }
}
}
diff --git a/packages/carta-md/src/lib/internal/components/Renderer.svelte b/packages/carta-md/src/lib/internal/components/CartaRenderer.svelte
similarity index 82%
rename from packages/carta-md/src/lib/internal/components/Renderer.svelte
rename to packages/carta-md/src/lib/internal/components/CartaRenderer.svelte
index 1141749..c615348 100644
--- a/packages/carta-md/src/lib/internal/components/Renderer.svelte
+++ b/packages/carta-md/src/lib/internal/components/CartaRenderer.svelte
@@ -8,12 +8,11 @@
export let elem: HTMLDivElement;
export let handleScroll: (e: UIEvent) => void;
- let mounted = false;
let renderedHtml = carta.renderSSR(value);
const debouncedRenderer = debounce(() => {
carta.render(value).then((rendered) => (renderedHtml = rendered));
- }, carta.rendererDebounce ?? 300);
+ }, carta.options?.rendererDebounce ?? 300);
$: {
// On value updates
@@ -21,16 +20,15 @@
debouncedRenderer();
}
- onMount(() => carta.$setRenderer(elem));
- onMount(() => (mounted = true));
+ onMount(() => {
+ carta.$setRenderer(elem);
+ });
{@html renderedHtml}
- {#if mounted}
-
- {/if}
+
diff --git a/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte b/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte
new file mode 100644
index 0000000..7cca292
--- /dev/null
+++ b/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte
@@ -0,0 +1,127 @@
+
+
+
+
+
diff --git a/packages/carta-md/src/lib/internal/components/Toolbar.svelte b/packages/carta-md/src/lib/internal/components/Toolbar.svelte
deleted file mode 100644
index 1135bce..0000000
--- a/packages/carta-md/src/lib/internal/components/Toolbar.svelte
+++ /dev/null
@@ -1,197 +0,0 @@
-
-
-
-
-
-
-{#if showMenu && iconsHidden}
-
-{/if}
-
-
diff --git a/packages/carta-md/src/lib/internal/components/icons/MenuIcon.svelte b/packages/carta-md/src/lib/internal/components/icons/MenuIcon.svelte
deleted file mode 100644
index 88d4ccc..0000000
--- a/packages/carta-md/src/lib/internal/components/icons/MenuIcon.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/packages/carta-md/src/lib/internal/highlight.ts b/packages/carta-md/src/lib/internal/highlight.ts
index 16cfddf..5c5a5c9 100644
--- a/packages/carta-md/src/lib/internal/highlight.ts
+++ b/packages/carta-md/src/lib/internal/highlight.ts
@@ -1,268 +1,90 @@
+import { detectLanguage } from '@speed-highlight/core/detect.js';
import {
- getHighlighter,
- type BundledTheme,
- type ThemeInput,
- type StringLiteralUnion,
- type BundledLanguage,
- type SpecialLanguage,
- type LanguageInput,
- type LanguageRegistration,
- type HighlighterGeneric,
- bundledLanguages,
- bundledThemes,
- type ThemeRegistration
-} from 'shiki';
-import type { Intellisense } from './utils';
+ highlightText,
+ loadLanguage,
+ type ShjLanguage,
+ type ShjLanguageDefinition
+} from '@speed-highlight/core';
+import type { CartaExtension } from './carta';
+import cartaMarkdown from './shj';
+
+// Workaround to add intellisense
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+interface Nothing {}
+type Union = T | (U & Nothing);
+
+type Lang = Union;
/**
- * Custom TextMate grammar rule for the highlighter.
+ * Highlight text using Speed-Highlight. May return null on error(usually if requested
+ * language is not supported).
+ * @param text Text to highlight.
+ * @param lang Language to use, for example "js" or "c"
+ * @param hideLineNumbers Whether to hide line numbering.
+ * @returns Highlighted html text.
*/
-export type GrammarRule = {
- name: string;
- type: 'block' | 'inline';
- definition: LanguageRegistration['repository'][string];
-};
-
-/**
- * Custom TextMate highlighting rule for the highlighter.
- */
-export type HighlightingRule = {
- light: NonNullable[number];
- dark: NonNullable[number];
-};
-
-/**
- * Shiki options for the highlighter.
- */
-export type ShikiOptions = {
- themes?: Array>;
- langs?: (LanguageInput | StringLiteralUnion | SpecialLanguage)[];
-};
-
-type CustomMarkdownLangName = Awaited<(typeof import('./assets/markdown'))['default']['name']>;
-type DefaultLightThemeName = Awaited<(typeof import('./assets/theme-light'))['default']['name']>;
-type DefaultDarkThemeName = Awaited<(typeof import('./assets/theme-dark'))['default']['name']>;
-export const customMarkdownLangName: CustomMarkdownLangName = 'cartamd';
-export const defaultLightThemeName: DefaultLightThemeName = 'carta-light';
-export const defaultDarkThemeName: DefaultDarkThemeName = 'carta-dark';
-export const loadDefaultTheme = async (): Promise<{
- light: ThemeRegistration;
- dark: ThemeRegistration;
-}> => ({
- light: structuredClone((await import('./assets/theme-light')).default),
- dark: structuredClone((await import('./assets/theme-dark')).default)
-});
-
-/**
- * Language for the highlighter.
- */
-export type Language = Intellisense;
-/**
- * Theme name for the highlighter.
- */
-export type ThemeName = Intellisense;
-/**
- * Theme for the highlighter.
- */
-export type Theme = ThemeName | ThemeRegistration;
-/**
- * Dual theme for light and dark mode.
- */
-export type DualTheme = {
- light: Theme;
- dark: Theme;
-};
-
-/**
- * Options for the highlighter.
- */
-export type HighlighterOptions = {
- grammarRules: GrammarRule[];
- highlightingRules: HighlightingRule[];
- theme: Theme | DualTheme;
- shiki?: ShikiOptions;
-};
-
-/**
- * Loads the highlighter instance, with custom rules and options. Uses Shiki under the hood.
- * @param rules Custom rules for the highlighter, from plugins.
- * @param options Custom options for the highlighter.
- * @returns The highlighter instance.
- */
-export async function loadHighlighter({
- grammarRules,
- highlightingRules,
- theme,
- shiki
-}: HighlighterOptions): Promise {
- // Inject rules into the custom markdown language
- const injectGrammarRules = (
- lang: Awaited<(typeof import('./assets/markdown'))['default']>,
- rules: GrammarRule[]
- ) => {
- lang.repository = {
- ...langDefinition.repository,
- ...Object.fromEntries(rules.map(({ name, definition }) => [name, definition]))
- };
- for (const rule of rules) {
- if (rule.type === 'block') {
- lang.repository.block.patterns.unshift({ include: `#${rule.name}` });
- } else {
- lang.repository.inline.patterns.unshift({ include: `#${rule.name}` });
- }
- }
- };
-
- const injectHighlightRules = (theme: ThemeRegistration, rules: HighlightingRule[]) => {
- if (theme.type === 'light') {
- theme.tokenColors ||= [];
- theme.tokenColors.unshift(...rules.map(({ light }) => light));
- } else {
- theme.tokenColors ||= [];
- theme.tokenColors.unshift(...rules.map(({ dark }) => dark));
- }
- };
-
- // Additional themes and languages provided by the user
- const themes = shiki?.themes ?? [];
- const langs = shiki?.langs ?? [];
-
- const highlighter: HighlighterGeneric = await getHighlighter({
- themes,
- langs
- });
-
- // Custom markdown language
- const langDefinition = (await import('./assets/markdown')).default;
- injectGrammarRules(langDefinition, grammarRules);
- await highlighter.loadLanguage(langDefinition);
-
- // Custom themes
- if (isSingleTheme(theme)) {
- let registration: ThemeRegistration;
- if (isThemeRegistration(theme)) {
- registration = theme;
- } else {
- registration = (await bundledThemes[theme as BundledTheme]()).default;
- }
-
- injectHighlightRules(registration, highlightingRules);
-
- await highlighter.loadTheme(registration);
- } else {
- const { light, dark } = theme;
-
- let lightRegistration: ThemeRegistration;
- let darkRegistration: ThemeRegistration;
-
- if (isThemeRegistration(light)) {
- lightRegistration = light;
- } else {
- lightRegistration = (await bundledThemes[light as BundledTheme]()).default;
- }
-
- if (isThemeRegistration(dark)) {
- darkRegistration = dark;
- } else {
- darkRegistration = (await bundledThemes[dark as BundledTheme]()).default;
- }
-
- injectHighlightRules(lightRegistration, highlightingRules);
- injectHighlightRules(darkRegistration, highlightingRules);
-
- await highlighter.loadTheme(lightRegistration);
- await highlighter.loadTheme(darkRegistration);
+export async function highlight(
+ text: string,
+ lang: Lang,
+ hideLineNumbers?: boolean
+): Promise {
+ try {
+ return await highlightText(text, lang, true, { hideLineNumbers: hideLineNumbers ?? true });
+ } catch (_) {
+ return null;
}
-
- return {
- theme,
- lang: customMarkdownLangName,
- ...highlighter
- };
-}
-export interface Highlighter extends HighlighterGeneric {
- /**
- * The language specified for the highlighter.
- */
- theme: Theme | DualTheme;
- /**
- * The theme specified for the highlighter.
- */
- lang: Language;
}
/**
- * Checks if a language is a bundled language.
- * @param lang The language to check.
- * @returns Whether the language is a bundled language.
+ * Highlight text using Speed-Highlight with detected language.
+ * @param text Text to highlight.
+ * @param hideLineNumbers Whether to hide line numbering.
+ * @returns Highlighted html text.
*/
-export const isBundleLanguage = (lang: string): lang is BundledLanguage =>
- Object.keys(bundledLanguages).includes(lang);
-/**
- * Checks if a theme is a bundled theme.
- * @param theme The theme to check.
- * @returns Whether the theme is a bundled theme.
- */
-export const isBundleTheme = (theme: string): theme is BundledTheme =>
- Object.keys(bundledThemes).includes(theme);
-/**
- * Checks if a theme is a dual theme.
- * @param theme The theme to check.
- * @returns Whether the theme is a dual theme.
- */
-export const isDualTheme = (theme: Theme | DualTheme): theme is DualTheme =>
- typeof theme == 'object' && 'light' in theme && 'dark' in theme;
-/**
- * Checks if a theme is a single theme.
- * @param theme The theme to check.
- * @returns Whether the theme is a single theme.
- */
-export const isSingleTheme = (theme: Theme | DualTheme): theme is Theme => !isDualTheme(theme);
-/**
- * Checks if a theme is a theme registration.
- * @param theme The theme to check.
- * @returns Whether the theme is a theme registration.
- */
-export const isThemeRegistration = (theme: Theme): theme is ThemeRegistration =>
- typeof theme == 'object';
+export async function highlightAutodetect(text: string, hideLineNumbers?: boolean) {
+ const lang = await detectLanguage(text);
+ return await highlightText(text, lang, true, { hideLineNumbers: hideLineNumbers ?? true });
+}
/**
- * Find all nested languages in the markdown text and load them into the highlighter.
- * @param text Markdown text to parse for nested languages.
- * @returns The set of nested languages found in the text.
+ * Load a custom language for reference in highlight rules.
+ * @param id Id of the language.
+ * @param langModule A module that has the default export set to an array of HighlightRule.
+ * @example
+ * ```
+ * // language.ts
+ * import type { HighlightLanguage } from 'carta-md';
+ *
+ * export default [
+ * {
+ * match: /helloworld/g,
+ * type: 'kwd'
+ * }
+ * ] satisfies HighlightLanguage;
+ * ```
+ * And in another file:
+ * ```
+ * import("./path/to/language")
+ * .then(module => Carta.loadCustomLanguage("lang-name", module));
+ * ```
*/
-const findNestedLanguages = (text: string) => {
- const languages = new Set();
+export function loadCustomLanguage(id: string, langModule: { default: ShjLanguageDefinition }) {
+ return loadLanguage(id, langModule);
+}
- const regex = /```([a-z]+)\n([\s\S]+?)\n```/g;
- let match: RegExpExecArray | null;
- while ((match = regex.exec(text))) {
- languages.add(match[1]);
- }
- return languages;
-};
+export interface HighlightFunctions {
+ highlight: typeof highlight;
+ highlightAutodetect: typeof highlightAutodetect;
+ loadCustomLanguage: typeof loadCustomLanguage;
+}
/**
- * Load all nested languages found in the markdown text into the highlighter.
- * @param highlighter The highlighter instance.
- * @param text The text to parse for nested languages.
- * @returns Whether the highlighter was updated with new languages.
+ * Load custom markdown syntax highlighting rules.
+ * Automatically called when a Carta instance is created.
+ * @param extensions Additional extensions used in Carta.
*/
-export const loadNestedLanguages = async (highlighter: Highlighter, text: string) => {
- text = text.replaceAll('\r\n', '\n'); // Normalize line endings
-
- const languages = findNestedLanguages(text);
- const loadedLanguages = highlighter.getLoadedLanguages();
- let updated = false;
- for (const lang of languages) {
- if (isBundleLanguage(lang) && !loadedLanguages.includes(lang)) {
- await highlighter.loadLanguage(lang);
- loadedLanguages.push(lang);
- updated = true;
- }
- }
-
- return {
- updated
- };
-};
+export async function loadCustomMarkdown(extensions: CartaExtension[] = []) {
+ const highlightRules = extensions.map((ext) => ext.highlightRules ?? []).flat();
+ const lang = Array.prototype.concat(cartaMarkdown, highlightRules);
+ loadCustomLanguage('cartamd', { default: lang });
+}
diff --git a/packages/carta-md/src/lib/internal/history.ts b/packages/carta-md/src/lib/internal/history.ts
index 450c1a7..60916d9 100644
--- a/packages/carta-md/src/lib/internal/history.ts
+++ b/packages/carta-md/src/lib/internal/history.ts
@@ -6,20 +6,20 @@ interface HistoryState {
cursor: number;
}
-export interface TextAreaHistoryOptions {
+export interface CartaHistoryOptions {
/**
* Minimum interval between save states in ms.
* @default 300ms
*/
- minInterval?: number;
+ minInterval: number;
/**
* Maximum history size in bytes.
* @default 1MB
*/
- maxSize?: number;
+ maxSize: number;
}
-const defaultHistoryOptions: TextAreaHistoryOptions = {
+const defaultHistoryOptions: CartaHistoryOptions = {
minInterval: 300,
maxSize: 1_000_000
};
@@ -27,11 +27,11 @@ const defaultHistoryOptions: TextAreaHistoryOptions = {
/**
* Input undo/redo functionality.
*/
-export class TextAreaHistory {
+export class CartaHistory {
private states: HistoryState[] = [];
private currentIndex = -1; // Only <= 0 numbers
- private readonly options: TextAreaHistoryOptions;
- constructor(options?: Partial) {
+ private readonly options: CartaHistoryOptions;
+ constructor(options?: Partial) {
this.options = mergeDefaultInterface(options, defaultHistoryOptions);
}
@@ -79,7 +79,7 @@ export class TextAreaHistory {
}
this.currentIndex = -1;
- if (latest && Date.now() - latest.timestamp.getTime() <= (this.options.minInterval ?? 300)) {
+ if (latest && Date.now() - latest.timestamp.getTime() <= this.options.minInterval) {
this.states.pop();
}
@@ -94,7 +94,7 @@ export class TextAreaHistory {
// every char is 2 bytes
size += value.length * 2;
- while (size > (this.options.maxSize ?? 1_000_000)) {
+ while (size > this.options.maxSize) {
const removed = this.states.shift();
if (!removed) break; // This should never happen
size -= removed.value.length * 2;
diff --git a/packages/carta-md/src/lib/internal/icons.ts b/packages/carta-md/src/lib/internal/icons.ts
index f5f8374..09ff109 100644
--- a/packages/carta-md/src/lib/internal/icons.ts
+++ b/packages/carta-md/src/lib/internal/icons.ts
@@ -1,5 +1,5 @@
import type { ComponentType } from 'svelte';
-import type { InputEnhancer } from './input';
+import type { CartaInput } from './input';
import HeadingIcon from './components/icons/HeadingIcon.svelte';
import ItalicIcon from './components/icons/ItalicIcon.svelte';
import BoldIcon from './components/icons/BoldIcon.svelte';
@@ -14,62 +14,42 @@ import StrikethroughIcon from './components/icons/StrikethroughIcon.svelte';
/**
* Editor toolbar icon information.
*/
-export interface Icon {
- /**
- * The icon's unique identifier.
- */
+export interface CartaIcon {
id: string;
- /**
- * Callback function to execute when the icon is clicked.
- * @param input InputEnhancer instance
- */
- action: (input: InputEnhancer) => void;
- /**
- * The icon's component.
- */
+ action: (input: CartaInput) => void;
component: ComponentType;
- /**
- * The icon's label (used as aria-label).
- */
- label?: string;
}
export const defaultIcons = [
{
id: 'heading',
action: (input) => input.toggleLinePrefix('###'),
- component: HeadingIcon,
- label: 'Heading'
+ component: HeadingIcon
},
{
id: 'bold',
action: (input) => input.toggleSelectionSurrounding('**'),
- component: BoldIcon,
- label: 'Bold'
+ component: BoldIcon
},
{
id: 'italic',
action: (input) => input.toggleSelectionSurrounding('_'),
- component: ItalicIcon,
- label: 'Italic'
+ component: ItalicIcon
},
{
id: 'strikethrough',
action: (input) => input.toggleSelectionSurrounding('~~'),
- component: StrikethroughIcon,
- label: 'Strikethrough'
+ component: StrikethroughIcon
},
{
id: 'quote',
action: (input) => input.toggleLinePrefix('>'),
- component: QuoteIcon,
- label: 'Quote'
+ component: QuoteIcon
},
{
id: 'code',
action: (input) => input.toggleSelectionSurrounding('`'),
- component: CodeIcon,
- label: 'Code'
+ component: CodeIcon
},
{
id: 'link',
@@ -79,27 +59,23 @@ export const defaultIcons = [
input.insertAt(position, '(url)');
input.textarea.setSelectionRange(position + 1, position + 4);
},
- component: LinkIcon,
- label: 'Link'
+ component: LinkIcon
},
{
id: 'bulletedList',
action: (input) => input.toggleLinePrefix('- ', 'detach'),
- component: ListBulletedIcon,
- label: 'Bulleted list'
+ component: ListBulletedIcon
},
{
id: 'numberedList',
action: (input) => input.toggleLinePrefix('1. ', 'detach'),
- component: ListNumberedIcon,
- label: 'Numbered list'
+ component: ListNumberedIcon
},
{
id: 'taskList',
action: (input) => input.toggleLinePrefix('- [ ] ', 'detach'),
- component: ListTaskIcon,
- label: 'Task list'
+ component: ListTaskIcon
}
-] as const satisfies readonly Icon[];
+] as const satisfies readonly CartaIcon[];
-export type DefaultIconId = (typeof defaultIcons)[number]['id'] | 'menu';
+export type DefaultIconId = (typeof defaultIcons)[number]['id'];
diff --git a/packages/carta-md/src/lib/internal/input.ts b/packages/carta-md/src/lib/internal/input.ts
index 13046fc..39ba4e3 100644
--- a/packages/carta-md/src/lib/internal/input.ts
+++ b/packages/carta-md/src/lib/internal/input.ts
@@ -1,7 +1,7 @@
-import type { Listener } from './carta';
+import type { CartaListener } from './carta';
import type { Prefix } from './prefixes';
import type { KeyboardShortcut } from './shortcuts';
-import { TextAreaHistory as TextAreaHistory, type TextAreaHistoryOptions } from './history';
+import { CartaHistory, type CartaHistoryOptions } from './history';
import { areEqualSets } from './utils';
/**
@@ -21,17 +21,16 @@ export interface InputSettings {
readonly shortcuts: KeyboardShortcut[];
readonly prefixes: Prefix[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- readonly listeners: Listener[];
- readonly historyOpts?: Partial;
+ readonly listeners: CartaListener[];
+ readonly historyOpts?: Partial;
}
-export class InputEnhancer {
+export class CartaInput {
private pressedKeys: Set;
- private escapePressed = false;
// Used to detect keys that actually changed the textarea value
private onKeyDownValue: string | undefined;
- public history: TextAreaHistory;
+ public readonly history: CartaHistory;
public readonly events = new EventTarget();
constructor(
@@ -46,7 +45,6 @@ export class InputEnhancer {
textarea.addEventListener('focus', () => {
this.pressedKeys.clear();
- this.escapePressed = false;
});
textarea.addEventListener('blur', () => {
this.pressedKeys.clear();
@@ -54,7 +52,7 @@ export class InputEnhancer {
textarea.addEventListener('mousedown', this.handleMouseDown.bind(this));
- this.history = new TextAreaHistory(settings.historyOpts);
+ this.history = new CartaHistory(settings.historyOpts);
// Save initial value
this.history.saveState(this.textarea.value, this.textarea.selectionStart);
@@ -125,33 +123,13 @@ export class InputEnhancer {
if (key === 'enter') {
// Check prefixes
this.handleNewLine(e);
- } else if (key == 'tab' && !this.escapePressed) {
+ } else if (key == 'tab') {
e.preventDefault(); // Don't select other stuff
-
- if (e.shiftKey) {
- // Unindent
- const line = this.getLine();
- const lineStart = line.start;
- const lineContent = line.value;
- const position = this.textarea.selectionStart;
-
- // Check if the line starts with a tab
- if (lineContent.startsWith('\t')) {
- // Remove the tab
- this.removeAt(lineStart, 1);
- this.textarea.selectionStart = position - 1;
- this.textarea.selectionEnd = position - 1;
- }
- } else {
- const position = this.textarea.selectionStart;
- this.insertAt(this.textarea.selectionStart, '\t');
- this.textarea.selectionStart = position + 1;
- this.textarea.selectionEnd = position + 1;
- }
-
+ const position = this.textarea.selectionStart;
+ this.insertAt(this.textarea.selectionStart, '\t');
+ this.textarea.selectionStart = position + 1;
+ this.textarea.selectionEnd = position + 1;
this.update();
- } else if (key === 'escape') {
- this.escapePressed = true;
}
this.onKeyDownValue = this.textarea.value;
}
@@ -241,6 +219,9 @@ export class InputEnhancer {
start: lineStartingIndex,
end: lineEndingIndex,
value: this.textarea.value.slice(lineStartingIndex, lineEndingIndex)
+ /**
+ * Position of the cursor relative to the line.
+ */
};
}
@@ -463,18 +444,10 @@ export class InputEnhancer {
* @param elem The element to position.
* @param portal The portal to append the element to. Defaults to `document.body`.
*/
- public $bindToCaret(
- elem: HTMLElement,
- data: { portal: HTMLElement; editorElement?: HTMLElement }
- ) {
+ public $bindToCaret(elem: HTMLElement, portal: HTMLElement) {
// Move the element to body
- data.portal.appendChild(elem);
- // Add theme class as the the teleported element is not a child of the container
- const themeClass = Array.from(data.editorElement?.classList ?? []).find((c) =>
- c.startsWith('carta-theme__')
- );
- elem.classList.add(themeClass ?? 'carta-theme__default');
- elem.style.position = 'fixed';
+ portal.appendChild(elem);
+ elem.style.position = 'absolute';
const callback = () => {
const relativePosition = this.getCursorXY();
@@ -513,7 +486,6 @@ export class InputEnhancer {
this.textarea.addEventListener('input', callback);
window.addEventListener('resize', callback);
- window.addEventListener('scroll', callback);
// Initial positioning
callback();
@@ -521,13 +493,12 @@ export class InputEnhancer {
return {
destroy: () => {
try {
- data.portal.removeChild(elem);
+ portal.removeChild(elem);
} catch (e: unknown) {
// Ignore
}
this.textarea.removeEventListener('input', callback);
window.removeEventListener('resize', callback);
- window.removeEventListener('scroll', callback);
}
};
}
@@ -537,26 +508,12 @@ export class InputEnhancer {
*/
public getRowHeight() {
// Turns out calculating line height is quite tricky
- const rawLineHeight = getComputedStyle(this.container).lineHeight;
-
- const lineHeight = parseFloat(rawLineHeight);
+ const lineHeight = parseFloat(getComputedStyle(this.container).lineHeight);
const fontSize = parseFloat(getComputedStyle(this.container).fontSize);
-
if (isNaN(lineHeight)) {
// "normal" => use default 1.2 value for all modern browser
return Math.ceil(fontSize * 1.2);
}
- if (rawLineHeight.endsWith('em')) {
- return Math.ceil(lineHeight * fontSize);
- }
- if (rawLineHeight.endsWith('%')) {
- return Math.ceil((lineHeight / 100) * fontSize);
- }
- if (rawLineHeight.endsWith('px')) {
- return Math.ceil(lineHeight);
- }
-
- // Line height can also be a multiplier of the font size
return Math.ceil(fontSize * lineHeight);
}
}
diff --git a/packages/carta-md/src/lib/internal/labels.ts b/packages/carta-md/src/lib/internal/labels.ts
deleted file mode 100644
index 0ee8cc5..0000000
--- a/packages/carta-md/src/lib/internal/labels.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { DefaultIconId } from './icons';
-import type { Intellisense } from './utils';
-
-type IconId = Intellisense;
-
-/**
- * Labels that may appear in the editor.
- */
-export interface Labels {
- writeTab: string;
- previewTab: string;
- iconsLabels: Partial>;
-}
-
-export const defaultLabels: Labels = {
- writeTab: 'Write',
- previewTab: 'Preview',
- iconsLabels: {}
-};
diff --git a/packages/carta-md/src/lib/internal/renderer.ts b/packages/carta-md/src/lib/internal/renderer.ts
index c61be7b..a74912d 100644
--- a/packages/carta-md/src/lib/internal/renderer.ts
+++ b/packages/carta-md/src/lib/internal/renderer.ts
@@ -1,4 +1,4 @@
-export class Renderer {
+export class CartaRenderer {
constructor(public readonly container: HTMLDivElement) {}
// Reserved for future use
}
diff --git a/packages/carta-md/src/lib/internal/shj.ts b/packages/carta-md/src/lib/internal/shj.ts
new file mode 100644
index 0000000..e77ca7c
--- /dev/null
+++ b/packages/carta-md/src/lib/internal/shj.ts
@@ -0,0 +1,54 @@
+import { detectLanguage } from '@speed-highlight/core/detect.js';
+import type { ShjLanguageDefinition } from '@speed-highlight/core';
+
+/**
+ * Markdown syntax highlighting rules.
+ */
+const cartaMarkdown: ShjLanguageDefinition = [
+ {
+ type: 'cmnt',
+ match: /^>.*|(=|-)\1+/gm
+ },
+ {
+ type: 'class',
+ match: /\*\*((?!\*\*).)*\*\*/g
+ },
+ {
+ match: /```((?!```)[^])*\n```/g,
+ sub: (code) => ({
+ type: 'kwd',
+ sub: [
+ {
+ match: /\n[^]*(?=```)/g,
+ sub: code.split('\n')[0].slice(3) || detectLanguage(code)
+ }
+ ]
+ })
+ },
+ {
+ type: 'str',
+ match: /`[^`]*`/g
+ },
+ {
+ type: 'var',
+ match: /~~((?!~~).)*~~/g
+ },
+ {
+ type: 'kwd',
+ match: /_[^_]*_|\*[^*]*\*/g
+ },
+ {
+ type: 'kwd',
+ match: /^\s*(\*|\d+\.)\s/gm
+ },
+ {
+ type: 'oper',
+ match: /\[[^\]]*]/g
+ },
+ {
+ type: 'func',
+ match: /\([^)]*\)/g
+ }
+];
+
+export default cartaMarkdown;
diff --git a/packages/carta-md/src/lib/internal/shortcuts.ts b/packages/carta-md/src/lib/internal/shortcuts.ts
index 47549dc..e05a896 100644
--- a/packages/carta-md/src/lib/internal/shortcuts.ts
+++ b/packages/carta-md/src/lib/internal/shortcuts.ts
@@ -1,4 +1,4 @@
-import type { InputEnhancer } from './input';
+import type { CartaInput } from './input';
/**
* Keyboard shortcut data.
@@ -13,7 +13,7 @@ export interface KeyboardShortcut {
* Callback action.
* @param input Input helper.
*/
- action: (input: InputEnhancer) => void;
+ action: (input: CartaInput) => void;
/**
* Prevent saving the current state in history.
*/
diff --git a/packages/carta-md/src/lib/internal/textarea-props.ts b/packages/carta-md/src/lib/internal/textarea-props.ts
deleted file mode 100644
index ec2bc78..0000000
--- a/packages/carta-md/src/lib/internal/textarea-props.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Base props for HTML textarea element.
- */
-interface BaseTextAreaProps {
- id?: string;
- name?: string;
- spellCheck?: boolean;
- autoCapitalize?: string;
- autoComplete?: string;
- autoFocus?: boolean;
- dirname?: string;
- disabled?: boolean;
- form?: string;
- maxLength?: number;
- minLength?: number;
- required?: boolean;
- spellcheck?: boolean;
-
- // Props handled by Carta
-
- /**
- * Bind the value to the Editor instead.
- */
- value?: never;
- /**
- * Use the placeholder property of the Editor instead.
- */
- placeholder?: never;
- class?: never;
-}
-
-/**
- * Props for HTML textarea element.
- */
-export type TextAreaProps = Record> =
- BaseTextAreaProps & T;
diff --git a/packages/carta-md/src/lib/internal/utils.ts b/packages/carta-md/src/lib/internal/utils.ts
index 317aeca..3d1ce8b 100644
--- a/packages/carta-md/src/lib/internal/utils.ts
+++ b/packages/carta-md/src/lib/internal/utils.ts
@@ -1,12 +1,3 @@
-// Workaround to add intellisense
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
-interface Nothing {}
-type Union = T | (U & Nothing);
-
-export type Intellisense = Union;
-export type MaybeArray = T | Array;
-export type NonNullable = Exclude;
-
/**
* Debounce the provided function.
* @param cb Callback function.
diff --git a/packages/carta-md/src/lib/light.css b/packages/carta-md/src/lib/light.css
new file mode 100644
index 0000000..6ee2708
--- /dev/null
+++ b/packages/carta-md/src/lib/light.css
@@ -0,0 +1,82 @@
+.shj-inline {
+ margin: 0;
+ padding: 2px 5px;
+ display: inline-table;
+ border-radius: 5px;
+}
+
+.shj-numbers {
+ padding-left: 5px;
+ counter-reset: line;
+}
+.shj-numbers div {
+ padding-right: 5px;
+}
+.shj-numbers div::before {
+ color: #999;
+ display: block;
+ content: counter(line);
+ opacity: 0.5;
+ text-align: right;
+ margin-right: 5px;
+ counter-increment: line;
+}
+
+.shj-syn-cmnt {
+ font-style: italic;
+}
+
+.shj-syn-err,
+.shj-syn-kwd {
+ color: #e16;
+}
+.shj-syn-num,
+.shj-syn-class {
+ color: #f60;
+}
+.shj-numbers,
+.shj-syn-cmnt {
+ color: #999;
+}
+.shj-syn-insert,
+.shj-syn-str {
+ color: #7d8;
+}
+.shj-syn-bool {
+ color: #3bf;
+}
+.shj-syn-type,
+.shj-syn-oper {
+ color: #5af;
+}
+.shj-syn-section,
+.shj-syn-func {
+ color: #84f;
+}
+.shj-syn-deleted,
+.shj-syn-var {
+ color: #f44;
+}
+
+.shj-oneline {
+ padding: 12px 10px;
+}
+.shj-lang-http.shj-oneline .shj-syn-kwd {
+ background: #25f;
+ color: #fff;
+ padding: 5px 7px;
+ border-radius: 5px;
+}
+
+.shj-multiline.shj-mode-header {
+ padding: 20px;
+}
+.shj-multiline.shj-mode-header:before {
+ content: attr(data-lang);
+ color: #58f;
+ display: block;
+ padding: 10px 20px;
+ background: #58f3;
+ border-radius: 5px;
+ margin-bottom: 20px;
+}
diff --git a/packages/carta-md/src/routes/+page.svelte b/packages/carta-md/src/routes/+page.svelte
index a8ff175..cfb0292 100644
--- a/packages/carta-md/src/routes/+page.svelte
+++ b/packages/carta-md/src/routes/+page.svelte
@@ -1,9 +1,9 @@
@@ -23,8 +23,7 @@
-
-
+
diff --git a/packages/carta-md/src/routes/sample.md b/packages/carta-md/src/routes/sample.md
deleted file mode 100644
index 87a50d1..0000000
--- a/packages/carta-md/src/routes/sample.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Heading
-
-## Sub-heading
-
-Paragraphs are separated
-by a blank line.
-
-Two spaces at the end of a line
-produce a line break.
-
-Text attributes _italic_,
-**bold**, `monospace`. Some `console.log(lst.filter(e => e == true))` implementations may use _single-asterisks_ for italic text.
-
-Horizontal rule:
-
----
-
-```js
-function resolveAfter2Seconds(x) {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve(x);
- }, 2000);
- });
-}
-
-// async function expression assigned to a variable
-const add = async function (x) {
- const a = await resolveAfter2Seconds(20);
- const b = await resolveAfter2Seconds(30);
- console?.log(`http://localhost:${PORT}/`.match(/:[0-9]{2,4}^/g));
- return x + a + b;
-};
-
-add(10).then((v) => {
- console.log(v); // prints 60 after 4 seconds.
-});
-
-// async function expression used as an IIFE
-(async function (x) {
- const p1 = resolveAfter2Seconds(20);
- const p2 = resolveAfter2Seconds(30);
- return x + (await p1) + (await p2);
-})(10).then((v) => {
- console.log(v); // prints 60 after 2 seconds.
-});
-```
-
-```beurihiuerh
-}
-```
-
-Strikethrough:
-~~strikethrough~~
-
-Bullet list:
-
-- apples
-- oranges
-- pears
-
-Numbered list:
-
-1. lather
-2. rinse
-3. repeat
-
-An [example](http://example.com).
-
-
-
-> Markdown uses email-style
-> characters for blockquoting.
-> Multiple paragraphs need to be prepended individually.
-
-| Item | Price | In stock |
-| ------------ | -------- | -------- |
-| Juicy Apples | 1.99 | _7_ |
-| Bananas | **1.89** | 5234 |
diff --git a/packages/carta-md/static/pic.jpg b/packages/carta-md/static/pic.jpg
deleted file mode 100644
index a1dc99c..0000000
Binary files a/packages/carta-md/static/pic.jpg and /dev/null differ
diff --git a/packages/carta-md/svelte.config.js b/packages/carta-md/svelte.config.js
index fd14cc8..87f198f 100644
--- a/packages/carta-md/svelte.config.js
+++ b/packages/carta-md/svelte.config.js
@@ -1,5 +1,5 @@
import adapter from '@sveltejs/adapter-auto';
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
+import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */
const config = {
diff --git a/packages/carta-md/tsconfig.json b/packages/carta-md/tsconfig.json
index 429a4c6..f98f071 100644
--- a/packages/carta-md/tsconfig.json
+++ b/packages/carta-md/tsconfig.json
@@ -13,7 +13,12 @@
"strict": true,
"composite": true,
"ignoreDeprecations": "5.0",
- "plugins": []
+ "plugins": [],
+ "baseUrl": "./",
+ "paths": {
+ "$lib": ["src/lib"],
+ "$lib/*": ["src/lib/*"]
+ }
},
"include": ["./src"]
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
diff --git a/packages/plugin-anchor/README.md b/packages/plugin-anchor/README.md
deleted file mode 100644
index 9dafc99..0000000
--- a/packages/plugin-anchor/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Carta Anchor Plugin
-
-This plugin adds `id` attributes and permalinks to headings. Install it using:
-
-```
-npm i @cartamd/plugin-anchor
-```
-
-## Setup
-
-### Styles
-
-Import the default theme, or create you own:
-
-```ts
-import '@cartamd/plugin-anchor/default.css';
-```
-
-### Extension
-
-```svelte
-
-
-
-```
-
-## Documentation
-
-Checkout the [docs](https://beartocode.github.io/carta/plugins/anchor) for examples, options and more.
diff --git a/packages/plugin-anchor/package.json b/packages/plugin-anchor/package.json
deleted file mode 100644
index 27c917b..0000000
--- a/packages/plugin-anchor/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "@cartamd/plugin-anchor",
- "version": "3.0.0",
- "type": "module",
- "main": "./dist/index.js",
- "types": "./dist/index.d.ts",
- "license": "MIT",
- "scripts": {
- "dev": "vite dev",
- "build": "vite build && npm run package",
- "preview": "vite preview",
- "package": "svelte-kit sync && svelte-package && publint",
- "prepublishOnly": "npm run package",
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/BearToCode/carta.git"
- },
- "exports": {
- ".": {
- "types": "./dist/index.d.ts",
- "svelte": "./dist/index.js"
- },
- "./default.css": "./dist/default.css",
- "./default-theme.css": "./dist/default.css"
- },
- "files": [
- "dist",
- "!dist/**/*.test.*",
- "!dist/**/*.spec.*"
- ],
- "dependencies": {
- "rehype-autolink-headings": "^7.1.0",
- "rehype-slug": "^6.0.0"
- },
- "peerDependencies": {
- "carta-md": "^4.0.0",
- "svelte": "^3.54.0 || ^4.0.0"
- },
- "devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
- "carta-md": "workspace:*",
- "marked": "^9.1.5",
- "publint": "^0.1.9",
- "svelte": "^3.54.0 || ^4.0.0",
- "svelte-check": "^3.6.7",
- "tslib": "^2.4.1",
- "typescript": "^5.0.0",
- "vite": "^5.1.6"
- },
- "svelte": "./dist/index.js",
- "keywords": [
- "carta",
- "markdown",
- "editor",
- "marked",
- "text editor",
- "marked editor",
- "slash",
- "syntax highlighting",
- "emoji",
- "katex"
- ]
-}
diff --git a/packages/plugin-anchor/src/app.d.ts b/packages/plugin-anchor/src/app.d.ts
deleted file mode 100644
index f59b884..0000000
--- a/packages/plugin-anchor/src/app.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// See https://kit.svelte.dev/docs/types#app
-// for information about these interfaces
-declare global {
- namespace App {
- // interface Error {}
- // interface Locals {}
- // interface PageData {}
- // interface Platform {}
- }
-}
-
-export {};
diff --git a/packages/plugin-anchor/src/lib/default.css b/packages/plugin-anchor/src/lib/default.css
deleted file mode 100644
index 1d18753..0000000
--- a/packages/plugin-anchor/src/lib/default.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.carta-viewer h1,
-.carta-viewer h2,
-.carta-viewer h3,
-.carta-viewer h4,
-.carta-viewer h5,
-.carta-viewer h6 {
- position: relative;
-}
-
-.carta-viewer h1 .icon.icon-link,
-.carta-viewer h2 .icon.icon-link,
-.carta-viewer h3 .icon.icon-link,
-.carta-viewer h4 .icon.icon-link,
-.carta-viewer h5 .icon.icon-link,
-.carta-viewer h6 .icon.icon-link {
- opacity: 0;
- content: url('./link.svg');
- position: absolute;
- right: 100%;
- top: 50%;
- padding-right: 4px;
- transform: translateY(-50%);
-}
-
-.carta-viewer h1:hover .icon-link,
-.carta-viewer h2:hover .icon-link,
-.carta-viewer h3:hover .icon-link,
-.carta-viewer h4:hover .icon-link,
-.carta-viewer h5:hover .icon-link,
-.carta-viewer h6:hover .icon-link {
- opacity: 1;
-}
diff --git a/packages/plugin-anchor/src/lib/index.ts b/packages/plugin-anchor/src/lib/index.ts
deleted file mode 100644
index 5448a7e..0000000
--- a/packages/plugin-anchor/src/lib/index.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import rehypeSlug, { type Options as SlugOptions } from 'rehype-slug';
-import rehypeAutolinkHeadings, { type Options as AutolinkOptions } from 'rehype-autolink-headings';
-import type { Plugin } from 'carta-md';
-export * from './default.css?inline';
-
-export interface AnchorExtensionOptions {
- /**
- * rehype-slug options.
- */
- slug?: SlugOptions;
- /**
- * rehype-autolink-headings options.
- */
- autolink?: AutolinkOptions;
-}
-
-/**
- * Carta anchor plugin. Adds support to render anchor links in header tags.
- */
-export const anchor = (options?: AnchorExtensionOptions): Plugin => {
- return {
- transformers: [
- {
- execution: 'sync',
- type: 'rehype',
- transform({ processor }) {
- processor.use(rehypeSlug, options?.slug).use(rehypeAutolinkHeadings, options?.autolink);
- }
- }
- ]
- };
-};
diff --git a/packages/plugin-anchor/src/lib/link.svg b/packages/plugin-anchor/src/lib/link.svg
deleted file mode 100644
index 458edf8..0000000
--- a/packages/plugin-anchor/src/lib/link.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/packages/plugin-anchor/src/routes/+page.svelte b/packages/plugin-anchor/src/routes/+page.svelte
deleted file mode 100644
index 9d26091..0000000
--- a/packages/plugin-anchor/src/routes/+page.svelte
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/plugin-anchor/svelte.config.js b/packages/plugin-anchor/svelte.config.js
deleted file mode 100644
index 2b35fe1..0000000
--- a/packages/plugin-anchor/svelte.config.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import adapter from '@sveltejs/adapter-auto';
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
- // Consult https://kit.svelte.dev/docs/integrations#preprocessors
- // for more information about preprocessors
- preprocess: vitePreprocess(),
-
- kit: {
- // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
- // If your environment is not supported or you settled on a specific environment, switch out the adapter.
- // See https://kit.svelte.dev/docs/adapters for more information about adapters.
- adapter: adapter()
- }
-};
-
-export default config;
diff --git a/packages/plugin-anchor/tsconfig.json b/packages/plugin-anchor/tsconfig.json
deleted file mode 100644
index fd837cc..0000000
--- a/packages/plugin-anchor/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "./.svelte-kit/tsconfig.json",
- "compilerOptions": {
- "checkJs": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "skipLibCheck": true,
- "sourceMap": true,
- "strict": true,
- "composite": true,
- "ignoreDeprecations": "5.0",
- "plugins": []
- }
-}
diff --git a/packages/plugin-anchor/vite.config.ts b/packages/plugin-anchor/vite.config.ts
deleted file mode 100644
index bbf8c7d..0000000
--- a/packages/plugin-anchor/vite.config.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { sveltekit } from '@sveltejs/kit/vite';
-import { defineConfig } from 'vite';
-
-export default defineConfig({
- plugins: [sveltekit()]
-});
diff --git a/packages/plugin-attachment/README.md b/packages/plugin-attachment/README.md
index 8ca5a7a..9c88cd0 100644
--- a/packages/plugin-attachment/README.md
+++ b/packages/plugin-attachment/README.md
@@ -20,7 +20,7 @@ import '@cartamd/plugin-attachment/default.css';
```svelte
-
+
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/attachment) for examples, options and more.
+Here are the options you can pass to `attachment()`:
+
+```ts
+export interface AttachmentExtensionOptions {
+ /**
+ * Upload a file to the server. Return the url of the uploaded file.
+ * If an error occurs, return null. This function does **not** handle errors.
+ * @param file The file to upload
+ * @returns The uploaded file url, or null if it failed
+ */
+ upload: (file: File) => Promise;
+ /**
+ * Supported mime types.
+ *
+ * @default ['image/png', 'image/jpeg', 'image/gif', 'image/svg+xml'].
+ */
+ supportedMimeTypes?: string[];
+ /**
+ * Whether to disable the attach icon.
+ *
+ * @default false
+ */
+ disableIcon?: boolean;
+ /**
+ * Custom drop overlay component. Use `false` to disable the overlay.
+ */
+ dropOverlay?: false | typeof SvelteComponent;
+ /**
+ * Custom loading overlay component. Use `false` to disable the overlay.
+ */
+ loadingOverlay?: false | typeof SvelteComponent<{ uploadingFiles: Writable }>;
+}
+```
diff --git a/packages/plugin-attachment/package.json b/packages/plugin-attachment/package.json
index 8f68e67..a396b4c 100644
--- a/packages/plugin-attachment/package.json
+++ b/packages/plugin-attachment/package.json
@@ -34,24 +34,23 @@
"!dist/**/*.spec.*"
],
"peerDependencies": {
- "carta-md": "^4.0.0",
+ "carta-md": "^3.0.0",
"marked": "^9.1.5",
"svelte": "^3.54.0 || ^4.0.0"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/kit": "^1.27.1",
+ "@sveltejs/package": "^2.2.2",
"@types/node-emoji": "^1.8.2",
"carta-md": "workspace:*",
"marked": "^9.1.5",
"publint": "^0.1.9",
- "svelte": "^4.2.12",
- "svelte-check": "^3.6.7",
+ "svelte": "^4.2.2",
+ "svelte-check": "^3.5.2",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
- "vite": "^5.1.6"
+ "vite": "^4.3.9"
},
"svelte": "./dist/index.js",
"keywords": [
diff --git a/packages/plugin-attachment/src/app.html b/packages/plugin-attachment/src/app.html
index f22aeaa..d2fc6b0 100644
--- a/packages/plugin-attachment/src/app.html
+++ b/packages/plugin-attachment/src/app.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/plugin-attachment/src/lib/index.ts b/packages/plugin-attachment/src/lib/index.ts
index 7df0b33..b207339 100644
--- a/packages/plugin-attachment/src/lib/index.ts
+++ b/packages/plugin-attachment/src/lib/index.ts
@@ -1,4 +1,4 @@
-import type { Carta, Plugin, Listener } from 'carta-md';
+import type { Carta, CartaExtension, CartaListener } from 'carta-md';
import { get, writable, type Writable } from 'svelte/store';
import type { SvelteComponent } from 'svelte';
import DropOverlay from './DropOverlay.svelte';
@@ -40,7 +40,7 @@ const ImageMimeTypes = ['image/png', 'image/jpeg', 'image/gif', 'image/svg+xml']
/**
* Carta attachment plugin.
*/
-export const attachment = (options: AttachmentExtensionOptions): Plugin => {
+export const attachment = (options: AttachmentExtensionOptions): CartaExtension => {
let carta: Carta | undefined;
const allowedMimeTypes = options.supportedMimeTypes || ImageMimeTypes;
@@ -102,31 +102,15 @@ export const attachment = (options: AttachmentExtensionOptions): Plugin => {
for (const file of files) handleFile(file);
}
- function handlePaste(this: HTMLTextAreaElement, e: ClipboardEvent) {
- const items = e.clipboardData?.items;
- if (!items) return;
-
- const itemsArray = Array.from(items);
- for (const item of itemsArray) {
- if (item.kind === 'file') {
- const file = item.getAsFile();
- if (!file) continue;
- e.preventDefault();
- handleFile(file);
- }
- }
- }
-
return {
onLoad: ({ carta: c }) => {
carta = c;
},
listeners: [
- ['drop', handleDrop, false] satisfies Listener<'drop'>,
- ['dragenter', () => draggingOverTextArea.set(true)] satisfies Listener<'dragenter'>,
- ['dragleave', () => draggingOverTextArea.set(false)] satisfies Listener<'dragleave'>,
- ['dragover', (e) => e.preventDefault()] satisfies Listener<'dragover'>,
- ['paste', handlePaste, false] satisfies Listener<'paste'>
+ ['drop', handleDrop, false] satisfies CartaListener<'drop'>,
+ ['dragenter', () => draggingOverTextArea.set(true)] satisfies CartaListener<'dragenter'>,
+ ['dragleave', () => draggingOverTextArea.set(false)] satisfies CartaListener<'dragleave'>,
+ ['dragover', (e) => e.preventDefault()] satisfies CartaListener<'dragover'>
],
components: [
{
@@ -167,8 +151,7 @@ export const attachment = (options: AttachmentExtensionOptions): Plugin => {
input.click();
},
- id: 'attach',
- label: 'Attach file'
+ id: 'attach'
}
]
};
diff --git a/packages/plugin-attachment/src/routes/+page.svelte b/packages/plugin-attachment/src/routes/+page.svelte
index 19891a6..8bee37e 100644
--- a/packages/plugin-attachment/src/routes/+page.svelte
+++ b/packages/plugin-attachment/src/routes/+page.svelte
@@ -1,6 +1,6 @@
-
+
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/code) for examples, options and more.
+Here are the options you can pass to `code()`:
+
+```ts
+interface CodeExtensionOptions {
+ /**
+ * Default language when none is provided.
+ */
+ defaultLanguage?: string;
+ /**
+ * Whether to autodetect a language when none is provided.
+ * Overwritten by `defaultLanguage`.
+ */
+ autoDetect?: string;
+ /**
+ * Line numbering.
+ * @defaults false.
+ */
+ lineNumbering?: boolean;
+
+ /**
+ * Options for custom syntax highlighting.
+ */
+ customHighlight?: {
+ /**
+ * Custom highlight function. Beware that you'll have to provide your own styles.
+ * This function needs to convert a string of code into html.
+ */
+ highlighter: (code: string, lang: string) => string | Promise;
+ /**
+ * The language tag found immediately after the code block opening marker is
+ * appended to this to form the class attribute added to the `` element.
+ */
+ langPrefix: string;
+ };
+}
+```
diff --git a/packages/plugin-code/package.json b/packages/plugin-code/package.json
index 0da3535..bdb372b 100644
--- a/packages/plugin-code/package.json
+++ b/packages/plugin-code/package.json
@@ -16,22 +16,21 @@
"build": "tsc && tscp"
},
"devDependencies": {
- "@shikijs/rehype": "^1.4.0",
"@types/node": "^18.16.3",
"carta-md": "workspace:*",
"typescript": "^5.0.4",
- "typescript-cp": "^0.1.8"
+ "typescript-cp": "^0.1.8",
+ "marked": "^9.1.5"
},
"peerDependencies": {
- "carta-md": "^4.0.0"
+ "carta-md": "^3.0.0"
},
"files": [
"dist"
],
- "version": "4.0.0",
+ "version": "3.0.0",
"dependencies": {
- "@shikijs/rehype": "^1.4.0",
- "unified": "^11.0.4"
+ "marked-highlight": "^2.0.6"
},
"keywords": [
"carta",
diff --git a/packages/plugin-code/src/index.ts b/packages/plugin-code/src/index.ts
index 48a8d6e..5d22fa4 100644
--- a/packages/plugin-code/src/index.ts
+++ b/packages/plugin-code/src/index.ts
@@ -1,52 +1,70 @@
-import type { DualTheme, Theme, Plugin } from 'carta-md';
-import type { RehypeShikiOptions } from '@shikijs/rehype';
-import rehypeShikiFromHighlighter from '@shikijs/rehype/core';
+import type { CartaExtension, HighlightFunctions } from 'carta-md';
+import { markedHighlight } from 'marked-highlight';
-export type CodeExtensionOptions = Omit & {
- theme?: Theme | DualTheme;
-};
+interface CodeExtensionOptions {
+ /**
+ * Default language when none is provided.
+ */
+ defaultLanguage?: string;
+ /**
+ * Whether to autodetect a language when none is provided.
+ * Overwritten by `defaultLanguage`.
+ */
+ autoDetect?: string;
+ /**
+ * Line numbering.
+ * @defaults false.
+ */
+ lineNumbering?: boolean;
-// FIXME: find a better solution then copy-pasting these functions in next version.
-// However, when importing from carta-md, this causes a MODULE_NOT_FOUND error
-// for some reason.
-/**
- * Checks if a theme is a dual theme.
- * @param theme The theme to check.
- * @returns Whether the theme is a dual theme.
- */
-export const isDualTheme = (theme: Theme | DualTheme): theme is DualTheme =>
- typeof theme == 'object' && 'light' in theme && 'dark' in theme;
-/**
- * Checks if a theme is a single theme.
- * @param theme The theme to check.
- * @returns Whether the theme is a single theme.
- */
-export const isSingleTheme = (theme: Theme | DualTheme): theme is Theme => !isDualTheme(theme);
+ /**
+ * Options for custom syntax highlighting.
+ */
+ customHighlight?: {
+ /**
+ * Custom highlight function. Beware that you'll have to provide your own styles.
+ * This function needs to convert a string of code into html.
+ */
+ highlighter: (code: string, lang: string) => string | Promise;
+ /**
+ * The language tag found immediately after the code block opening marker is
+ * appended to this to form the class attribute added to the `` element.
+ */
+ langPrefix: string;
+ };
+}
+
+let shj: HighlightFunctions;
/**
* Carta code highlighting plugin. Themes available on [GitHub](https://github.com/speed-highlight/core/tree/main/dist/themes).
*/
-export const code = (options?: CodeExtensionOptions): Plugin => {
+export const code = (options?: CodeExtensionOptions): CartaExtension => {
return {
- transformers: [
- {
- execution: 'async',
- type: 'rehype',
- async transform({ processor, carta }) {
- let theme = options?.theme;
-
- const highlighter = await carta.highlighter();
- if (!theme) {
- theme = highlighter.theme; // Use the theme specified in the highlighter
+ onLoad: ({ highlight }) => (shj = highlight),
+ markedExtensions: [
+ markedHighlight({
+ langPrefix: options?.customHighlight?.langPrefix ?? 'shj-lang-',
+ async: true,
+ async highlight(code, lang) {
+ if (options?.customHighlight) {
+ return await options.customHighlight.highlighter(code, lang);
}
- if (isSingleTheme(theme)) {
- processor.use(rehypeShikiFromHighlighter, highlighter, { ...options, theme });
- } else {
- processor.use(rehypeShikiFromHighlighter, highlighter, { ...options, themes: theme });
- }
+ const { highlight, highlightAutodetect } = shj;
+
+ lang ||= options?.defaultLanguage ?? '';
+ let highlighted: string | null = null;
+
+ if (lang) highlighted = await highlight(code, lang, !(options?.lineNumbering ?? false));
+ if (highlighted) return highlighted;
+
+ if (options?.autoDetect ?? true)
+ return await highlightAutodetect(code, !(options?.lineNumbering ?? false));
+
+ return (await highlight(code, 'plain', !(options?.lineNumbering ?? false))) as string;
}
- }
+ })
]
};
};
diff --git a/packages/plugin-emoji/README.md b/packages/plugin-emoji/README.md
index c3ea8dd..0fbe8e0 100644
--- a/packages/plugin-emoji/README.md
+++ b/packages/plugin-emoji/README.md
@@ -20,7 +20,7 @@ import '@cartamd/plugin-emoji/default.css';
```svelte
-
+
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/emoji) for examples, options and more.
+Here are the options you can pass to `emoji()`:
+
+```ts
+export interface EmojiExtensionOptions {
+ /**
+ * Custom in transition. See https://svelte.dev/docs#run-time-svelte-transition.
+ */
+ inTransition?: (node: Element) => TransitionConfig;
+ /**
+ * Custom out transition. See https://svelte.dev/docs#run-time-svelte-transition.
+ */
+ outTransition?: (node: Element) => TransitionConfig;
+}
+```
diff --git a/packages/plugin-emoji/package.json b/packages/plugin-emoji/package.json
index 8d43c74..ca11132 100644
--- a/packages/plugin-emoji/package.json
+++ b/packages/plugin-emoji/package.json
@@ -1,6 +1,6 @@
{
"name": "@cartamd/plugin-emoji",
- "version": "4.0.0",
+ "version": "3.0.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -33,27 +33,26 @@
],
"dependencies": {
"bezier-easing": "^2.1.0",
- "node-emoji": "^1.11.0",
- "remark-gemoji": "^8.0.0"
+ "node-emoji": "^1.11.0"
},
"peerDependencies": {
- "carta-md": "^4.0.0",
+ "carta-md": "^3.0.0",
+ "marked": "^9.1.5",
"svelte": "^3.54.0 || ^4.0.0"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/kit": "^1.5.0",
+ "@sveltejs/package": "^2.0.0",
"@types/node-emoji": "^1.8.2",
"carta-md": "workspace:*",
- "marked": "^9.1.5",
"publint": "^0.1.9",
- "svelte": "^4.2.12",
- "svelte-check": "^3.6.7",
+ "svelte": "^3.54.0 || ^4.0.0",
+ "svelte-check": "^3.0.1",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
- "vite": "^5.1.6"
+ "vite": "^4.3.9",
+ "marked": "^9.1.5"
},
"svelte": "./dist/index.js",
"keywords": [
diff --git a/packages/plugin-emoji/src/app.html b/packages/plugin-emoji/src/app.html
index f22aeaa..d2fc6b0 100644
--- a/packages/plugin-emoji/src/app.html
+++ b/packages/plugin-emoji/src/app.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/plugin-emoji/src/lib/Emoji.svelte b/packages/plugin-emoji/src/lib/Emoji.svelte
index cfe0439..7ff9a23 100644
--- a/packages/plugin-emoji/src/lib/Emoji.svelte
+++ b/packages/plugin-emoji/src/lib/Emoji.svelte
@@ -12,11 +12,13 @@
export let outTransition: (node: Element) => TransitionConfig;
let visible = false;
+ let caretPosition = { left: 0, right: 0, top: 0, bottom: 0 };
let filter = '';
let colonPosition = 0;
let hoveringIndex = 0;
let emojis: nodeEmoji.Emoji[] = [];
let emojisElements: HTMLButtonElement[] = Array(cols * maxRows);
+ let elem: HTMLDivElement;
onMount(() => {
carta.input?.textarea.addEventListener('keydown', handleKeyDown);
@@ -73,6 +75,7 @@
} else if (e.key === ':') {
// Open
visible = true;
+ caretPosition = carta.input.getCursorXY();
colonPosition = carta.input.textarea.selectionStart;
filter = '';
}
@@ -104,6 +107,14 @@
carta.input.update();
}
+ $: {
+ if (elem) {
+ // Make statement reactive
+ caretPosition, elem.clientWidth, elem.clientHeight;
+ carta.input?.moveElemToCaret(elem);
+ }
+ }
+
$: {
// Scroll to make hovering emoji always visible
const hovering = emojisElements.at(hoveringIndex);
@@ -121,9 +132,9 @@
{#each emojis as emoji, i}
{
+export const emoji = (options?: EmojiExtensionOptions): CartaExtension => {
const inTransition =
options?.inTransition ??
((node: Element) =>
@@ -39,7 +40,7 @@ export const emoji = (options?: EmojiExtensionOptions): Plugin => {
duration: 100
}));
- const emojiComponent: ExtensionComponent = {
+ const emojiComponent: CartaExtensionComponent = {
component: Emoji,
parent: 'input',
props: {
@@ -48,42 +49,39 @@ export const emoji = (options?: EmojiExtensionOptions): Plugin => {
}
};
- const grammar = {
- name: 'emoji',
- type: 'inline',
- definition: {
- match: ':[a-zA-Z_]+:',
- name: 'markup.emoji.markdown'
- }
- } satisfies GrammarRule;
-
- const highlighting = {
- light: {
- scope: 'markup.emoji',
- settings: {
- foreground: '#3bf'
- }
- },
- dark: {
- scope: 'markup.emoji',
- settings: {
- foreground: '#4dacfa'
- }
- }
- } satisfies HighlightingRule;
-
return {
- transformers: [
+ markedExtensions: [
{
- execution: 'sync',
- type: 'remark',
- transform({ processor }) {
- processor.use(remarkGemoji);
- }
+ extensions: [emojiTokenizerAndRenderer()]
}
],
components: [emojiComponent],
- grammarRules: [grammar],
- highlightingRules: [highlighting]
+ highlightRules: [
+ {
+ type: 'oper',
+ match: /:[a-z0-9_]+:/g
+ }
+ ]
};
};
+
+function emojiTokenizerAndRenderer(): TokenizerAndRendererExtension {
+ return {
+ name: 'emoji',
+ level: 'inline',
+ start: (src) => src.indexOf(':'),
+ tokenizer: (src) => {
+ const match = src.match(/^:.*?:/)?.at(0);
+ if (!match) return undefined;
+ const emoji = nodeEmoji.find(match)?.emoji;
+ if (emoji) {
+ return {
+ type: 'emoji',
+ raw: match,
+ emoji
+ };
+ }
+ },
+ renderer: (token) => token.emoji
+ };
+}
diff --git a/packages/plugin-emoji/src/routes/+page.svelte b/packages/plugin-emoji/src/routes/+page.svelte
index 6be0a8d..8486817 100644
--- a/packages/plugin-emoji/src/routes/+page.svelte
+++ b/packages/plugin-emoji/src/routes/+page.svelte
@@ -1,5 +1,5 @@
-
+
```
## Usage
@@ -65,6 +65,46 @@ $$
$$
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/math) for examples, options and more.
+Here are the options you can pass to `math()`:
+
+```ts
+interface MathExtensionOptions {
+ /**
+ * Options for inline katex, eg: $a^2+b^2=c^2$
+ */
+ inline?: {
+ katexOptions?: KatexOptions;
+ /**
+ * @default control+m
+ */
+ shortcut?: Set;
+ };
+ /**
+ * Option for block katex, eg:
+ * $$
+ * a^2+b^2=c^2
+ * $$
+ */
+ block?: {
+ /**
+ * Tag the generated katex will be put into. Must have `display: block`.
+ */
+ tag?: string;
+ /**
+ * Whether to center the generated expression.
+ * @default true
+ */
+ center?: boolean;
+ /**
+ * Class for generated katex.
+ */
+ class?: string;
+ /**
+ * @default ctrl+shift+m
+ */
+ shortcut?: Set;
+ katexOptions?: KatexOptions;
+ };
+```
diff --git a/packages/plugin-math/package.json b/packages/plugin-math/package.json
index b9efad7..f3a8b4e 100644
--- a/packages/plugin-math/package.json
+++ b/packages/plugin-math/package.json
@@ -17,20 +17,23 @@
"build": "tsc"
},
"devDependencies": {
+ "@types/katex": "^0.16.0",
"carta-md": "workspace:*",
- "typescript": "^5.0.4"
+ "typescript": "^5.0.4",
+ "marked": "^9.1.5"
},
"peerDependencies": {
- "carta-md": "^4.0.0"
+ "carta-md": "^3.0.0",
+ "katex": "^0.16.7",
+ "marked": "^9.1.5"
},
"files": [
"dist"
],
"dependencies": {
- "rehype-katex": "^7.0.0",
- "remark-math": "^6.0.0"
+ "katex": "^0.16.7"
},
- "version": "4.0.1",
+ "version": "3.0.0",
"keywords": [
"carta",
"markdown",
diff --git a/packages/plugin-math/src/index.ts b/packages/plugin-math/src/index.ts
index 5e26313..8fc0637 100644
--- a/packages/plugin-math/src/index.ts
+++ b/packages/plugin-math/src/index.ts
@@ -1,12 +1,13 @@
-import type { Plugin } from 'carta-md';
-import remarkMath, { type Options as RemarkMathOptions } from 'remark-math';
-import rehypeKatex, { type Options as RehypeKatexOptions } from 'rehype-katex';
+import type { Carta, CartaExtension } from 'carta-md';
+import { TokenizerAndRendererExtension } from 'marked';
+import katex, { KatexOptions } from 'katex';
interface MathExtensionOptions {
/**
* Options for inline katex, eg: $a^2+b^2=c^2$
*/
inline?: {
+ katexOptions?: KatexOptions;
/**
* @default control+m
*/
@@ -19,45 +20,51 @@ interface MathExtensionOptions {
* $$
*/
block?: {
+ /**
+ * Tag the generated katex will be put into. Must have `display: block`.
+ */
+ tag?: string;
+ /**
+ * Whether to center the generated expression.
+ * @default true
+ */
+ center?: boolean;
+ /**
+ * Class for generated katex.
+ */
+ class?: string;
/**
* @default ctrl+shift+m
*/
shortcut?: Set;
+ katexOptions?: KatexOptions;
};
- /**
- * Options for remark-math
- */
- remarkMath?: RemarkMathOptions;
- /**
- * Options for rehype-katex
- */
- rehypeKatex?: RehypeKatexOptions;
}
+function safeRender(tex: string, options?: KatexOptions | undefined) {
+ try {
+ return katex.renderToString(tex, options);
+ } catch (_) {
+ return '';
+ }
+}
+
+let carta: Carta;
+
/**
* Carta math plugin. Code adapted from [marked-katex-extension](https://github.com/UziTech/marked-katex-extension).
*/
-export const math = (options?: MathExtensionOptions): Plugin => {
+export const math = (options?: MathExtensionOptions): CartaExtension => {
return {
- onLoad: async ({ carta }) => {
- const highlighter = await carta.highlighter();
- await highlighter.loadLanguage('latex');
- carta.input?.update();
+ onLoad: ({ carta: c, highlight: shj }) => {
+ carta = c;
+ import('./latex.js')
+ .then((module) => shj.loadCustomLanguage('latex', module))
+ .then(() => carta.input?.update());
},
- transformers: [
+ markedExtensions: [
{
- execution: 'sync',
- type: 'remark',
- transform({ processor }) {
- processor.use(remarkMath, options?.remarkMath);
- }
- },
- {
- execution: 'sync',
- type: 'rehype',
- transform({ processor }) {
- processor.use(rehypeKatex, options?.rehypeKatex);
- }
+ extensions: [inlineKatex(options?.inline), blockKatex(options?.block)]
}
],
shortcuts: [
@@ -72,57 +79,62 @@ export const math = (options?: MathExtensionOptions): Plugin => {
action: (input) => input.toggleSelectionSurrounding(['$$\n', '\n$$'])
}
],
- grammarRules: [
+ highlightRules: [
{
- name: 'inline_math',
- type: 'inline',
- definition: {
- match: '(\\$+)((?:[^\\$]|(?!(? {
+ return {
+ name: 'inlineKatex',
+ level: 'inline',
+ start: (src) => src.indexOf('$'),
+ tokenizer: (src) => {
+ const match = src.match(/^\$+([^$\n]+?)\$+/);
+ if (match) {
+ return {
+ type: 'inlineKatex',
+ raw: match[0],
+ text: match[1].trim()
+ };
+ }
+ },
+ renderer: (token) => safeRender(token.text, options?.katexOptions)
+ };
+};
+
+const blockKatex = (options?: MathExtensionOptions['block']): TokenizerAndRendererExtension => {
+ return {
+ name: 'blockKatex',
+ level: 'block',
+ start: (src) => src.indexOf('\n$$'),
+ tokenizer: (src) => {
+ const match = src.match(/^\$\$+\n([^$]+?)\n\$\$+\n/);
+ if (match) {
+ return {
+ type: 'blockKatex',
+ raw: match[0],
+ text: match[1].trim()
+ };
+ }
+ },
+ renderer: (token) => {
+ const tag = options?.tag ?? 'p';
+ const center = options?.center ?? true;
+ return `
+ <${tag}
+ class="${options?.class ?? ''}"
+ ${center ? 'align="center"' : ''}
+ >${safeRender(token.text, options?.katexOptions)}
+ ${tag}>`;
+ }
+ };
+};
diff --git a/packages/plugin-math/src/latex.ts b/packages/plugin-math/src/latex.ts
new file mode 100644
index 0000000..fc1d79f
--- /dev/null
+++ b/packages/plugin-math/src/latex.ts
@@ -0,0 +1,38 @@
+export default [
+ {
+ match:
+ /\\(frac|tfrac|dfrac|sqrt|over|above|cfrac|binom|dbinom|brace|choose|tbinom|brack)(?![a-zA-Z0-9])/g,
+ type: 'str'
+ },
+ {
+ match:
+ /\\(amalg|circledast|ldotp|rtimes&&|And|circledcirc|lor|setminus|ast|circleddash|lessdot|smallsetminus|barwedge|Cup|lhd|sqcap|bigcirc|cup|ltimes|sqcupmodmod|bmod|curlyveexmodaxmodax|moda|times|boxdot|curlywedge|mp|unlhd|boxminus|div|odot|unrhd|boxplus|divideontimes|ominus|uplus|boxtimes|dotplus|oplus|vee|bullet|doublebarwedge|otimes|veebar|Cap|doublecap|oslash|wedge|cap|doublecup|pmor|plusmn|wr|centerdot|land|rhd|circ|leftthreetimes|rightthreetimes|cdot|gtrdot|pmod|cdotp|intercal|pod)(?![a-zA-Z0-9])/g,
+ type: 'class'
+ },
+ {
+ match:
+ /\\(mathscr|mathrm|mathbf|mathit|mathnormal|textbf|textit|textrm|bf|it|rm|bold|textup|textnormal|boldsymbol{Ab}|Bbb|text|bm|mathbb|mathsf|textmd|frak|textsf|mathtt|mathfrak|sf|texttt|mathcal|tt|cal)(?![a-zA-Z0-9])/g,
+ type: 'insert'
+ },
+ {
+ match:
+ /\\(sum|prod|bigotimes|bigvee|int|coprod|bigoplus|bigwedge|iint|intop|bigodot|bigcap|iiint|smallint|biguplus|bigcup|oint|oiint|oiiint|bigsqcup)(?![a-zA-Z0-9])/g,
+ type: 'func'
+ },
+ {
+ match: /\\[a-zA-Z0-9]+/g,
+ type: 'oper'
+ },
+ {
+ match: /(\(|\)|\{|\}|\[|\])/g,
+ type: 'esc'
+ },
+ {
+ match: /[a-zA-Z]+/g,
+ type: 'var'
+ },
+ {
+ match: /[0-9]+/g,
+ type: 'num'
+ }
+];
diff --git a/packages/plugin-slash/README.md b/packages/plugin-slash/README.md
index 840380c..af5a01e 100644
--- a/packages/plugin-slash/README.md
+++ b/packages/plugin-slash/README.md
@@ -20,7 +20,7 @@ import '@cartamd/plugin-slash/default.css';
```svelte
-
+
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/slash) for examples, options and more.
+Here are the options you can pass to `slash()`:
+
+```ts
+export interface SlashExtensionOptions {
+ /**
+ * List of default snippets to disable.
+ */
+ disableDefaultSnippets?: DefaultSnippetId[] | true;
+ /**
+ * Additional snippets.
+ */
+ snippets?: SlashSnippet[];
+ /**
+ * Custom in transition. See https://svelte.dev/docs#run-time-svelte-transition.
+ */
+ inTransition?: (node: Element) => TransitionConfig;
+ /**
+ * Custom out transition. See https://svelte.dev/docs#run-time-svelte-transition.
+ */
+ outTransition?: (node: Element) => TransitionConfig;
+}
+```
diff --git a/packages/plugin-slash/package.json b/packages/plugin-slash/package.json
index f6800a2..a52ef88 100644
--- a/packages/plugin-slash/package.json
+++ b/packages/plugin-slash/package.json
@@ -1,6 +1,6 @@
{
"name": "@cartamd/plugin-slash",
- "version": "4.0.1",
+ "version": "3.0.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -35,23 +35,22 @@
"bezier-easing": "^2.1.0"
},
"peerDependencies": {
- "carta-md": "^4.0.0",
+ "carta-md": "^3.0.0",
"svelte": "^3.54.0 || ^4.0.0"
},
"devDependencies": {
- "@sveltejs/adapter-auto": "^3.1.1",
- "@sveltejs/kit": "^2.5.4",
- "@sveltejs/package": "^2.3.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.2",
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/kit": "^1.5.0",
+ "@sveltejs/package": "^2.0.0",
"@types/node-emoji": "^1.8.2",
"carta-md": "workspace:*",
- "marked": "^9.1.5",
"publint": "^0.1.9",
- "svelte": "^4.2.12",
- "svelte-check": "^3.6.7",
+ "svelte": "^3.54.0 || ^4.0.0",
+ "svelte-check": "^3.0.1",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
- "vite": "^5.1.6"
+ "vite": "^4.3.9",
+ "marked": "^9.1.5"
},
"svelte": "./dist/index.js",
"keywords": [
diff --git a/packages/plugin-slash/src/app.html b/packages/plugin-slash/src/app.html
index f22aeaa..d2fc6b0 100644
--- a/packages/plugin-slash/src/app.html
+++ b/packages/plugin-slash/src/app.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/plugin-slash/src/lib/Slash.svelte b/packages/plugin-slash/src/lib/Slash.svelte
index 7873941..ec93669 100644
--- a/packages/plugin-slash/src/lib/Slash.svelte
+++ b/packages/plugin-slash/src/lib/Slash.svelte
@@ -10,12 +10,14 @@
export let outTransition: (node: Element) => TransitionConfig;
let visible = false;
+ let caretPosition = { left: 0, right: 0, top: 0, bottom: 0 };
let hoveringIndex = 0;
let filter = '';
let slashPosition = 0;
let filteredSnippets = snippets;
let groupedSnippets: [string, SlashSnippet[]][];
let snippetsElements: HTMLButtonElement[] = Array(snippets.length);
+ let elem: HTMLDivElement;
onMount(() => {
carta.input?.textarea.addEventListener('keydown', handleKeyDown);
@@ -61,6 +63,7 @@
} else if (e.key === '/') {
// Open
visible = true;
+ caretPosition = carta.input.getCursorXY();
slashPosition = carta.input.textarea.selectionStart + 1;
filter = '';
}
@@ -119,7 +122,17 @@
carta.input.update();
}
- $: groupedSnippets = Object.entries(groupBy(filteredSnippets, 'group'));
+ $: {
+ if (elem) {
+ // Make statement reactive
+ caretPosition, elem.clientWidth, elem.clientHeight;
+ carta.input?.moveElemToCaret(elem);
+ }
+ }
+
+ $: {
+ groupedSnippets = Object.entries(groupBy(filteredSnippets, 'group'));
+ }
$: {
// Scroll to make hovering snippet always visible
@@ -135,7 +148,7 @@
{#if visible && filteredSnippets.length > 0}
-
+
{#each groupedSnippets as [group, snippets], groupIndex}
{group}
diff --git a/packages/plugin-slash/src/lib/index.ts b/packages/plugin-slash/src/lib/index.ts
index 48d545d..811ea65 100644
--- a/packages/plugin-slash/src/lib/index.ts
+++ b/packages/plugin-slash/src/lib/index.ts
@@ -1,6 +1,6 @@
import { fade, scale, type TransitionConfig } from 'svelte/transition';
import SlashComponent from './Slash.svelte';
-import type { Plugin, ExtensionComponent } from 'carta-md';
+import type { CartaExtension, CartaExtensionComponent } from 'carta-md';
import BezierEasing from 'bezier-easing';
import { defaultSnippets, type DefaultSnippetId, type SlashSnippet } from './snippets';
export * from './default.css?inline';
@@ -35,7 +35,7 @@ interface ComponentProps {
* @param options Extension options.
* @returns The slash extension.
*/
-export const slash = (options?: SlashExtensionOptions): Plugin => {
+export const slash = (options?: SlashExtensionOptions): CartaExtension => {
const snippets: SlashSnippet[] = defaultSnippets.filter((snippet) =>
options?.disableDefaultSnippets === true
? false
@@ -56,7 +56,7 @@ export const slash = (options?: SlashExtensionOptions): Plugin => {
fade(node, {
duration: 100
}));
- const slashComponent: ExtensionComponent = {
+ const slashComponent: CartaExtensionComponent = {
component: SlashComponent,
props: {
snippets,
diff --git a/packages/plugin-slash/src/lib/snippets.ts b/packages/plugin-slash/src/lib/snippets.ts
index 9327d6d..fbe51e1 100644
--- a/packages/plugin-slash/src/lib/snippets.ts
+++ b/packages/plugin-slash/src/lib/snippets.ts
@@ -1,4 +1,4 @@
-import type { InputEnhancer } from 'carta-md';
+import type { CartaInput } from 'carta-md';
export interface SlashSnippet {
/**
@@ -12,10 +12,10 @@ export interface SlashSnippet {
* Snippet callback.
* @param input Carta input.
*/
- action: (input: InputEnhancer) => void;
+ action: (input: CartaInput) => void;
}
-function insertLine(input: InputEnhancer, string: string) {
+function insertLine(input: CartaInput, string: string) {
const line = input.getLine();
if (line.value !== '') {
input.insertAt(line.end, `\n${string}`);
diff --git a/packages/plugin-slash/src/routes/+page.svelte b/packages/plugin-slash/src/routes/+page.svelte
index ea9fa8f..23128f9 100644
--- a/packages/plugin-slash/src/routes/+page.svelte
+++ b/packages/plugin-slash/src/routes/+page.svelte
@@ -1,5 +1,5 @@
-
+
```
-## Documentation
+## Options
-Checkout the [docs](https://beartocode.github.io/carta/plugins/tikz) for examples, options and more.
+Here are the options you can pass to `tikz()`:
+
+```ts
+interface TikzExtensionOptions {
+ /**
+ * Enables Tikzjax console output.
+ */
+ debug?: boolean;
+ /**
+ * Class for generated svg div container.
+ */
+ class?: string;
+ /**
+ * Whether to center the generated expression.
+ * @default true
+ */
+ center?: boolean;
+ /**
+ * Post processing function for html.
+ * This also runs on stored html, differently
+ * from `postProcess`, which only runs when
+ * the element is first created.
+ */
+ postProcessing?: (html: string) => string;
+ /**
+ * Post processing function for rendered SVGs Elem.
+ * @deprecated Use `postProcessing` instead.
+ */
+ postProcess?: (elem: SVGElement) => void;
+}
+```
diff --git a/packages/plugin-tikz/package.json b/packages/plugin-tikz/package.json
index 631dd00..f1580c3 100644
--- a/packages/plugin-tikz/package.json
+++ b/packages/plugin-tikz/package.json
@@ -18,23 +18,23 @@
"build": "vite build"
},
"devDependencies": {
- "@types/hast": "^3.0.4",
"@types/md5": "^2.3.2",
"carta-md": "workspace:*",
"md5": "^2.3.0",
"typescript": "^5.0.4",
- "unified": "^11.0.4",
- "vite": "^5.1.6",
- "vite-plugin-dts": "^3.7.3",
- "vite-raw-plugin": "^1.0.2"
+ "vite": "^4.3.9",
+ "vite-plugin-dts": "^2.3.0",
+ "vite-raw-plugin": "^1.0.2",
+ "marked": "^9.1.5"
},
"peerDependencies": {
- "carta-md": "^4.0.0"
+ "carta-md": "^3.0.0",
+ "marked": "^9.1.5"
},
"files": [
"dist"
],
- "version": "4.0.0",
+ "version": "3.0.0",
"keywords": [
"carta",
"markdown",
@@ -46,9 +46,5 @@
"syntax highlighting",
"emoji",
"katex"
- ],
- "dependencies": {
- "hast-util-from-dom": "^5.0.0",
- "unist-util-visit": "^5.0.0"
- }
+ ]
}
diff --git a/packages/plugin-tikz/src/index.ts b/packages/plugin-tikz/src/index.ts
index 8ef05de..0a40f74 100644
--- a/packages/plugin-tikz/src/index.ts
+++ b/packages/plugin-tikz/src/index.ts
@@ -1,8 +1,5 @@
-import type { Carta, Event, Plugin } from 'carta-md';
-import type { Plugin as UnifiedPlugin } from 'unified';
-import { visit, SKIP } from 'unist-util-visit';
-import { fromDom } from 'hast-util-from-dom';
-import type * as hast from 'hast';
+import type { Carta, CartaEvent, CartaExtension } from 'carta-md';
+import { TokenizerAndRendererExtension } from 'marked';
import md5 from 'md5';
interface TikzExtensionOptions {
@@ -21,124 +18,102 @@ interface TikzExtensionOptions {
center?: boolean;
/**
* Post processing function for html.
- * This also runs on stored html.
+ * This also runs on stored html, differently
+ * from `postProcess`, which only runs when
+ * the element is first created.
*/
postProcessing?: (html: string) => string;
+ /**
+ * Post processing function for rendered SVGs Elem.
+ * @deprecated Use `postProcessing` instead.
+ */
+ postProcess?: (elem: SVGElement) => void;
}
+let carta: Carta;
+
/**
* TikzJax extension for Carta.
* @param options Tikz options.
*/
-export const tikz = (options?: TikzExtensionOptions): Plugin => {
- let carta: Carta;
+export const tikz = (options?: TikzExtensionOptions): CartaExtension => {
return {
- onLoad: async ({ carta: c }) => {
- carta = c;
-
- const highlighter = await carta.highlighter();
- await highlighter.loadLanguage('latex');
- carta.input?.update();
+ cartaRef: (c) => (carta = c),
+ shjRef: (shj) => {
+ import('./tikz')
+ .then((module) => shj.loadCustomLanguage('tikz', module))
+ .then(() => carta.input?.update());
},
- transformers: [
+ markedExtensions: [
{
- execution: 'async',
- type: 'rehype',
- transform({ carta, processor }) {
- processor.use(tikzTransformer, { carta, options });
- }
+ async: true,
+ extensions: [tikzTokenizer(options)]
}
],
- listeners: [['carta-render', (e) => generateTikzImages(e, options)]],
- grammarRules: [
- {
- name: 'tikz',
- type: 'block',
- definition: {
- begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tikz)((\\s+|:|,|\\{|\\?)[^`]*)?$)',
- beginCaptures: {
- '3': { name: 'punctuation.definition.markdown' },
- '4': { name: 'fenced_code.block.language.markdown' },
- '5': { name: 'fenced_code.block.language.attributes.markdown' }
- },
- end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$',
- endCaptures: { '3': { name: 'punctuation.definition.markdown' } },
- name: 'markup.fenced_code.block.markdown',
- patterns: [
- {
- begin: '(^|\\G)(\\s*)(.*)',
- contentName: 'meta.embedded.block.latex',
- patterns: [{ include: 'text.tex.latex' }],
- while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)'
- }
- ]
- }
- }
- ]
+ listeners: [['carta-render', (e) => generateTikzImages(e, options)]]
};
};
// Keeps track of tikz generation to remove previous items
let currentGeneration = 0;
-const tikzTransformer: UnifiedPlugin<
- [{ carta: Carta; options: TikzExtensionOptions | undefined }],
- hast.Root
-> = ({ carta, options }) => {
- return async function (tree) {
- visit(tree, (pre, index, parent) => {
+const tikzTokenizer = (options?: TikzExtensionOptions): TokenizerAndRendererExtension => {
+ return {
+ name: 'tikz',
+ level: 'block',
+ start: (src) => src.indexOf('\n```tikz'),
+ tokenizer: (src) => {
+ const match = src.match(/^```tikz+\n([^`]+?)\n```+\n/);
+ if (match) {
+ return {
+ type: 'tikz',
+ raw: match[0],
+ text: match[1].trim()
+ };
+ }
+ },
+ renderer: (token) => {
if (typeof document === 'undefined') {
// Cannot run outside the browser
- return;
+ return ``;
}
- if (pre.type !== 'element') return;
- const preElement = pre as hast.Element;
- if (preElement.tagName !== 'pre') return;
- const element = pre.children.at(0) as hast.Element | undefined;
- if (!element) return;
-
- if (element.tagName !== 'code') return;
- if (!element.properties['className']) return;
- if (!(element.properties['className'] as string[]).includes('language-tikz')) return;
-
- // Element is a TikZ code block
- const source = tidyTikzSource((element.children[0] as hast.Text).value as string);
-
- const container = document.createElement('div');
const template = document.createElement('div');
- const text = document.createTextNode(source);
-
- container.classList.add('tikz-generated');
- container.setAttribute('tikz-generation', currentGeneration.toString());
- if (options?.center ?? true) container.setAttribute('align', 'center');
- if (options?.class) container.classList.add(...options.class.split(' '));
+ const center = options?.center ?? true;
template.setAttribute('type', 'tikzjax');
if (options?.debug) template.setAttribute('data-show-console', 'true');
+ const text = document.createTextNode(
+ tidyTikzSource(token.raw.slice(8, token.raw.length - 4))
+ );
template.appendChild(text);
- const hash = md5(JSON.stringify(template.dataset) + text.nodeValue);
- let savedSvg = window.localStorage.getItem(hash);
+ // Try accessing cached HTML
+ const hash = md5(JSON.stringify(template.dataset) + template.childNodes[0].nodeValue);
+ const savedSvg = window.localStorage.getItem(hash);
+ let html: string;
if (savedSvg) {
- if (options?.postProcessing) savedSvg = options.postProcessing(savedSvg);
- container.innerHTML = savedSvg;
+ html = savedSvg;
+ if (options?.postProcessing) html = options.postProcessing(html);
} else {
- container.appendChild(template);
+ html = template.outerHTML;
}
- if (carta.sanitizer) {
- container.innerHTML = carta.sanitizer(container.innerHTML);
- }
+ const sanitizer = carta.options?.sanitizer;
+ if (sanitizer) html = sanitizer(html);
- const hastNode = fromDom(container) as hast.Element;
-
- parent?.children.splice(index!, 1, hastNode);
-
- return [SKIP, index!];
- });
+ return `
+
+ ${html}
+
+ `;
+ }
};
};
@@ -148,7 +123,7 @@ declare global {
}
}
-function generateTikzImages(e: Event, options?: TikzExtensionOptions) {
+function generateTikzImages(e: CartaEvent, options?: TikzExtensionOptions) {
const carta = e.detail.carta;
const container = carta.renderer?.container;
if (!container) {
@@ -169,13 +144,12 @@ function removePreviousImages(container: HTMLDivElement) {
async function loadTikz(options?: TikzExtensionOptions) {
if (window.tikzjax != null) return;
- window.tikzjax = true;
// eslint-disable-next-line
// @ts-ignore
const tikzjax = (await import('./assets/tikzjax.js')).default;
- const script = /* html */ ``;
+ const script = ``;
// Simply appending the element does not work as the script is not executed
// By doing the following we ensure that it is run.
@@ -186,6 +160,9 @@ async function loadTikz(options?: TikzExtensionOptions) {
document.addEventListener('tikzjax-load-finished', (e) => {
const elem = e.target as SVGElement;
+ // Support old version
+ options?.postProcess && options.postProcess(elem);
+
if (options?.postProcessing) elem.outerHTML = options.postProcessing(elem.outerHTML);
});
}
diff --git a/packages/plugin-tikz/src/tikz.ts b/packages/plugin-tikz/src/tikz.ts
new file mode 100644
index 0000000..7050195
--- /dev/null
+++ b/packages/plugin-tikz/src/tikz.ts
@@ -0,0 +1,26 @@
+export default [
+ {
+ match: /\\(usepackage|input|usemodule)(?![a-zA-Z0-9])/g,
+ type: 'str'
+ },
+ {
+ match: /\\(begin|end|node)(?![a-zA-Z0-9])/g,
+ type: 'class'
+ },
+ {
+ match: /\\[a-zA-Z0-9]+/g,
+ type: 'oper'
+ },
+ {
+ match: /%.+$/gm,
+ type: 'cmnt'
+ },
+ {
+ match: /(\(|\)|\{|\}|\[|\])/g,
+ type: 'esc'
+ },
+ {
+ match: /[0-9]+[a-z]{0,3}/g,
+ type: 'num'
+ }
+];
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1968455..a449661 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,6 +4,12 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+overrides:
+ '@adobe/css-tools@<4.3.1': '>=4.3.1'
+ semver@>=7.0.0 <7.5.2: '>=7.5.2'
+ postcss@<8.4.31: '>=8.4.31'
+ undici@<5.26.2: '>=5.26.2'
+
importers:
.:
@@ -13,10 +19,10 @@ importers:
version: 18.16.3
'@typescript-eslint/eslint-plugin':
specifier: ^6.10.0
- version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.39.0)(typescript@5.3.3)
+ version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.39.0)(typescript@5.1.6)
'@typescript-eslint/parser':
specifier: ^6.10.0
- version: 6.10.0(eslint@8.39.0)(typescript@5.3.3)
+ version: 6.10.0(eslint@8.39.0)(typescript@5.1.6)
commitizen:
specifier: ^4.3.0
version: 4.3.0
@@ -31,7 +37,7 @@ importers:
version: 8.8.0(eslint@8.39.0)
eslint-plugin-svelte:
specifier: ^2.35.0
- version: 2.35.0(eslint@8.39.0)(svelte@4.2.12)(ts-node@10.9.1)
+ version: 2.35.0(eslint@8.39.0)(svelte@3.58.0)(ts-node@10.9.1)
husky:
specifier: ^8.0.3
version: 8.0.3
@@ -42,14 +48,11 @@ importers:
specifier: ^6.3.0
version: 6.3.0
prettier:
- specifier: 3.1.0
- version: 3.1.0
+ specifier: ^2.8.8
+ version: 2.8.8
prettier-plugin-svelte:
- specifier: ^3.1.0
- version: 3.1.0(prettier@3.1.0)(svelte@4.2.12)
- prettier-plugin-tailwindcss:
- specifier: ^0.5.7
- version: 0.5.7(prettier-plugin-svelte@3.1.0)(prettier@3.1.0)
+ specifier: ^2.10.0
+ version: 2.10.0(prettier@2.8.8)(svelte@3.58.0)
semantic-release:
specifier: ^20.1.3
version: 20.1.3
@@ -57,11 +60,8 @@ importers:
specifier: ^7.0.5
version: 7.0.5(semantic-release@20.1.3)
- docs:
+ demo:
dependencies:
- '@cartamd/plugin-attachment':
- specifier: workspace:^
- version: link:../packages/plugin-attachment
'@cartamd/plugin-code':
specifier: workspace:^
version: link:../packages/plugin-code
@@ -77,195 +77,86 @@ importers:
'@cartamd/plugin-tikz':
specifier: workspace:^
version: link:../packages/plugin-tikz
- bits-ui:
- specifier: ^0.9.1
- version: 0.9.4(svelte@4.2.12)
carta-md:
specifier: workspace:^
version: link:../packages/carta-md
- clsx:
- specifier: ^2.0.0
- version: 2.0.0
- cmdk-sv:
- specifier: ^0.0.6
- version: 0.0.6(svelte@4.2.12)
- flexsearch:
- specifier: 0.7.21
- version: 0.7.21
- iconify-icon:
- specifier: ^2.0.0
- version: 2.0.0
katex:
- specifier: ^0.16.10
- version: 0.16.10
- tailwind-merge:
- specifier: ^2.0.0
- version: 2.0.0
+ specifier: ^0.16.7
+ version: 0.16.7
devDependencies:
'@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
+ specifier: ^2.0.0
+ version: 2.0.0(@sveltejs/kit@1.15.9)
'@sveltejs/adapter-static':
- specifier: 3.0.1
- version: 3.0.1(@sveltejs/kit@2.5.4)
+ specifier: 1.0.0-next.50
+ version: 1.0.0-next.50(@sveltejs/kit@1.15.9)
'@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
- '@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.12)(typescript@5.1.6)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.12)(vite@5.1.6)
- '@types/flexsearch':
- specifier: ^0.7.6
- version: 0.7.6
+ specifier: ^1.5.0
+ version: 1.15.9(svelte@3.55.1)(vite@4.3.9)
'@types/katex':
specifier: ^0.16.0
version: 0.16.0
- autoprefixer:
- specifier: ^10.4.16
- version: 10.4.16(postcss@8.4.36)
- mdsvex:
- specifier: ^0.11.0
- version: 0.11.0(svelte@4.2.12)
- rehype-autolink-headings:
- specifier: ^7.1.0
- version: 7.1.0
- rehype-slug:
- specifier: ^6.0.0
- version: 6.0.0
- sass:
- specifier: ^1.69.5
- version: 1.69.5
svelte:
- specifier: ^4.2.12
- version: 4.2.12
+ specifier: ^3.54.0 || ^4.0.0
+ version: 3.55.1
svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.36)(sass@1.69.5)(svelte@4.2.12)
- tailwindcss:
- specifier: ^3.3.5
- version: 3.3.5(ts-node@10.9.1)
+ specifier: ^3.0.1
+ version: 3.2.0(postcss@8.4.31)(svelte@3.55.1)
tslib:
specifier: ^2.4.1
version: 2.5.0
typescript:
specifier: ^5.0.0
- version: 5.1.6
+ version: 5.0.4
vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ specifier: ^4.3.9
+ version: 4.3.9(@types/node@18.16.3)
packages/carta-md:
dependencies:
- rehype-stringify:
- specifier: ^10.0.0
- version: 10.0.0
- remark-gfm:
- specifier: ^4.0.0
- version: 4.0.0
- remark-parse:
- specifier: ^11.0.0
- version: 11.0.0
- remark-rehype:
- specifier: ^11.1.0
- version: 11.1.0
- shiki:
- specifier: ^1.4.0
- version: 1.4.0
- svelte:
- specifier: ^3.54.0 || ^4.0.0
- version: 4.2.2
- unified:
- specifier: ^11.0.4
- version: 11.0.4
- devDependencies:
- '@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
- '@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.2)(vite@5.1.6)
- '@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.2)(typescript@5.1.6)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.2)(vite@5.1.6)
- svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.31)(svelte@4.2.2)
- tslib:
- specifier: ^2.4.1
- version: 2.5.0
- typescript:
- specifier: ^5.1.6
- version: 5.1.6
- vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
-
- packages/plugin-anchor:
- dependencies:
- rehype-autolink-headings:
- specifier: ^7.1.0
- version: 7.1.0
- rehype-slug:
- specifier: ^6.0.0
- version: 6.0.0
- devDependencies:
- '@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
- '@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.2)(vite@5.1.6)
- '@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.2)(typescript@5.1.6)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.2)(vite@5.1.6)
- carta-md:
- specifier: workspace:*
- version: link:../carta-md
+ '@speed-highlight/core':
+ specifier: 1.2.2
+ version: 1.2.2
marked:
specifier: ^9.1.5
version: 9.1.5
- publint:
- specifier: ^0.1.9
- version: 0.1.12
svelte:
specifier: ^3.54.0 || ^4.0.0
- version: 4.2.2
+ version: 3.55.1
+ devDependencies:
+ '@sveltejs/adapter-auto':
+ specifier: ^1.0.0-next.90
+ version: 1.0.3(@sveltejs/kit@1.15.9)
+ '@sveltejs/kit':
+ specifier: ^1.0.0-next.587
+ version: 1.15.9(svelte@3.55.1)(vite@4.3.9)
+ '@sveltejs/package':
+ specifier: ^2.0.2
+ version: 2.0.2(svelte@3.55.1)(typescript@5.1.6)
svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.31)(svelte@4.2.2)
+ specifier: ^3.2.0
+ version: 3.2.0(postcss@8.4.31)(svelte@3.55.1)
tslib:
specifier: ^2.4.1
version: 2.5.0
typescript:
- specifier: ^5.0.0
- version: 5.1.6
- vite:
specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ version: 5.1.6
+ typescript-plugin-css-modules:
+ specifier: ^5.0.1
+ version: 5.0.1(ts-node@10.9.1)(typescript@5.1.6)
packages/plugin-attachment:
devDependencies:
'@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
+ specifier: ^2.0.0
+ version: 2.0.0(@sveltejs/kit@1.27.1)
'@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^1.27.1
+ version: 1.27.1(svelte@4.2.2)(vite@4.3.9)
'@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.12)(typescript@5.1.6)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^2.2.2
+ version: 2.2.2(svelte@4.2.2)(typescript@5.1.6)
'@types/node-emoji':
specifier: ^1.8.2
version: 1.8.2
@@ -279,11 +170,11 @@ importers:
specifier: ^0.1.9
version: 0.1.12
svelte:
- specifier: ^4.2.12
- version: 4.2.12
+ specifier: ^4.2.2
+ version: 4.2.2
svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.31)(svelte@4.2.12)
+ specifier: ^3.5.2
+ version: 3.5.2(postcss@8.4.31)(svelte@4.2.2)
tslib:
specifier: ^2.4.1
version: 2.5.0
@@ -291,17 +182,14 @@ importers:
specifier: ^5.0.0
version: 5.1.6
vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ specifier: ^4.3.9
+ version: 4.3.9(@types/node@18.16.3)
packages/plugin-code:
dependencies:
- '@shikijs/rehype':
- specifier: ^1.4.0
- version: 1.4.0
- unified:
- specifier: ^11.0.4
- version: 11.0.4
+ marked-highlight:
+ specifier: ^2.0.6
+ version: 2.0.6(marked@9.1.5)
devDependencies:
'@types/node':
specifier: ^18.16.3
@@ -309,6 +197,9 @@ importers:
carta-md:
specifier: workspace:*
version: link:../carta-md
+ marked:
+ specifier: ^9.1.5
+ version: 9.1.5
typescript:
specifier: ^5.0.4
version: 5.0.4
@@ -324,22 +215,16 @@ importers:
node-emoji:
specifier: ^1.11.0
version: 1.11.0
- remark-gemoji:
- specifier: ^8.0.0
- version: 8.0.0
devDependencies:
'@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
+ specifier: ^2.0.0
+ version: 2.0.0(@sveltejs/kit@1.15.9)
'@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^1.5.0
+ version: 1.15.9(svelte@3.55.1)(vite@4.3.9)
'@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.12)(typescript@5.0.4)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^2.0.0
+ version: 2.0.2(svelte@3.55.1)(typescript@5.0.4)
'@types/node-emoji':
specifier: ^1.8.2
version: 1.8.2
@@ -353,11 +238,11 @@ importers:
specifier: ^0.1.9
version: 0.1.12
svelte:
- specifier: ^4.2.12
- version: 4.2.12
+ specifier: ^3.54.0 || ^4.0.0
+ version: 3.55.1
svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.31)(svelte@4.2.12)
+ specifier: ^3.0.1
+ version: 3.2.0(postcss@8.4.31)(svelte@3.55.1)
tslib:
specifier: ^2.4.1
version: 2.5.0
@@ -365,21 +250,24 @@ importers:
specifier: ^5.0.0
version: 5.0.4
vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ specifier: ^4.3.9
+ version: 4.3.9(@types/node@18.16.3)
packages/plugin-math:
dependencies:
- rehype-katex:
- specifier: ^7.0.0
- version: 7.0.0
- remark-math:
- specifier: ^6.0.0
- version: 6.0.0
+ katex:
+ specifier: ^0.16.7
+ version: 0.16.7
devDependencies:
+ '@types/katex':
+ specifier: ^0.16.0
+ version: 0.16.0
carta-md:
specifier: workspace:*
version: link:../carta-md
+ marked:
+ specifier: ^9.1.5
+ version: 9.1.5
typescript:
specifier: ^5.0.4
version: 5.0.4
@@ -391,17 +279,14 @@ importers:
version: 2.1.0
devDependencies:
'@sveltejs/adapter-auto':
- specifier: ^3.1.1
- version: 3.1.1(@sveltejs/kit@2.5.4)
+ specifier: ^2.0.0
+ version: 2.0.0(@sveltejs/kit@1.15.9)
'@sveltejs/kit':
- specifier: ^2.5.4
- version: 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^1.5.0
+ version: 1.15.9(svelte@3.55.1)(vite@4.3.9)
'@sveltejs/package':
- specifier: ^2.3.0
- version: 2.3.0(svelte@4.2.12)(typescript@5.0.4)
- '@sveltejs/vite-plugin-svelte':
- specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.12)(vite@5.1.6)
+ specifier: ^2.0.0
+ version: 2.0.2(svelte@3.55.1)(typescript@5.0.4)
'@types/node-emoji':
specifier: ^1.8.2
version: 1.8.2
@@ -415,11 +300,11 @@ importers:
specifier: ^0.1.9
version: 0.1.12
svelte:
- specifier: ^4.2.12
- version: 4.2.12
+ specifier: ^3.54.0 || ^4.0.0
+ version: 3.55.1
svelte-check:
- specifier: ^3.6.7
- version: 3.6.7(postcss@8.4.31)(svelte@4.2.12)
+ specifier: ^3.0.1
+ version: 3.2.0(postcss@8.4.31)(svelte@3.55.1)
tslib:
specifier: ^2.4.1
version: 2.5.0
@@ -427,51 +312,40 @@ importers:
specifier: ^5.0.0
version: 5.0.4
vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ specifier: ^4.3.9
+ version: 4.3.9(@types/node@18.16.3)
packages/plugin-tikz:
- dependencies:
- hast-util-from-dom:
- specifier: ^5.0.0
- version: 5.0.0
- unist-util-visit:
- specifier: ^5.0.0
- version: 5.0.0
devDependencies:
- '@types/hast':
- specifier: ^3.0.4
- version: 3.0.4
'@types/md5':
specifier: ^2.3.2
version: 2.3.2
carta-md:
specifier: workspace:*
version: link:../carta-md
+ marked:
+ specifier: ^9.1.5
+ version: 9.1.5
md5:
specifier: ^2.3.0
version: 2.3.0
typescript:
specifier: ^5.0.4
version: 5.0.4
- unified:
- specifier: ^11.0.4
- version: 11.0.4
vite:
- specifier: ^5.1.6
- version: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ specifier: ^4.3.9
+ version: 4.3.9(@types/node@18.16.3)
vite-plugin-dts:
- specifier: ^3.7.3
- version: 3.7.3(@types/node@18.16.3)(typescript@5.0.4)(vite@5.1.6)
+ specifier: ^2.3.0
+ version: 2.3.0(@types/node@18.16.3)(vite@4.3.9)
vite-raw-plugin:
specifier: ^1.0.2
version: 1.0.2
packages:
- /@alloc/quick-lru@5.2.0:
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
+ /@adobe/css-tools@4.3.1:
+ resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==}
dev: true
/@ampproject/remapping@2.2.1:
@@ -480,6 +354,7 @@ packages:
dependencies:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.18
+ dev: true
/@babel/code-frame@7.22.5:
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
@@ -507,21 +382,14 @@ packages:
js-tokens: 4.0.0
dev: true
- /@babel/parser@7.24.0:
- resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==}
+ /@babel/parser@7.21.5:
+ resolution: {integrity: sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.21.5
dev: true
- /@babel/runtime@7.23.2:
- resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- regenerator-runtime: 0.14.0
- dev: false
-
/@babel/types@7.21.5:
resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==}
engines: {node: '>=6.9.0'}
@@ -611,17 +479,8 @@ packages:
'@jridgewell/trace-mapping': 0.3.9
dev: true
- /@esbuild/aix-ppc64@0.19.12:
- resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
- requiresBuild: true
- dev: true
- optional: true
-
- /@esbuild/android-arm64@0.19.12:
- resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+ /@esbuild/android-arm64@0.17.18:
+ resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
@@ -629,8 +488,8 @@ packages:
dev: true
optional: true
- /@esbuild/android-arm@0.19.12:
- resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+ /@esbuild/android-arm@0.17.18:
+ resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
@@ -638,8 +497,8 @@ packages:
dev: true
optional: true
- /@esbuild/android-x64@0.19.12:
- resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+ /@esbuild/android-x64@0.17.18:
+ resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
@@ -647,8 +506,8 @@ packages:
dev: true
optional: true
- /@esbuild/darwin-arm64@0.19.12:
- resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+ /@esbuild/darwin-arm64@0.17.18:
+ resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
@@ -656,8 +515,8 @@ packages:
dev: true
optional: true
- /@esbuild/darwin-x64@0.19.12:
- resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+ /@esbuild/darwin-x64@0.17.18:
+ resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
@@ -665,8 +524,8 @@ packages:
dev: true
optional: true
- /@esbuild/freebsd-arm64@0.19.12:
- resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+ /@esbuild/freebsd-arm64@0.17.18:
+ resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
@@ -674,8 +533,8 @@ packages:
dev: true
optional: true
- /@esbuild/freebsd-x64@0.19.12:
- resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+ /@esbuild/freebsd-x64@0.17.18:
+ resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
@@ -683,8 +542,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-arm64@0.19.12:
- resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+ /@esbuild/linux-arm64@0.17.18:
+ resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
@@ -692,8 +551,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-arm@0.19.12:
- resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+ /@esbuild/linux-arm@0.17.18:
+ resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
@@ -701,8 +560,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-ia32@0.19.12:
- resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+ /@esbuild/linux-ia32@0.17.18:
+ resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
@@ -710,8 +569,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-loong64@0.19.12:
- resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+ /@esbuild/linux-loong64@0.17.18:
+ resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
@@ -719,8 +578,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-mips64el@0.19.12:
- resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+ /@esbuild/linux-mips64el@0.17.18:
+ resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
@@ -728,8 +587,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-ppc64@0.19.12:
- resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+ /@esbuild/linux-ppc64@0.17.18:
+ resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
@@ -737,8 +596,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-riscv64@0.19.12:
- resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+ /@esbuild/linux-riscv64@0.17.18:
+ resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
@@ -746,8 +605,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-s390x@0.19.12:
- resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+ /@esbuild/linux-s390x@0.17.18:
+ resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
@@ -755,8 +614,8 @@ packages:
dev: true
optional: true
- /@esbuild/linux-x64@0.19.12:
- resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+ /@esbuild/linux-x64@0.17.18:
+ resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
@@ -764,8 +623,8 @@ packages:
dev: true
optional: true
- /@esbuild/netbsd-x64@0.19.12:
- resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+ /@esbuild/netbsd-x64@0.17.18:
+ resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
@@ -773,8 +632,8 @@ packages:
dev: true
optional: true
- /@esbuild/openbsd-x64@0.19.12:
- resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+ /@esbuild/openbsd-x64@0.17.18:
+ resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
@@ -782,8 +641,8 @@ packages:
dev: true
optional: true
- /@esbuild/sunos-x64@0.19.12:
- resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+ /@esbuild/sunos-x64@0.17.18:
+ resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
@@ -791,8 +650,8 @@ packages:
dev: true
optional: true
- /@esbuild/win32-arm64@0.19.12:
- resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ /@esbuild/win32-arm64@0.17.18:
+ resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
@@ -800,8 +659,8 @@ packages:
dev: true
optional: true
- /@esbuild/win32-ia32@0.19.12:
- resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+ /@esbuild/win32-ia32@0.17.18:
+ resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
@@ -809,8 +668,8 @@ packages:
dev: true
optional: true
- /@esbuild/win32-x64@0.19.12:
- resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+ /@esbuild/win32-x64@0.17.18:
+ resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@@ -860,22 +719,10 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@floating-ui/core@1.5.0:
- resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==}
- dependencies:
- '@floating-ui/utils': 0.1.6
- dev: false
-
- /@floating-ui/dom@1.5.3:
- resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
- dependencies:
- '@floating-ui/core': 1.5.0
- '@floating-ui/utils': 0.1.6
- dev: false
-
- /@floating-ui/utils@0.1.6:
- resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
- dev: false
+ /@fastify/busboy@2.0.0:
+ resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
+ engines: {node: '>=14'}
+ dev: true
/@humanwhocodes/config-array@0.11.8:
resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
@@ -897,16 +744,6 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
- /@iconify/types@2.0.0:
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- dev: false
-
- /@internationalized/date@3.5.0:
- resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==}
- dependencies:
- '@swc/helpers': 0.5.3
- dev: false
-
/@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -926,26 +763,32 @@ packages:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.18
+ dev: true
/@jridgewell/resolve-uri@3.1.0:
resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
engines: {node: '>=6.0.0'}
+ dev: true
/@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
+ dev: true
/@jridgewell/sourcemap-codec@1.4.14:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+ dev: true
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
/@jridgewell/trace-mapping@0.3.18:
resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
dependencies:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
+ dev: true
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -955,46 +798,32 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
- /@melt-ui/svelte@0.61.1(svelte@4.2.12):
- resolution: {integrity: sha512-xG/rRK77yfzAWm0/KrB+NrJ3qzBALv7B3OoHGyLSfFXIGum+CzklxtDH8gNSuCA6ENfuPnY7pwy390+LNqvdig==}
- peerDependencies:
- svelte: '>=3 <5'
- dependencies:
- '@floating-ui/core': 1.5.0
- '@floating-ui/dom': 1.5.3
- '@internationalized/date': 3.5.0
- dequal: 2.0.3
- focus-trap: 7.5.4
- nanoid: 4.0.2
- svelte: 4.2.12
- dev: false
-
- /@microsoft/api-extractor-model@7.28.3(@types/node@18.16.3):
- resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==}
+ /@microsoft/api-extractor-model@7.26.7(@types/node@18.16.3):
+ resolution: {integrity: sha512-rx3Tq632VG3ddR74kPuPbv1qmUgO2IuCvn1z16hbNWNS5RhnTQqNPWIm7NVoi6lCh2E7uxzfmdnWXIXiJhM5IQ==}
dependencies:
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
- '@rushstack/node-core-library': 3.62.0(@types/node@18.16.3)
+ '@rushstack/node-core-library': 3.58.0(@types/node@18.16.3)
transitivePeerDependencies:
- '@types/node'
dev: true
- /@microsoft/api-extractor@7.39.0(@types/node@18.16.3):
- resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==}
+ /@microsoft/api-extractor@7.34.7(@types/node@18.16.3):
+ resolution: {integrity: sha512-8CrrYyOBWqc4XFviR1KSuHSlmJjlnC5CVpPkcFB8HXiLABUVaVWFTsOzJIwUU6z8mc4BZPZ8tSGAg/mwFDU31Q==}
hasBin: true
dependencies:
- '@microsoft/api-extractor-model': 7.28.3(@types/node@18.16.3)
+ '@microsoft/api-extractor-model': 7.26.7(@types/node@18.16.3)
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
- '@rushstack/node-core-library': 3.62.0(@types/node@18.16.3)
- '@rushstack/rig-package': 0.5.1
- '@rushstack/ts-command-line': 4.17.1
+ '@rushstack/node-core-library': 3.58.0(@types/node@18.16.3)
+ '@rushstack/rig-package': 0.3.18
+ '@rushstack/ts-command-line': 4.13.2
colors: 1.2.5
lodash: 4.17.21
resolve: 1.22.2
semver: 7.5.4
source-map: 0.6.1
- typescript: 5.3.3
+ typescript: 4.8.4
transitivePeerDependencies:
- '@types/node'
dev: true
@@ -1171,130 +1000,26 @@ packages:
config-chain: 1.1.13
dev: true
- /@polka/url@1.0.0-next.25:
- resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+ /@polka/url@1.0.0-next.21:
+ resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
dev: true
- /@rollup/pluginutils@5.1.0:
- resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
+ /@rollup/pluginutils@5.0.2:
+ resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- /@rushstack/node-core-library@3.62.0(@types/node@18.16.3):
- resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==}
+ /@rushstack/node-core-library@3.58.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-DHAZ3LTOEq2/EGURznpTJDnB3SNE2CKMDXuviQ6afhru6RykE3QoqXkeyjbpLb5ib5cpIRCPE/wykNe0xmQj3w==}
peerDependencies:
'@types/node': '*'
peerDependenciesMeta:
@@ -1311,15 +1036,15 @@ packages:
z-schema: 5.0.5
dev: true
- /@rushstack/rig-package@0.5.1:
- resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==}
+ /@rushstack/rig-package@0.3.18:
+ resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==}
dependencies:
resolve: 1.22.2
strip-json-comments: 3.1.1
dev: true
- /@rushstack/ts-command-line@4.17.1:
- resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==}
+ /@rushstack/ts-command-line@4.13.2:
+ resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==}
dependencies:
'@types/argparse': 1.0.38
argparse: 1.0.10
@@ -1422,226 +1147,230 @@ packages:
- supports-color
dev: true
- /@shikijs/core@1.4.0:
- resolution: {integrity: sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==}
+ /@speed-highlight/core@1.2.2:
+ resolution: {integrity: sha512-Yb3ewAUq7QwLbU+vF28dxkOmBJG5bHUVWZWQBnUt2GIhVWdiShKcE6kBMsCRXvD8AuK7gy0rR4qNckqZnCzEFw==}
dev: false
- /@shikijs/rehype@1.4.0:
- resolution: {integrity: sha512-Ba6QHYx+EIEvmqyNy/B49KAz3rXsTfAqYRY3KTZjPWonytokGOiJ1q/FV9l13D/ad6Qv+eWKhkAz6ITxx6ziFA==}
- dependencies:
- '@shikijs/transformers': 1.4.0
- '@types/hast': 3.0.4
- hast-util-to-string: 3.0.0
- shiki: 1.4.0
- unified: 11.0.4
- unist-util-visit: 5.0.0
- dev: false
-
- /@shikijs/transformers@1.4.0:
- resolution: {integrity: sha512-kzvlWmWYYSeaLKRce/kgmFFORUtBtFahfXRKndor0b60ocYiXufBQM6d6w1PlMuUkdk55aor9xLvy9wy7hTEJg==}
- dependencies:
- shiki: 1.4.0
- dev: false
-
- /@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.5.4):
- resolution: {integrity: sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==}
+ /@sveltejs/adapter-auto@1.0.3(@sveltejs/kit@1.15.9):
+ resolution: {integrity: sha512-hc7O12YQqvZ1CD4fo1gMJuPzBZvuoG5kwxb2RRoz4fVoB8B2vuPO2cY751Ln0G6T/HMrAf8kCqw6Pg+wbxcstw==}
peerDependencies:
- '@sveltejs/kit': ^2.0.0
+ '@sveltejs/kit': ^1.0.0
dependencies:
- '@sveltejs/kit': 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
- import-meta-resolve: 4.0.0
+ '@sveltejs/kit': 1.15.9(svelte@3.55.1)(vite@4.3.9)
+ import-meta-resolve: 2.2.2
dev: true
- /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.5.4):
- resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==}
+ /@sveltejs/adapter-auto@2.0.0(@sveltejs/kit@1.15.9):
+ resolution: {integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==}
peerDependencies:
- '@sveltejs/kit': ^2.0.0
+ '@sveltejs/kit': ^1.0.0
dependencies:
- '@sveltejs/kit': 2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
+ '@sveltejs/kit': 1.15.9(svelte@3.55.1)(vite@4.3.9)
+ import-meta-resolve: 2.2.2
dev: true
- /@sveltejs/kit@2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6):
- resolution: {integrity: sha512-eDxK2d4EGzk99QsZNoPXe7jlzA5EGqfcCpUwZ912bhnalsZ2ZsG5wGRthkydupVjYyqdmzEanVKFhLxU2vkPSQ==}
- engines: {node: '>=18.13'}
+ /@sveltejs/adapter-auto@2.0.0(@sveltejs/kit@1.27.1):
+ resolution: {integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==}
+ peerDependencies:
+ '@sveltejs/kit': ^1.0.0
+ dependencies:
+ '@sveltejs/kit': 1.27.1(svelte@4.2.2)(vite@4.3.9)
+ import-meta-resolve: 2.2.2
+ dev: true
+
+ /@sveltejs/adapter-static@1.0.0-next.50(@sveltejs/kit@1.15.9):
+ resolution: {integrity: sha512-xZKBmiwFGW8nrH8+eysUAAo9XrtApI81q0m67y1bexVw8IY7/x741b6VEklNM7BZ7js0Mi2x+yCkHpOee8UZKQ==}
+ peerDependencies:
+ '@sveltejs/kit': ^1.0.0-next.587
+ dependencies:
+ '@sveltejs/kit': 1.15.9(svelte@3.55.1)(vite@4.3.9)
+ dev: true
+
+ /@sveltejs/kit@1.15.9(svelte@3.55.1)(vite@4.3.9):
+ resolution: {integrity: sha512-Og+4WlguPVPS0PmAHefp4KxvTVZfyDN09aORVXIdKSzqzodSJiLs7Fhi/Q0z0YjmcoNLWF24tI0a6mTusL6Yfg==}
+ engines: {node: ^16.14 || >=18}
hasBin: true
requiresBuild: true
peerDependencies:
- '@sveltejs/vite-plugin-svelte': ^3.0.0
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.3
+ svelte: ^3.54.0
+ vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.1.6)
- '@types/cookie': 0.6.0
- cookie: 0.6.0
- devalue: 4.3.2
+ '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@3.55.1)(vite@4.3.9)
+ '@types/cookie': 0.5.1
+ cookie: 0.5.0
+ devalue: 4.3.0
esm-env: 1.0.0
- import-meta-resolve: 4.0.0
kleur: 4.1.5
- magic-string: 0.30.5
- mrmime: 2.0.0
+ magic-string: 0.30.0
+ mime: 3.0.0
sade: 1.8.1
set-cookie-parser: 2.6.0
- sirv: 2.0.4
- svelte: 4.2.12
+ sirv: 2.0.3
+ svelte: 3.55.1
tiny-glob: 0.2.9
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ undici: 5.26.3
+ vite: 4.3.9(@types/node@18.16.3)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@sveltejs/kit@2.5.4(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.2)(vite@5.1.6):
- resolution: {integrity: sha512-eDxK2d4EGzk99QsZNoPXe7jlzA5EGqfcCpUwZ912bhnalsZ2ZsG5wGRthkydupVjYyqdmzEanVKFhLxU2vkPSQ==}
- engines: {node: '>=18.13'}
+ /@sveltejs/kit@1.27.1(svelte@4.2.2)(vite@4.3.9):
+ resolution: {integrity: sha512-nYkOUJKbeI8fcwvt/cyhTdz6VG4kT6XVprNnzfIwif+IZ8RvxvJuPhPhYjz14ASIcMLpq8xC6D3X4xH3bvWi+Q==}
+ engines: {node: ^16.14 || >=18}
hasBin: true
requiresBuild: true
peerDependencies:
- '@sveltejs/vite-plugin-svelte': ^3.0.0
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.3
+ svelte: ^3.54.0 || ^4.0.0-next.0
+ vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.2)(vite@5.1.6)
- '@types/cookie': 0.6.0
- cookie: 0.6.0
+ '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.2)(vite@4.3.9)
+ '@types/cookie': 0.5.1
+ cookie: 0.5.0
devalue: 4.3.2
esm-env: 1.0.0
- import-meta-resolve: 4.0.0
kleur: 4.1.5
magic-string: 0.30.5
- mrmime: 2.0.0
+ mrmime: 1.0.1
sade: 1.8.1
set-cookie-parser: 2.6.0
- sirv: 2.0.4
+ sirv: 2.0.3
svelte: 4.2.2
tiny-glob: 0.2.9
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
- dev: true
-
- /@sveltejs/package@2.3.0(svelte@4.2.12)(typescript@5.0.4):
- resolution: {integrity: sha512-wmtwEfi3gQnmtotAjygRHR6cmLfpblQl1dU764f3N2I5DPe34llFs44bHOYcuk91Bp2sSq6bWUmNwxGlYCchOA==}
- engines: {node: ^16.14 || >=18}
- hasBin: true
- peerDependencies:
- svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1
- dependencies:
- chokidar: 3.6.0
- kleur: 4.1.5
- sade: 1.8.1
- semver: 7.5.4
- svelte: 4.2.12
- svelte2tsx: 0.7.4(svelte@4.2.12)(typescript@5.0.4)
- transitivePeerDependencies:
- - typescript
- dev: true
-
- /@sveltejs/package@2.3.0(svelte@4.2.12)(typescript@5.1.6):
- resolution: {integrity: sha512-wmtwEfi3gQnmtotAjygRHR6cmLfpblQl1dU764f3N2I5DPe34llFs44bHOYcuk91Bp2sSq6bWUmNwxGlYCchOA==}
- engines: {node: ^16.14 || >=18}
- hasBin: true
- peerDependencies:
- svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1
- dependencies:
- chokidar: 3.6.0
- kleur: 4.1.5
- sade: 1.8.1
- semver: 7.5.4
- svelte: 4.2.12
- svelte2tsx: 0.7.4(svelte@4.2.12)(typescript@5.1.6)
- transitivePeerDependencies:
- - typescript
- dev: true
-
- /@sveltejs/package@2.3.0(svelte@4.2.2)(typescript@5.1.6):
- resolution: {integrity: sha512-wmtwEfi3gQnmtotAjygRHR6cmLfpblQl1dU764f3N2I5DPe34llFs44bHOYcuk91Bp2sSq6bWUmNwxGlYCchOA==}
- engines: {node: ^16.14 || >=18}
- hasBin: true
- peerDependencies:
- svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1
- dependencies:
- chokidar: 3.6.0
- kleur: 4.1.5
- sade: 1.8.1
- semver: 7.5.4
- svelte: 4.2.2
- svelte2tsx: 0.7.4(svelte@4.2.2)(typescript@5.1.6)
- transitivePeerDependencies:
- - typescript
- dev: true
-
- /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6):
- resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
- engines: {node: ^18.0.0 || >=20}
- peerDependencies:
- '@sveltejs/vite-plugin-svelte': ^3.0.0
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.0
- dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.1.6)
- debug: 4.3.4
- svelte: 4.2.12
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ undici: 5.26.3
+ vite: 4.3.9(@types/node@18.16.3)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.2)(vite@5.1.6):
- resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
- engines: {node: ^18.0.0 || >=20}
+ /@sveltejs/package@2.0.2(svelte@3.55.1)(typescript@5.0.4):
+ resolution: {integrity: sha512-cCOCcO8yMHnhHyaR51nQtvKZ3o/vSU9UYI1EXLT1j2CKNPMuH1/g6JNwKcNNrtQGwwquudc69ZeYy8D/TDNwEw==}
+ engines: {node: ^16.14 || >=18}
+ hasBin: true
peerDependencies:
- '@sveltejs/vite-plugin-svelte': ^3.0.0
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.0
+ svelte: ^3.44.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.2)(vite@5.1.6)
- debug: 4.3.4
+ chokidar: 3.5.3
+ kleur: 4.1.5
+ sade: 1.8.1
+ svelte: 3.55.1
+ svelte2tsx: 0.6.11(svelte@3.55.1)(typescript@5.0.4)
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
+ /@sveltejs/package@2.0.2(svelte@3.55.1)(typescript@5.1.6):
+ resolution: {integrity: sha512-cCOCcO8yMHnhHyaR51nQtvKZ3o/vSU9UYI1EXLT1j2CKNPMuH1/g6JNwKcNNrtQGwwquudc69ZeYy8D/TDNwEw==}
+ engines: {node: ^16.14 || >=18}
+ hasBin: true
+ peerDependencies:
+ svelte: ^3.44.0
+ dependencies:
+ chokidar: 3.5.3
+ kleur: 4.1.5
+ sade: 1.8.1
+ svelte: 3.55.1
+ svelte2tsx: 0.6.11(svelte@3.55.1)(typescript@5.1.6)
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
+ /@sveltejs/package@2.2.2(svelte@4.2.2)(typescript@5.1.6):
+ resolution: {integrity: sha512-rP3sVv6cAntcdcG4r4KspLU6nZYYUrHJBAX3Arrw0KJFdgxtlsi2iDwN0Jwr/vIkgjcU0ZPWM8kkT5kpZDlWAw==}
+ engines: {node: ^16.14 || >=18}
+ hasBin: true
+ peerDependencies:
+ svelte: ^3.44.0 || ^4.0.0
+ dependencies:
+ chokidar: 3.5.3
+ kleur: 4.1.5
+ sade: 1.8.1
+ semver: 7.5.4
svelte: 4.2.2
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
+ svelte2tsx: 0.6.23(svelte@4.2.2)(typescript@5.1.6)
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
+ /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@3.55.1)(vite@4.3.9):
+ resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^2.2.0
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@3.55.1)(vite@4.3.9)
+ debug: 4.3.4
+ svelte: 3.55.1
+ vite: 4.3.9(@types/node@18.16.3)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.6):
- resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==}
- engines: {node: ^18.0.0 || >=20}
+ /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.2)(vite@4.3.9):
+ resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==}
+ engines: {node: ^14.18.0 || >= 16}
peerDependencies:
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.0
+ '@sveltejs/vite-plugin-svelte': ^2.2.0
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.6)
+ '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.2)(vite@4.3.9)
+ debug: 4.3.4
+ svelte: 4.2.2
+ vite: 4.3.9(@types/node@18.16.3)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@sveltejs/vite-plugin-svelte@2.4.2(svelte@3.55.1)(vite@4.3.9):
+ resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@3.55.1)(vite@4.3.9)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
- magic-string: 0.30.5
- svelte: 4.2.12
- svelte-hmr: 0.15.3(svelte@4.2.12)
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
- vitefu: 0.2.5(vite@5.1.6)
+ magic-string: 0.30.0
+ svelte: 3.55.1
+ svelte-hmr: 0.15.2(svelte@3.55.1)
+ vite: 4.3.9(@types/node@18.16.3)
+ vitefu: 0.2.4(vite@4.3.9)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.2)(vite@5.1.6):
- resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==}
- engines: {node: ^18.0.0 || >=20}
+ /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.2.2)(vite@4.3.9):
+ resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==}
+ engines: {node: ^14.18.0 || >= 16}
peerDependencies:
- svelte: ^4.0.0 || ^5.0.0-next.0
- vite: ^5.0.0
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.2)(vite@5.1.6)
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.2)(vite@4.3.9)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
- magic-string: 0.30.5
+ magic-string: 0.30.0
svelte: 4.2.2
- svelte-hmr: 0.15.3(svelte@4.2.2)
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
- vitefu: 0.2.5(vite@5.1.6)
+ svelte-hmr: 0.15.2(svelte@4.2.2)
+ vite: 4.3.9(@types/node@18.16.3)
+ vitefu: 0.2.4(vite@4.3.9)
transitivePeerDependencies:
- supports-color
dev: true
- /@swc/helpers@0.5.3:
- resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
+ /@ts-morph/common@0.19.0:
+ resolution: {integrity: sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==}
dependencies:
- tslib: 2.5.0
- dev: false
+ fast-glob: 3.2.12
+ minimatch: 7.4.6
+ mkdirp: 2.1.6
+ path-browserify: 1.0.1
+ dev: true
/@tsconfig/node10@1.0.9:
resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
@@ -1667,56 +1396,30 @@ packages:
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
dev: true
- /@types/cookie@0.6.0:
- resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+ /@types/cookie@0.5.1:
+ resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==}
dev: true
- /@types/debug@4.1.12:
- resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
- dependencies:
- '@types/ms': 0.7.34
- dev: false
-
/@types/estree@1.0.1:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
-
- /@types/estree@1.0.5:
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
-
- /@types/flexsearch@0.7.6:
- resolution: {integrity: sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA==}
dev: true
- /@types/hast@3.0.4:
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
- dependencies:
- '@types/unist': 3.0.2
-
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
/@types/katex@0.16.0:
resolution: {integrity: sha512-hz+S3nV6Mym5xPbT9fnO8dDhBFQguMYpY0Ipxv06JMi1ORgnEM4M1ymWDUhUNer3ElLmT583opRo4RzxKmh9jw==}
+ dev: true
/@types/md5@2.3.2:
resolution: {integrity: sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og==}
dev: true
- /@types/mdast@4.0.3:
- resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
- dependencies:
- '@types/unist': 3.0.2
- dev: false
-
/@types/minimist@1.2.4:
resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==}
dev: true
- /@types/ms@0.7.34:
- resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- dev: false
-
/@types/node-emoji@1.8.2:
resolution: {integrity: sha512-PfF1qL/9veo8BSHLV84C9ORNr3lHSlnWJ6yU8OdNufoftajeWHTLVbGHvp2B7e7DPDS9gMs6cfeSsqo5rqSitg==}
dev: true
@@ -1735,6 +1438,18 @@ packages:
resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==}
dev: true
+ /@types/postcss-modules-local-by-default@4.0.0:
+ resolution: {integrity: sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg==}
+ dependencies:
+ postcss: 8.4.31
+ dev: true
+
+ /@types/postcss-modules-scope@3.0.1:
+ resolution: {integrity: sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg==}
+ dependencies:
+ postcss: 8.4.31
+ dev: true
+
/@types/pug@2.0.6:
resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==}
dev: true
@@ -1743,14 +1458,7 @@ packages:
resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==}
dev: true
- /@types/unist@2.0.10:
- resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
- dev: true
-
- /@types/unist@3.0.2:
- resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
-
- /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.39.0)(typescript@5.3.3):
+ /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.39.0)(typescript@5.1.6):
resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -1762,10 +1470,10 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 6.10.0(eslint@8.39.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 6.10.0(eslint@8.39.0)(typescript@5.1.6)
'@typescript-eslint/scope-manager': 6.10.0
- '@typescript-eslint/type-utils': 6.10.0(eslint@8.39.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 6.10.0(eslint@8.39.0)(typescript@5.3.3)
+ '@typescript-eslint/type-utils': 6.10.0(eslint@8.39.0)(typescript@5.1.6)
+ '@typescript-eslint/utils': 6.10.0(eslint@8.39.0)(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.10.0
debug: 4.3.4
eslint: 8.39.0
@@ -1773,13 +1481,13 @@ packages:
ignore: 5.2.4
natural-compare: 1.4.0
semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.3.3)
- typescript: 5.3.3
+ ts-api-utils: 1.0.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@6.10.0(eslint@8.39.0)(typescript@5.3.3):
+ /@typescript-eslint/parser@6.10.0(eslint@8.39.0)(typescript@5.1.6):
resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -1791,11 +1499,11 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 6.10.0
'@typescript-eslint/types': 6.10.0
- '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.10.0
debug: 4.3.4
eslint: 8.39.0
- typescript: 5.3.3
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
@@ -1808,7 +1516,7 @@ packages:
'@typescript-eslint/visitor-keys': 6.10.0
dev: true
- /@typescript-eslint/type-utils@6.10.0(eslint@8.39.0)(typescript@5.3.3):
+ /@typescript-eslint/type-utils@6.10.0(eslint@8.39.0)(typescript@5.1.6):
resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -1818,12 +1526,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.3.3)
- '@typescript-eslint/utils': 6.10.0(eslint@8.39.0)(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.1.6)
+ '@typescript-eslint/utils': 6.10.0(eslint@8.39.0)(typescript@5.1.6)
debug: 4.3.4
eslint: 8.39.0
- ts-api-utils: 1.0.3(typescript@5.3.3)
- typescript: 5.3.3
+ ts-api-utils: 1.0.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
@@ -1833,7 +1541,7 @@ packages:
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
- /@typescript-eslint/typescript-estree@6.10.0(typescript@5.3.3):
+ /@typescript-eslint/typescript-estree@6.10.0(typescript@5.1.6):
resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -1848,13 +1556,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.3.3)
- typescript: 5.3.3
+ ts-api-utils: 1.0.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@6.10.0(eslint@8.39.0)(typescript@5.3.3):
+ /@typescript-eslint/utils@6.10.0(eslint@8.39.0)(typescript@5.1.6):
resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -1865,7 +1573,7 @@ packages:
'@types/semver': 7.5.4
'@typescript-eslint/scope-manager': 6.10.0
'@typescript-eslint/types': 6.10.0
- '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.1.6)
eslint: 8.39.0
semver: 7.5.4
transitivePeerDependencies:
@@ -1881,69 +1589,6 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
- /@ungap/structured-clone@1.2.0:
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
- /@volar/language-core@1.11.1:
- resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==}
- dependencies:
- '@volar/source-map': 1.11.1
- dev: true
-
- /@volar/source-map@1.11.1:
- resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==}
- dependencies:
- muggle-string: 0.3.1
- dev: true
-
- /@volar/typescript@1.11.1:
- resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==}
- dependencies:
- '@volar/language-core': 1.11.1
- path-browserify: 1.0.1
- dev: true
-
- /@vue/compiler-core@3.4.21:
- resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==}
- dependencies:
- '@babel/parser': 7.24.0
- '@vue/shared': 3.4.21
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.1.0
- dev: true
-
- /@vue/compiler-dom@3.4.21:
- resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==}
- dependencies:
- '@vue/compiler-core': 3.4.21
- '@vue/shared': 3.4.21
- dev: true
-
- /@vue/language-core@1.8.27(typescript@5.0.4):
- resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@volar/language-core': 1.11.1
- '@volar/source-map': 1.11.1
- '@vue/compiler-dom': 3.4.21
- '@vue/shared': 3.4.21
- computeds: 0.0.1
- minimatch: 9.0.3
- muggle-string: 0.3.1
- path-browserify: 1.0.1
- typescript: 5.0.4
- vue-template-compiler: 2.7.16
- dev: true
-
- /@vue/shared@3.4.21:
- resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
- dev: true
-
/JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@@ -1970,6 +1615,7 @@ packages:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
+ dev: true
/acorn@8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
@@ -2069,10 +1715,6 @@ packages:
resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==}
dev: true
- /any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- dev: true
-
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
@@ -2086,10 +1728,6 @@ packages:
requiresBuild: true
dev: true
- /arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
- dev: true
-
/argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -2108,6 +1746,7 @@ packages:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
dependencies:
dequal: 2.0.3
+ dev: true
/array-ify@1.0.0:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
@@ -2133,34 +1772,11 @@ packages:
engines: {node: '>= 4.0.0'}
dev: true
- /autoprefixer@10.4.16(postcss@8.4.36):
- resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
- dependencies:
- browserslist: 4.22.1
- caniuse-lite: 1.0.30001561
- fraction.js: 4.3.7
- normalize-range: 0.1.2
- picocolors: 1.0.0
- postcss: 8.4.36
- postcss-value-parser: 4.2.0
- dev: true
-
/axobject-query@3.2.1:
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
dependencies:
dequal: 2.0.3
-
- /axobject-query@4.0.0:
- resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
- dependencies:
- dequal: 2.0.3
-
- /bail@2.0.2:
- resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+ dev: true
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -2183,16 +1799,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /bits-ui@0.9.4(svelte@4.2.12):
- resolution: {integrity: sha512-hqlnJp5MyKfrNAiRzzXpdkFLqW+IqaB0yzZuQDqqKf3IosKe9W2nwqY7Wxz2t8BT5fB7z68JqM16z7l89S3mmA==}
- peerDependencies:
- svelte: ^4.0.0
- dependencies:
- '@melt-ui/svelte': 0.61.1(svelte@4.2.12)
- nanoid: 5.0.3
- svelte: 4.2.12
- dev: false
-
/bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies:
@@ -2233,17 +1839,6 @@ packages:
fill-range: 7.0.1
dev: true
- /browserslist@4.22.1:
- resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
- dependencies:
- caniuse-lite: 1.0.30001561
- electron-to-chromium: 1.4.582
- node-releases: 2.0.13
- update-browserslist-db: 1.0.13(browserslist@4.22.1)
- dev: true
-
/buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
dev: true
@@ -2272,11 +1867,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /camelcase-css@2.0.1:
- resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
- engines: {node: '>= 6'}
- dev: true
-
/camelcase-keys@6.2.2:
resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
engines: {node: '>=8'}
@@ -2291,10 +1881,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /caniuse-lite@1.0.30001561:
- resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==}
- dev: true
-
/cardinal@2.1.1:
resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
hasBin: true
@@ -2303,10 +1889,6 @@ packages:
redeyed: 2.1.1
dev: true
- /ccount@2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- dev: false
-
/chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -2329,18 +1911,6 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
- /character-entities-html4@2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
- dev: false
-
- /character-entities-legacy@3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
- dev: false
-
- /character-entities@2.0.2:
- resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
- dev: false
-
/chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
dev: true
@@ -2361,22 +1931,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: 2.3.3
- dev: true
-
- /chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.2
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.3
+ fsevents: 2.3.2
dev: true
/chownr@2.0.0:
@@ -2459,29 +2014,19 @@ packages:
engines: {node: '>=0.8'}
dev: true
- /clsx@2.0.0:
- resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
- engines: {node: '>=6'}
- dev: false
-
- /cmdk-sv@0.0.6(svelte@4.2.12):
- resolution: {integrity: sha512-Wfo77gJD3UMkMZog8tY/h1ITjlhKxsy8ZRLCQ2q89kqBiPeP4j7uO7J2XVB4FaakJq9J/p7afszjCzp1NnBk+Q==}
- peerDependencies:
- svelte: ^4.0.0
- dependencies:
- bits-ui: 0.9.4(svelte@4.2.12)
- nanoid: 5.0.3
- svelte: 4.2.12
- dev: false
+ /code-block-writer@12.0.0:
+ resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==}
+ dev: true
/code-red@1.0.4:
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.1
acorn: 8.10.0
estree-walker: 3.0.3
periscopic: 3.1.0
+ dev: true
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -2513,20 +2058,11 @@ packages:
engines: {node: '>=0.1.90'}
dev: true
- /comma-separated-tokens@2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
- dev: false
-
/commander@10.0.1:
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
engines: {node: '>=14'}
dev: true
- /commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
- dev: true
-
/commander@8.3.0:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
@@ -2570,10 +2106,6 @@ packages:
dot-prop: 5.3.0
dev: true
- /computeds@0.0.1:
- resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
- dev: true
-
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -2634,11 +2166,17 @@ packages:
through2: 4.0.2
dev: true
- /cookie@0.6.0:
- resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ /cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
dev: true
+ /copy-anything@2.0.6:
+ resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+ dependencies:
+ is-what: 3.14.1
+ dev: true
+
/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
@@ -2706,7 +2244,8 @@ packages:
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
dependencies:
mdn-data: 2.0.30
- source-map-js: 1.1.0
+ source-map-js: 1.0.2
+ dev: true
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
@@ -2735,10 +2274,6 @@ packages:
resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
dev: true
- /de-indent@1.0.2:
- resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
- dev: true
-
/debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
requiresBuild: true
@@ -2761,6 +2296,7 @@ packages:
optional: true
dependencies:
ms: 2.1.2
+ dev: true
/decamelize-keys@1.1.1:
resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
@@ -2775,12 +2311,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /decode-named-character-reference@1.0.2:
- resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
- dependencies:
- character-entities: 2.0.2
- dev: false
-
/dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
dev: true
@@ -2830,6 +2360,7 @@ packages:
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
+ dev: true
/detect-file@1.0.0:
resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==}
@@ -2841,17 +2372,12 @@ packages:
engines: {node: '>=8'}
dev: true
- /devalue@4.3.2:
- resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
+ /devalue@4.3.0:
+ resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==}
dev: true
- /devlop@1.1.0:
- resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- dependencies:
- dequal: 2.0.3
-
- /didyoumean@1.2.2:
- resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ /devalue@4.3.2:
+ resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
dev: true
/diff@4.0.2:
@@ -2867,10 +2393,6 @@ packages:
path-type: 4.0.0
dev: true
- /dlv@1.1.3:
- resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
- dev: true
-
/doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -2885,6 +2407,11 @@ packages:
is-obj: 2.0.0
dev: true
+ /dotenv@16.0.3:
+ resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/duplexer2@0.1.4:
resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
dependencies:
@@ -2895,10 +2422,6 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.582:
- resolution: {integrity: sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA==}
- dev: true
-
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: true
@@ -2907,10 +2430,6 @@ packages:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
dev: true
- /entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
/env-ci@8.0.0:
resolution: {integrity: sha512-W+3BqGZozFua9MPeXpmTm5eYEBtGgL76jGu/pwMVp/L8PdECSCEWaIp7d4Mw7kuUrbUldK0oV0bNd6ZZjLiMiA==}
engines: {node: ^16.10 || >=18}
@@ -2919,6 +2438,15 @@ packages:
java-properties: 1.0.2
dev: true
+ /errno@0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ prr: 1.0.1
+ dev: true
+ optional: true
+
/error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
dependencies:
@@ -2929,35 +2457,34 @@ packages:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
- /esbuild@0.19.12:
- resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ /esbuild@0.17.18:
+ resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.12
- '@esbuild/android-arm': 0.19.12
- '@esbuild/android-arm64': 0.19.12
- '@esbuild/android-x64': 0.19.12
- '@esbuild/darwin-arm64': 0.19.12
- '@esbuild/darwin-x64': 0.19.12
- '@esbuild/freebsd-arm64': 0.19.12
- '@esbuild/freebsd-x64': 0.19.12
- '@esbuild/linux-arm': 0.19.12
- '@esbuild/linux-arm64': 0.19.12
- '@esbuild/linux-ia32': 0.19.12
- '@esbuild/linux-loong64': 0.19.12
- '@esbuild/linux-mips64el': 0.19.12
- '@esbuild/linux-ppc64': 0.19.12
- '@esbuild/linux-riscv64': 0.19.12
- '@esbuild/linux-s390x': 0.19.12
- '@esbuild/linux-x64': 0.19.12
- '@esbuild/netbsd-x64': 0.19.12
- '@esbuild/openbsd-x64': 0.19.12
- '@esbuild/sunos-x64': 0.19.12
- '@esbuild/win32-arm64': 0.19.12
- '@esbuild/win32-ia32': 0.19.12
- '@esbuild/win32-x64': 0.19.12
+ '@esbuild/android-arm': 0.17.18
+ '@esbuild/android-arm64': 0.17.18
+ '@esbuild/android-x64': 0.17.18
+ '@esbuild/darwin-arm64': 0.17.18
+ '@esbuild/darwin-x64': 0.17.18
+ '@esbuild/freebsd-arm64': 0.17.18
+ '@esbuild/freebsd-x64': 0.17.18
+ '@esbuild/linux-arm': 0.17.18
+ '@esbuild/linux-arm64': 0.17.18
+ '@esbuild/linux-ia32': 0.17.18
+ '@esbuild/linux-loong64': 0.17.18
+ '@esbuild/linux-mips64el': 0.17.18
+ '@esbuild/linux-ppc64': 0.17.18
+ '@esbuild/linux-riscv64': 0.17.18
+ '@esbuild/linux-s390x': 0.17.18
+ '@esbuild/linux-x64': 0.17.18
+ '@esbuild/netbsd-x64': 0.17.18
+ '@esbuild/openbsd-x64': 0.17.18
+ '@esbuild/sunos-x64': 0.17.18
+ '@esbuild/win32-arm64': 0.17.18
+ '@esbuild/win32-ia32': 0.17.18
+ '@esbuild/win32-x64': 0.17.18
dev: true
/escalade@3.1.1:
@@ -2978,6 +2505,7 @@ packages:
/escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
+ dev: true
/eslint-compat-utils@0.1.2(eslint@8.39.0):
resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
@@ -2997,7 +2525,7 @@ packages:
eslint: 8.39.0
dev: true
- /eslint-plugin-svelte@2.35.0(eslint@8.39.0)(svelte@4.2.12)(ts-node@10.9.1):
+ /eslint-plugin-svelte@2.35.0(eslint@8.39.0)(svelte@3.58.0)(ts-node@10.9.1):
resolution: {integrity: sha512-3WDFxNrkXaMlpqoNo3M1ZOQuoFLMO9+bdnN6oVVXaydXC7nzCJuGy9a0zqoNDHMSRPYt0Rqo6hIdHMEaI5sQnw==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3019,8 +2547,8 @@ packages:
postcss-safe-parser: 6.0.0(postcss@8.4.31)
postcss-selector-parser: 6.0.12
semver: 7.5.4
- svelte: 4.2.12
- svelte-eslint-parser: 0.33.1(svelte@4.2.12)
+ svelte: 3.58.0
+ svelte-eslint-parser: 0.33.1(svelte@3.58.0)
transitivePeerDependencies:
- supports-color
- ts-node
@@ -3139,6 +2667,7 @@ packages:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
dependencies:
'@types/estree': 1.0.1
+ dev: true
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
@@ -3210,9 +2739,6 @@ packages:
homedir-polyfill: 1.0.3
dev: true
- /extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
-
/external-editor@3.1.0:
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
engines: {node: '>=4'}
@@ -3237,17 +2763,6 @@ packages:
micromatch: 4.0.5
dev: true
- /fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.5
- dev: true
-
/fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
@@ -3369,16 +2884,6 @@ packages:
resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
dev: true
- /flexsearch@0.7.21:
- resolution: {integrity: sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==}
- dev: false
-
- /focus-trap@7.5.4:
- resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
- dependencies:
- tabbable: 6.2.0
- dev: false
-
/foreground-child@3.1.1:
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
engines: {node: '>=14'}
@@ -3387,10 +2892,6 @@ packages:
signal-exit: 4.0.2
dev: true
- /fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
- dev: true
-
/from2@2.3.0:
resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
dependencies:
@@ -3398,6 +2899,15 @@ packages:
readable-stream: 2.3.8
dev: true
+ /fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
/fs-extra@11.1.1:
resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
engines: {node: '>=14.14'}
@@ -3437,8 +2947,8 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
- /fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ /fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
@@ -3449,10 +2959,6 @@ packages:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
- /gemoji@8.1.0:
- resolution: {integrity: sha512-HA4Gx59dw2+tn+UAa7XEV4ufUKI4fH1KgcbenVA9YKSj1QJTT0xh5Mwv5HMFNN3l2OtUe3ZIfuRwSyZS5pLIWw==}
- dev: false
-
/get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -3479,9 +2985,6 @@ packages:
traverse: 0.6.7
dev: true
- /github-slugger@2.0.0:
- resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
-
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -3508,17 +3011,6 @@ packages:
path-scurry: 1.10.1
dev: true
- /glob@7.1.6:
- resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
- dev: true
-
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
@@ -3648,145 +3140,6 @@ packages:
function-bind: 1.1.1
dev: true
- /hast-util-from-dom@5.0.0:
- resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==}
- dependencies:
- '@types/hast': 3.0.4
- hastscript: 8.0.0
- web-namespaces: 2.0.1
- dev: false
-
- /hast-util-from-html-isomorphic@2.0.0:
- resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==}
- dependencies:
- '@types/hast': 3.0.4
- hast-util-from-dom: 5.0.0
- hast-util-from-html: 2.0.1
- unist-util-remove-position: 5.0.0
- dev: false
-
- /hast-util-from-html@2.0.1:
- resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==}
- dependencies:
- '@types/hast': 3.0.4
- devlop: 1.1.0
- hast-util-from-parse5: 8.0.1
- parse5: 7.1.2
- vfile: 6.0.1
- vfile-message: 4.0.2
- dev: false
-
- /hast-util-from-parse5@8.0.1:
- resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.2
- devlop: 1.1.0
- hastscript: 8.0.0
- property-information: 6.5.0
- vfile: 6.0.1
- vfile-location: 5.0.2
- web-namespaces: 2.0.1
- dev: false
-
- /hast-util-heading-rank@3.0.0:
- resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==}
- dependencies:
- '@types/hast': 3.0.4
-
- /hast-util-is-element@3.0.0:
- resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
- dependencies:
- '@types/hast': 3.0.4
-
- /hast-util-parse-selector@4.0.0:
- resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
- dependencies:
- '@types/hast': 3.0.4
- dev: false
-
- /hast-util-raw@9.0.2:
- resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.2
- '@ungap/structured-clone': 1.2.0
- hast-util-from-parse5: 8.0.1
- hast-util-to-parse5: 8.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.1.0
- parse5: 7.1.2
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.1
- web-namespaces: 2.0.1
- zwitch: 2.0.4
- dev: false
-
- /hast-util-to-html@9.0.1:
- resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.2
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-raw: 9.0.2
- hast-util-whitespace: 3.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.1.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.4
- zwitch: 2.0.4
- dev: false
-
- /hast-util-to-parse5@8.0.0:
- resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- devlop: 1.1.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- web-namespaces: 2.0.1
- zwitch: 2.0.4
- dev: false
-
- /hast-util-to-string@3.0.0:
- resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==}
- dependencies:
- '@types/hast': 3.0.4
-
- /hast-util-to-text@4.0.1:
- resolution: {integrity: sha512-RHL7Vo2n06ZocCFWqmbyhZ1pCYX/mSKdywt9YD5U6Hquu5syV+dImCXFKLFt02JoK5QxkQFS0PoVdFdPXuPffQ==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.2
- hast-util-is-element: 3.0.0
- unist-util-find-after: 5.0.0
- dev: false
-
- /hast-util-whitespace@3.0.0:
- resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
- dependencies:
- '@types/hast': 3.0.4
- dev: false
-
- /hastscript@8.0.0:
- resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- hast-util-parse-selector: 4.0.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- dev: false
-
- /he@1.2.0:
- resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
- dev: true
-
/homedir-polyfill@1.0.3:
resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
engines: {node: '>=0.10.0'}
@@ -3817,10 +3170,6 @@ packages:
lru-cache: 7.18.3
dev: true
- /html-void-elements@3.0.0:
- resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
- dev: false
-
/http-proxy-agent@7.0.0:
resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
engines: {node: '>= 14'}
@@ -3862,12 +3211,6 @@ packages:
hasBin: true
dev: true
- /iconify-icon@2.0.0:
- resolution: {integrity: sha512-38ArOkxmyD9oDbJBkxaFpE6eZ0K3F9Sk+3x4mWGfjMJaxi3EKrix9Du4iWhgBFT3imKC4FJJE34ur2Rc7Xm+Uw==}
- dependencies:
- '@iconify/types': 2.0.0
- dev: false
-
/iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -3875,6 +3218,24 @@ packages:
safer-buffer: 2.1.2
dev: true
+ /iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ requiresBuild: true
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+ optional: true
+
+ /icss-utils@5.1.0(postcss@8.4.31):
+ resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: '>=8.4.31'
+ dependencies:
+ postcss: 8.4.31
+ dev: true
+
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
dev: true
@@ -3891,6 +3252,14 @@ packages:
engines: {node: '>= 4'}
dev: true
+ /image-size@0.5.5:
+ resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
/immutable@4.3.0:
resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
dev: true
@@ -3913,8 +3282,8 @@ packages:
engines: {node: '>=8'}
dev: true
- /import-meta-resolve@4.0.0:
- resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==}
+ /import-meta-resolve@2.2.2:
+ resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==}
dev: true
/imurmurhash@0.1.4:
@@ -4054,10 +3423,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /is-plain-obj@4.1.0:
- resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
- engines: {node: '>=12'}
-
/is-plain-object@5.0.0:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
@@ -4067,6 +3432,7 @@ packages:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
dependencies:
'@types/estree': 1.0.1
+ dev: true
/is-stream@1.1.0:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
@@ -4104,6 +3470,10 @@ packages:
resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
dev: true
+ /is-what@3.14.1:
+ resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+ dev: true
+
/is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
@@ -4142,11 +3512,6 @@ packages:
engines: {node: '>= 0.6.0'}
dev: true
- /jiti@1.21.0:
- resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
- hasBin: true
- dev: true
-
/jju@1.4.0:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
dev: true
@@ -4192,6 +3557,12 @@ packages:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
dev: true
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
/jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
optionalDependencies:
@@ -4211,8 +3582,8 @@ packages:
engines: {'0': node >= 0.2.0}
dev: true
- /katex@0.16.10:
- resolution: {integrity: sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==}
+ /katex@0.16.7:
+ resolution: {integrity: sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==}
hasBin: true
dependencies:
commander: 8.3.0
@@ -4236,6 +3607,26 @@ packages:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
dev: true
+ /less@4.1.3:
+ resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ copy-anything: 2.0.6
+ parse-node-version: 1.0.1
+ tslib: 2.5.0
+ optionalDependencies:
+ errno: 0.1.8
+ graceful-fs: 4.2.11
+ image-size: 0.5.5
+ make-dir: 2.1.0
+ mime: 1.6.0
+ needle: 3.2.0
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -4307,6 +3698,7 @@ packages:
/locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+ dev: true
/locate-path@2.0.0:
resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
@@ -4341,6 +3733,10 @@ packages:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: true
+ /lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+ dev: true
+
/lodash.capitalize@4.2.1:
resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==}
dev: true
@@ -4423,10 +3819,6 @@ packages:
wrap-ansi: 6.2.0
dev: true
- /longest-streak@3.1.0:
- resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
- dev: false
-
/longest@2.0.1:
resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==}
engines: {node: '>=0.10.0'}
@@ -4462,11 +3854,43 @@ packages:
engines: {node: '>=12'}
dev: true
+ /magic-string@0.27.0:
+ resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /magic-string@0.29.0:
+ resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /magic-string@0.30.0:
+ resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /make-dir@2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.2
+ dev: true
+ optional: true
/make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@@ -4483,8 +3907,12 @@ packages:
engines: {node: '>=8'}
dev: true
- /markdown-table@3.0.3:
- resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
+ /marked-highlight@2.0.6(marked@9.1.5):
+ resolution: {integrity: sha512-xjA/C6xgXAfkkYg+YHnxdjmgFyTDtqqu8KbZiqh+COJ7PuzR15kqa+rPrs6pf/2jExXtG1jyCFUHmv9s0Bi/dQ==}
+ peerDependencies:
+ marked: '>=4 <10'
+ dependencies:
+ marked: 9.1.5
dev: false
/marked-terminal@5.2.0(marked@4.3.0):
@@ -4512,7 +3940,6 @@ packages:
resolution: {integrity: sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A==}
engines: {node: '>= 16'}
hasBin: true
- dev: true
/md5@2.3.0:
resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
@@ -4522,170 +3949,8 @@ packages:
is-buffer: 1.1.6
dev: true
- /mdast-util-find-and-replace@3.0.1:
- resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
- dependencies:
- '@types/mdast': 4.0.3
- escape-string-regexp: 5.0.0
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
- dev: false
-
- /mdast-util-from-markdown@2.0.0:
- resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
- dependencies:
- '@types/mdast': 4.0.3
- '@types/unist': 3.0.2
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- mdast-util-to-string: 4.0.0
- micromark: 4.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-decode-string: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- unist-util-stringify-position: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-gfm-autolink-literal@2.0.0:
- resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==}
- dependencies:
- '@types/mdast': 4.0.3
- ccount: 2.0.1
- devlop: 1.1.0
- mdast-util-find-and-replace: 3.0.1
- micromark-util-character: 2.1.0
- dev: false
-
- /mdast-util-gfm-footnote@2.0.0:
- resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==}
- dependencies:
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- micromark-util-normalize-identifier: 2.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-gfm-strikethrough@2.0.0:
- resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-gfm-table@2.0.0:
- resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
- dependencies:
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- markdown-table: 3.0.3
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-gfm-task-list-item@2.0.0:
- resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
- dependencies:
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-gfm@3.0.0:
- resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==}
- dependencies:
- mdast-util-from-markdown: 2.0.0
- mdast-util-gfm-autolink-literal: 2.0.0
- mdast-util-gfm-footnote: 2.0.0
- mdast-util-gfm-strikethrough: 2.0.0
- mdast-util-gfm-table: 2.0.0
- mdast-util-gfm-task-list-item: 2.0.0
- mdast-util-to-markdown: 2.1.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-math@3.0.0:
- resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.3
- devlop: 1.1.0
- longest-streak: 3.1.0
- mdast-util-from-markdown: 2.0.0
- mdast-util-to-markdown: 2.1.0
- unist-util-remove-position: 5.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /mdast-util-phrasing@4.1.0:
- resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
- dependencies:
- '@types/mdast': 4.0.3
- unist-util-is: 6.0.0
- dev: false
-
- /mdast-util-to-hast@13.1.0:
- resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.3
- '@ungap/structured-clone': 1.2.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.0
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.1
- dev: false
-
- /mdast-util-to-markdown@2.1.0:
- resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
- dependencies:
- '@types/mdast': 4.0.3
- '@types/unist': 3.0.2
- longest-streak: 3.1.0
- mdast-util-phrasing: 4.1.0
- mdast-util-to-string: 4.0.0
- micromark-util-decode-string: 2.0.0
- unist-util-visit: 5.0.0
- zwitch: 2.0.4
- dev: false
-
- /mdast-util-to-string@4.0.0:
- resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
- dependencies:
- '@types/mdast': 4.0.3
- dev: false
-
/mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-
- /mdsvex@0.11.0(svelte@4.2.12):
- resolution: {integrity: sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==}
- peerDependencies:
- svelte: '>=3 <5'
- dependencies:
- '@types/unist': 2.0.10
- prism-svelte: 0.4.7
- prismjs: 1.29.0
- svelte: 4.2.12
- vfile-message: 2.0.4
dev: true
/meow@8.1.2:
@@ -4718,265 +3983,6 @@ packages:
resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==}
dev: true
- /micromark-core-commonmark@2.0.0:
- resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==}
- dependencies:
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- micromark-factory-destination: 2.0.0
- micromark-factory-label: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-factory-title: 2.0.0
- micromark-factory-whitespace: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-classify-character: 2.0.0
- micromark-util-html-tag-name: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-subtokenize: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-autolink-literal@2.0.0:
- resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==}
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-footnote@2.0.0:
- resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==}
- dependencies:
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-strikethrough@2.0.0:
- resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==}
- dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-classify-character: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-table@2.0.0:
- resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==}
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-tagfilter@2.0.0:
- resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
- dependencies:
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm-task-list-item@2.0.1:
- resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==}
- dependencies:
- devlop: 1.1.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-gfm@3.0.0:
- resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
- dependencies:
- micromark-extension-gfm-autolink-literal: 2.0.0
- micromark-extension-gfm-footnote: 2.0.0
- micromark-extension-gfm-strikethrough: 2.0.0
- micromark-extension-gfm-table: 2.0.0
- micromark-extension-gfm-tagfilter: 2.0.0
- micromark-extension-gfm-task-list-item: 2.0.1
- micromark-util-combine-extensions: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-extension-math@3.0.0:
- resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==}
- dependencies:
- '@types/katex': 0.16.0
- devlop: 1.1.0
- katex: 0.16.10
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-destination@2.0.0:
- resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-label@2.0.0:
- resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
- dependencies:
- devlop: 1.1.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-space@2.0.0:
- resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-title@2.0.0:
- resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
- dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-factory-whitespace@2.0.0:
- resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
- dependencies:
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-character@2.1.0:
- resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
- dependencies:
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-chunked@2.0.0:
- resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-classify-character@2.0.0:
- resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-combine-extensions@2.0.0:
- resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
- dependencies:
- micromark-util-chunked: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-decode-numeric-character-reference@2.0.1:
- resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-decode-string@2.0.0:
- resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
- dependencies:
- decode-named-character-reference: 1.0.2
- micromark-util-character: 2.1.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-encode@2.0.0:
- resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
- dev: false
-
- /micromark-util-html-tag-name@2.0.0:
- resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
- dev: false
-
- /micromark-util-normalize-identifier@2.0.0:
- resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
- dependencies:
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-resolve-all@2.0.0:
- resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
- dependencies:
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-sanitize-uri@2.0.0:
- resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-encode: 2.0.0
- micromark-util-symbol: 2.0.0
- dev: false
-
- /micromark-util-subtokenize@2.0.0:
- resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==}
- dependencies:
- devlop: 1.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- dev: false
-
- /micromark-util-symbol@2.0.0:
- resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
- dev: false
-
- /micromark-util-types@2.0.0:
- resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
- dev: false
-
- /micromark@4.0.0:
- resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
- dependencies:
- '@types/debug': 4.1.12
- debug: 4.3.4
- decode-named-character-reference: 1.0.2
- devlop: 1.1.0
- micromark-core-commonmark: 2.0.0
- micromark-factory-space: 2.0.0
- micromark-util-character: 2.1.0
- micromark-util-chunked: 2.0.0
- micromark-util-combine-extensions: 2.0.0
- micromark-util-decode-numeric-character-reference: 2.0.1
- micromark-util-encode: 2.0.0
- micromark-util-normalize-identifier: 2.0.0
- micromark-util-resolve-all: 2.0.0
- micromark-util-sanitize-uri: 2.0.0
- micromark-util-subtokenize: 2.0.0
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@@ -4985,6 +3991,14 @@ packages:
picomatch: 2.3.1
dev: true
+ /mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
/mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
@@ -5019,6 +4033,13 @@ packages:
brace-expansion: 2.0.1
dev: true
+ /minimatch@7.4.6:
+ resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
/minimatch@9.0.3:
resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -5081,6 +4102,12 @@ packages:
hasBin: true
dev: true
+ /mkdirp@2.1.6:
+ resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
/modify-values@1.0.1:
resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==}
engines: {node: '>=0.10.0'}
@@ -5091,58 +4118,43 @@ packages:
engines: {node: '>=4'}
dev: true
- /mrmime@2.0.0:
- resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ /mrmime@1.0.1:
+ resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
engines: {node: '>=10'}
dev: true
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- /muggle-string@0.3.1:
- resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
dev: true
/mute-stream@0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
dev: true
- /mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
- dependencies:
- any-promise: 1.3.0
- object-assign: 4.1.1
- thenify-all: 1.6.0
- dev: true
-
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
- /nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
- dev: true
-
- /nanoid@4.0.2:
- resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==}
- engines: {node: ^14 || ^16 || >=18}
- hasBin: true
- dev: false
-
- /nanoid@5.0.3:
- resolution: {integrity: sha512-I7X2b22cxA4LIHXPSqbBCEQSL+1wv8TuoefejsX4HFWyC6jc5JG7CEaxOltiKjc1M+YCS2YkrZZcj4+dytw9GA==}
- engines: {node: ^18 || >=20}
- hasBin: true
- dev: false
-
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
+ /needle@3.2.0:
+ resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ debug: 3.2.7
+ iconv-lite: 0.6.3
+ sax: 1.2.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+ optional: true
+
/neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: true
@@ -5175,10 +4187,6 @@ packages:
whatwg-url: 5.0.0
dev: true
- /node-releases@2.0.13:
- resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
- dev: true
-
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
@@ -5203,11 +4211,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/normalize-url@6.1.0:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
@@ -5337,16 +4340,6 @@ packages:
- which
- write-file-atomic
- /object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /object-hash@3.0.0:
- resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
- engines: {node: '>= 6'}
- dev: true
-
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
dev: true
@@ -5548,17 +4541,16 @@ packages:
lines-and-columns: 1.2.4
dev: true
+ /parse-node-version@1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
/parse-passwd@1.0.0:
resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
engines: {node: '>=0.10.0'}
dev: true
- /parse5@7.1.2:
- resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
- dependencies:
- entities: 4.5.0
- dev: false
-
/pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
@@ -5628,6 +4620,7 @@ packages:
'@types/estree': 1.0.1
estree-walker: 3.0.3
is-reference: 3.0.2
+ dev: true
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@@ -5644,20 +4637,17 @@ packages:
hasBin: true
dev: true
- /pify@2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/pify@3.0.0:
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
engines: {node: '>=4'}
dev: true
- /pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
- engines: {node: '>= 6'}
+ /pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+ requiresBuild: true
dev: true
+ optional: true
/pkg-conf@2.1.0:
resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==}
@@ -5674,33 +4664,11 @@ packages:
find-up: 2.1.0
dev: true
- /postcss-import@15.1.0(postcss@8.4.31):
- resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- postcss: ^8.0.0
- dependencies:
- postcss: 8.4.31
- postcss-value-parser: 4.2.0
- read-cache: 1.0.0
- resolve: 1.22.2
- dev: true
-
- /postcss-js@4.0.1(postcss@8.4.31):
- resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
- engines: {node: ^12 || ^14 || >= 16}
- peerDependencies:
- postcss: ^8.4.21
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.4.31
- dev: true
-
/postcss-load-config@3.1.4(postcss@8.4.31)(ts-node@10.9.1):
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
- postcss: '>=8.0.9'
+ postcss: '>=8.4.31'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
@@ -5710,33 +4678,36 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.31
- ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.3.3)
+ ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.1.6)
yaml: 1.10.2
dev: true
- /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1):
- resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
- engines: {node: '>= 14'}
+ /postcss-modules-extract-imports@3.0.0(postcss@8.4.31):
+ resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
+ engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- postcss:
- optional: true
- ts-node:
- optional: true
+ postcss: '>=8.4.31'
dependencies:
- lilconfig: 2.1.0
postcss: 8.4.31
- ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.3.3)
- yaml: 2.2.2
dev: true
- /postcss-nested@6.0.1(postcss@8.4.31):
- resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
- engines: {node: '>=12.0'}
+ /postcss-modules-local-by-default@4.0.0(postcss@8.4.31):
+ resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==}
+ engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: ^8.2.14
+ postcss: '>=8.4.31'
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.31)
+ postcss: 8.4.31
+ postcss-selector-parser: 6.0.12
+ postcss-value-parser: 4.2.0
+ dev: true
+
+ /postcss-modules-scope@3.0.0(postcss@8.4.31):
+ resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: '>=8.4.31'
dependencies:
postcss: 8.4.31
postcss-selector-parser: 6.0.12
@@ -5746,7 +4717,7 @@ packages:
resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
engines: {node: '>=12.0'}
peerDependencies:
- postcss: ^8.3.3
+ postcss: '>=8.4.31'
dependencies:
postcss: 8.4.31
dev: true
@@ -5755,7 +4726,7 @@ packages:
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
engines: {node: '>=12.0'}
peerDependencies:
- postcss: ^8.4.29
+ postcss: '>=8.4.31'
dependencies:
postcss: 8.4.31
dev: true
@@ -5781,113 +4752,41 @@ packages:
source-map-js: 1.0.2
dev: true
- /postcss@8.4.36:
- resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==}
- engines: {node: ^10 || ^12 || >=14}
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.0
- source-map-js: 1.1.0
- dev: true
-
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
- /prettier-plugin-svelte@3.1.0(prettier@3.1.0)(svelte@4.2.12):
- resolution: {integrity: sha512-96+AZxs2ESqIFA9j+o+DHqY+BsUglezfl553LQd6VOtTyJq5GPuBEb3ElxF2cerFzKlYKttlH/VcVmRNj5oc3A==}
+ /prettier-plugin-svelte@2.10.0(prettier@2.8.8)(svelte@3.58.0):
+ resolution: {integrity: sha512-GXMY6t86thctyCvQq+jqElO+MKdB09BkL3hexyGP3Oi8XLKRFaJP1ud/xlWCZ9ZIa2BxHka32zhHfcuU+XsRQg==}
peerDependencies:
- prettier: ^3.0.0
- svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
+ prettier: ^1.16.4 || ^2.0.0
+ svelte: ^3.2.0
dependencies:
- prettier: 3.1.0
- svelte: 4.2.12
+ prettier: 2.8.8
+ svelte: 3.58.0
dev: true
- /prettier-plugin-tailwindcss@0.5.7(prettier-plugin-svelte@3.1.0)(prettier@3.1.0):
- resolution: {integrity: sha512-4v6uESAgwCni6YF6DwJlRaDjg9Z+al5zM4JfngcazMy4WEf/XkPS5TEQjbD+DZ5iNuG6RrKQLa/HuX2SYzC3kQ==}
- engines: {node: '>=14.21.3'}
- peerDependencies:
- '@ianvs/prettier-plugin-sort-imports': '*'
- '@prettier/plugin-pug': '*'
- '@shopify/prettier-plugin-liquid': '*'
- '@shufo/prettier-plugin-blade': '*'
- '@trivago/prettier-plugin-sort-imports': '*'
- prettier: ^3.0
- prettier-plugin-astro: '*'
- prettier-plugin-css-order: '*'
- prettier-plugin-import-sort: '*'
- prettier-plugin-jsdoc: '*'
- prettier-plugin-marko: '*'
- prettier-plugin-organize-attributes: '*'
- prettier-plugin-organize-imports: '*'
- prettier-plugin-style-order: '*'
- prettier-plugin-svelte: '*'
- prettier-plugin-twig-melody: '*'
- peerDependenciesMeta:
- '@ianvs/prettier-plugin-sort-imports':
- optional: true
- '@prettier/plugin-pug':
- optional: true
- '@shopify/prettier-plugin-liquid':
- optional: true
- '@shufo/prettier-plugin-blade':
- optional: true
- '@trivago/prettier-plugin-sort-imports':
- optional: true
- prettier-plugin-astro:
- optional: true
- prettier-plugin-css-order:
- optional: true
- prettier-plugin-import-sort:
- optional: true
- prettier-plugin-jsdoc:
- optional: true
- prettier-plugin-marko:
- optional: true
- prettier-plugin-organize-attributes:
- optional: true
- prettier-plugin-organize-imports:
- optional: true
- prettier-plugin-style-order:
- optional: true
- prettier-plugin-svelte:
- optional: true
- prettier-plugin-twig-melody:
- optional: true
- dependencies:
- prettier: 3.1.0
- prettier-plugin-svelte: 3.1.0(prettier@3.1.0)(svelte@4.2.12)
- dev: true
-
- /prettier@3.1.0:
- resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
- engines: {node: '>=14'}
+ /prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
hasBin: true
dev: true
- /prism-svelte@0.4.7:
- resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==}
- dev: true
-
- /prismjs@1.29.0:
- resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
- engines: {node: '>=6'}
- dev: true
-
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true
- /property-information@6.5.0:
- resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
- dev: false
-
/proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
dev: true
+ /prr@1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+ requiresBuild: true
+ dev: true
+ optional: true
+
/pseudomap@1.0.2:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
dev: true
@@ -5935,12 +4834,6 @@ packages:
strip-json-comments: 2.0.1
dev: true
- /read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
- dependencies:
- pify: 2.3.0
- dev: true
-
/read-pkg-up@7.0.1:
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
engines: {node: '>=8'}
@@ -6021,10 +4914,6 @@ packages:
esprima: 4.0.1
dev: true
- /regenerator-runtime@0.14.0:
- resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
- dev: false
-
/registry-auth-token@5.0.2:
resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==}
engines: {node: '>=14'}
@@ -6032,106 +4921,6 @@ packages:
'@pnpm/npm-conf': 2.2.2
dev: true
- /rehype-autolink-headings@7.1.0:
- resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==}
- dependencies:
- '@types/hast': 3.0.4
- '@ungap/structured-clone': 1.2.0
- hast-util-heading-rank: 3.0.0
- hast-util-is-element: 3.0.0
- unified: 11.0.4
- unist-util-visit: 5.0.0
-
- /rehype-katex@7.0.0:
- resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/katex': 0.16.0
- hast-util-from-html-isomorphic: 2.0.0
- hast-util-to-text: 4.0.1
- katex: 0.16.10
- unist-util-visit-parents: 6.0.1
- vfile: 6.0.1
- dev: false
-
- /rehype-slug@6.0.0:
- resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==}
- dependencies:
- '@types/hast': 3.0.4
- github-slugger: 2.0.0
- hast-util-heading-rank: 3.0.0
- hast-util-to-string: 3.0.0
- unist-util-visit: 5.0.0
-
- /rehype-stringify@10.0.0:
- resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==}
- dependencies:
- '@types/hast': 3.0.4
- hast-util-to-html: 9.0.1
- unified: 11.0.4
- dev: false
-
- /remark-gemoji@8.0.0:
- resolution: {integrity: sha512-/fL9rc72FYwFGtOKcT+QeQdx9Q9t5v4N6KLXSDOTEgaedzK85I9judBqB2eqz+g4b0ERMejlwSOuPK+wket6aA==}
- dependencies:
- '@types/mdast': 4.0.3
- gemoji: 8.1.0
- mdast-util-find-and-replace: 3.0.1
- dev: false
-
- /remark-gfm@4.0.0:
- resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-gfm: 3.0.0
- micromark-extension-gfm: 3.0.0
- remark-parse: 11.0.0
- remark-stringify: 11.0.0
- unified: 11.0.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /remark-math@6.0.0:
- resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-math: 3.0.0
- micromark-extension-math: 3.0.0
- unified: 11.0.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /remark-parse@11.0.0:
- resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-from-markdown: 2.0.0
- micromark-util-types: 2.0.0
- unified: 11.0.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /remark-rehype@11.1.0:
- resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==}
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.3
- mdast-util-to-hast: 13.1.0
- unified: 11.0.4
- vfile: 6.0.1
- dev: false
-
- /remark-stringify@11.0.0:
- resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
- dependencies:
- '@types/mdast': 4.0.3
- mdast-util-to-markdown: 2.1.0
- unified: 11.0.4
- dev: false
-
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -6144,6 +4933,10 @@ packages:
dev: true
optional: true
+ /reserved-words@0.1.2:
+ resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==}
+ dev: true
+
/resolve-dir@1.0.1:
resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
engines: {node: '>=0.10.0'}
@@ -6235,27 +5028,12 @@ packages:
glob: 10.3.3
dev: true
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ /rollup@3.26.2:
+ resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
- dependencies:
- '@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
- fsevents: 2.3.3
+ fsevents: 2.3.2
dev: true
/run-async@2.4.1:
@@ -6303,8 +5081,8 @@ packages:
rimraf: 2.7.1
dev: true
- /sass@1.69.5:
- resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==}
+ /sass@1.62.1:
+ resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@@ -6313,6 +5091,10 @@ packages:
source-map-js: 1.0.2
dev: true
+ /sax@1.2.4:
+ resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ dev: true
+
/semantic-release-monorepo@7.0.5(semantic-release@20.1.3):
resolution: {integrity: sha512-riOYD8eZ5PIST7o97Ltc01l8VQW7q01NmPDRPOBycaeZczJowyKkzkBfo92kTIWDFWbdO3G8A695JrrYjoTaiw==}
peerDependencies:
@@ -6435,12 +5217,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /shiki@1.4.0:
- resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==}
- dependencies:
- '@shikijs/core': 1.4.0
- dev: false
-
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
@@ -6459,12 +5235,12 @@ packages:
pkg-conf: 2.1.0
dev: true
- /sirv@2.0.4:
- resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
+ /sirv@2.0.3:
+ resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
engines: {node: '>= 10'}
dependencies:
- '@polka/url': 1.0.0-next.25
- mrmime: 2.0.0
+ '@polka/url': 1.0.0-next.21
+ mrmime: 1.0.1
totalist: 3.0.1
dev: true
@@ -6514,19 +5290,16 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /source-map-js@1.1.0:
- resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==}
- engines: {node: '>=0.10.0'}
-
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
requiresBuild: true
dev: true
- /space-separated-tokens@2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- dev: false
+ /source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+ dev: true
/spawn-error-forwarder@1.0.0:
resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==}
@@ -6625,13 +5398,6 @@ packages:
safe-buffer: 5.2.1
dev: true
- /stringify-entities@4.0.4:
- resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
- dependencies:
- character-entities-html4: 2.1.0
- character-entities-legacy: 3.0.0
- dev: false
-
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -6688,18 +5454,17 @@ packages:
engines: {node: '>=8'}
dev: true
- /sucrase@3.34.0:
- resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
- engines: {node: '>=8'}
+ /stylus@0.59.0:
+ resolution: {integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==}
hasBin: true
dependencies:
- '@jridgewell/gen-mapping': 0.3.3
- commander: 4.1.1
- glob: 7.1.6
- lines-and-columns: 1.2.4
- mz: 2.7.0
- pirates: 4.0.6
- ts-interface-checker: 0.1.13
+ '@adobe/css-tools': 4.3.1
+ debug: 4.3.4
+ glob: 7.2.3
+ sax: 1.2.4
+ source-map: 0.7.4
+ transitivePeerDependencies:
+ - supports-color
dev: true
/supports-color@5.5.0:
@@ -6729,20 +5494,20 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /svelte-check@3.6.7(postcss@8.4.31)(svelte@4.2.12):
- resolution: {integrity: sha512-tKEjemK9FYCySAseCaIt+ps5o0XRvLC7ECjyJXXtO7vOQhR9E6JavgoUbGP1PCulD2OTcB/fi9RjV3nyF1AROw==}
+ /svelte-check@3.2.0(postcss@8.4.31)(svelte@3.55.1):
+ resolution: {integrity: sha512-6ZnscN8dHEN5Eq5LgIzjj07W9nc9myyBH+diXsUAuiY/3rt0l65/LCIQYlIuoFEjp2F1NhXqZiJwV9omPj9tMw==}
hasBin: true
peerDependencies:
- svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
+ svelte: ^3.55.0
dependencies:
'@jridgewell/trace-mapping': 0.3.18
- chokidar: 3.6.0
- fast-glob: 3.3.2
+ chokidar: 3.5.3
+ fast-glob: 3.2.12
import-fresh: 3.3.0
picocolors: 1.0.0
sade: 1.8.1
- svelte: 4.2.12
- svelte-preprocess: 5.1.3(postcss@8.4.31)(svelte@4.2.12)(typescript@5.1.6)
+ svelte: 3.55.1
+ svelte-preprocess: 5.0.3(postcss@8.4.31)(svelte@3.55.1)(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- '@babel/core'
@@ -6756,20 +5521,20 @@ packages:
- sugarss
dev: true
- /svelte-check@3.6.7(postcss@8.4.31)(svelte@4.2.2):
- resolution: {integrity: sha512-tKEjemK9FYCySAseCaIt+ps5o0XRvLC7ECjyJXXtO7vOQhR9E6JavgoUbGP1PCulD2OTcB/fi9RjV3nyF1AROw==}
+ /svelte-check@3.5.2(postcss@8.4.31)(svelte@4.2.2):
+ resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==}
hasBin: true
peerDependencies:
- svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
+ svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0
dependencies:
'@jridgewell/trace-mapping': 0.3.18
- chokidar: 3.6.0
- fast-glob: 3.3.2
+ chokidar: 3.5.3
+ fast-glob: 3.2.12
import-fresh: 3.3.0
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.2
- svelte-preprocess: 5.1.3(postcss@8.4.31)(svelte@4.2.2)(typescript@5.1.6)
+ svelte-preprocess: 5.0.4(postcss@8.4.31)(svelte@4.2.2)(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- '@babel/core'
@@ -6783,34 +5548,7 @@ packages:
- sugarss
dev: true
- /svelte-check@3.6.7(postcss@8.4.36)(sass@1.69.5)(svelte@4.2.12):
- resolution: {integrity: sha512-tKEjemK9FYCySAseCaIt+ps5o0XRvLC7ECjyJXXtO7vOQhR9E6JavgoUbGP1PCulD2OTcB/fi9RjV3nyF1AROw==}
- hasBin: true
- peerDependencies:
- svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
- dependencies:
- '@jridgewell/trace-mapping': 0.3.18
- chokidar: 3.6.0
- fast-glob: 3.3.2
- import-fresh: 3.3.0
- picocolors: 1.0.0
- sade: 1.8.1
- svelte: 4.2.12
- svelte-preprocess: 5.1.3(postcss@8.4.36)(sass@1.69.5)(svelte@4.2.12)(typescript@5.1.6)
- typescript: 5.1.6
- transitivePeerDependencies:
- - '@babel/core'
- - coffeescript
- - less
- - postcss
- - postcss-load-config
- - pug
- - sass
- - stylus
- - sugarss
- dev: true
-
- /svelte-eslint-parser@0.33.1(svelte@4.2.12):
+ /svelte-eslint-parser@0.33.1(svelte@3.58.0):
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -6824,42 +5562,42 @@ packages:
espree: 9.5.1
postcss: 8.4.31
postcss-scss: 4.0.9(postcss@8.4.31)
- svelte: 4.2.12
+ svelte: 3.58.0
dev: true
- /svelte-hmr@0.15.3(svelte@4.2.12):
- resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
+ /svelte-hmr@0.15.2(svelte@3.55.1):
+ resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
- svelte: ^3.19.0 || ^4.0.0
+ svelte: ^3.19.0 || ^4.0.0-next.0
dependencies:
- svelte: 4.2.12
+ svelte: 3.55.1
dev: true
- /svelte-hmr@0.15.3(svelte@4.2.2):
- resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
+ /svelte-hmr@0.15.2(svelte@4.2.2):
+ resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
- svelte: ^3.19.0 || ^4.0.0
+ svelte: ^3.19.0 || ^4.0.0-next.0
dependencies:
svelte: 4.2.2
dev: true
- /svelte-preprocess@5.1.3(postcss@8.4.31)(svelte@4.2.12)(typescript@5.1.6):
- resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
- engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
+ /svelte-preprocess@5.0.3(postcss@8.4.31)(svelte@3.55.1)(typescript@5.1.6):
+ resolution: {integrity: sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==}
+ engines: {node: '>= 14.10.0'}
requiresBuild: true
peerDependencies:
'@babel/core': ^7.10.2
coffeescript: ^2.5.1
less: ^3.11.3 || ^4.0.0
- postcss: ^7 || ^8
- postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ postcss: '>=8.4.31'
+ postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0
pug: ^3.0.0
sass: ^1.26.8
stylus: ^0.55.0
sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
- svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
+ svelte: ^3.23.0
typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0'
peerDependenciesMeta:
'@babel/core':
@@ -6885,29 +5623,29 @@ packages:
dependencies:
'@types/pug': 2.0.6
detect-indent: 6.1.0
- magic-string: 0.30.5
+ magic-string: 0.27.0
postcss: 8.4.31
sorcery: 0.11.0
strip-indent: 3.0.0
- svelte: 4.2.12
+ svelte: 3.55.1
typescript: 5.1.6
dev: true
- /svelte-preprocess@5.1.3(postcss@8.4.31)(svelte@4.2.2)(typescript@5.1.6):
- resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
- engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
+ /svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.2.2)(typescript@5.1.6):
+ resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==}
+ engines: {node: '>= 14.10.0'}
requiresBuild: true
peerDependencies:
'@babel/core': ^7.10.2
coffeescript: ^2.5.1
less: ^3.11.3 || ^4.0.0
- postcss: ^7 || ^8
- postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ postcss: '>=8.4.31'
+ postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0
pug: ^3.0.0
sass: ^1.26.8
stylus: ^0.55.0
sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
- svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
+ svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0
typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0'
peerDependenciesMeta:
'@babel/core':
@@ -6933,7 +5671,7 @@ packages:
dependencies:
'@types/pug': 2.0.6
detect-indent: 6.1.0
- magic-string: 0.30.5
+ magic-string: 0.27.0
postcss: 8.4.31
sorcery: 0.11.0
strip-indent: 3.0.0
@@ -6941,83 +5679,34 @@ packages:
typescript: 5.1.6
dev: true
- /svelte-preprocess@5.1.3(postcss@8.4.36)(sass@1.69.5)(svelte@4.2.12)(typescript@5.1.6):
- resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
- engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
- requiresBuild: true
+ /svelte2tsx@0.6.11(svelte@3.55.1)(typescript@5.0.4):
+ resolution: {integrity: sha512-rRW/3V/6mcejYWmSqcHpmILOSPsOhLgkbKbrTOz82s2n8TywmIsqj2jYPsiL6HeGoUM/atiTD0YKguW4b7ECog==}
peerDependencies:
- '@babel/core': ^7.10.2
- coffeescript: ^2.5.1
- less: ^3.11.3 || ^4.0.0
- postcss: ^7 || ^8
- postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
- pug: ^3.0.0
- sass: ^1.26.8
- stylus: ^0.55.0
- sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
- svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
- typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- coffeescript:
- optional: true
- less:
- optional: true
- postcss:
- optional: true
- postcss-load-config:
- optional: true
- pug:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- typescript:
- optional: true
- dependencies:
- '@types/pug': 2.0.6
- detect-indent: 6.1.0
- magic-string: 0.30.5
- postcss: 8.4.36
- sass: 1.69.5
- sorcery: 0.11.0
- strip-indent: 3.0.0
- svelte: 4.2.12
- typescript: 5.1.6
- dev: true
-
- /svelte2tsx@0.7.4(svelte@4.2.12)(typescript@5.0.4):
- resolution: {integrity: sha512-zAtbQD7JmeKe0JWdKO6l38t7P6wFP0+YTc0LLFdtzWdHEddcE+/VMvJquQI9NNsnrinUbtS9JF3kosPNeglMcQ==}
- peerDependencies:
- svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
+ svelte: ^3.55
typescript: ^4.9.4 || ^5.0.0
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
- svelte: 4.2.12
+ svelte: 3.55.1
typescript: 5.0.4
dev: true
- /svelte2tsx@0.7.4(svelte@4.2.12)(typescript@5.1.6):
- resolution: {integrity: sha512-zAtbQD7JmeKe0JWdKO6l38t7P6wFP0+YTc0LLFdtzWdHEddcE+/VMvJquQI9NNsnrinUbtS9JF3kosPNeglMcQ==}
+ /svelte2tsx@0.6.11(svelte@3.55.1)(typescript@5.1.6):
+ resolution: {integrity: sha512-rRW/3V/6mcejYWmSqcHpmILOSPsOhLgkbKbrTOz82s2n8TywmIsqj2jYPsiL6HeGoUM/atiTD0YKguW4b7ECog==}
peerDependencies:
- svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
+ svelte: ^3.55
typescript: ^4.9.4 || ^5.0.0
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
- svelte: 4.2.12
+ svelte: 3.55.1
typescript: 5.1.6
dev: true
- /svelte2tsx@0.7.4(svelte@4.2.2)(typescript@5.1.6):
- resolution: {integrity: sha512-zAtbQD7JmeKe0JWdKO6l38t7P6wFP0+YTc0LLFdtzWdHEddcE+/VMvJquQI9NNsnrinUbtS9JF3kosPNeglMcQ==}
+ /svelte2tsx@0.6.23(svelte@4.2.2)(typescript@5.1.6):
+ resolution: {integrity: sha512-3bwd1PuWUA3oEXy8+85zrLDnmJOsVpShpKVAehGWeYsz/66zMihTpRpUN97VVAKTZbO5tP4wnchHUXYs0zOwdw==}
peerDependencies:
- svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
+ svelte: ^3.55 || ^4.0.0-next.0 || ^4.0
typescript: ^4.9.4 || ^5.0.0
dependencies:
dedent-js: 1.0.1
@@ -7026,24 +5715,14 @@ packages:
typescript: 5.1.6
dev: true
- /svelte@4.2.12:
- resolution: {integrity: sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==}
- engines: {node: '>=16'}
- dependencies:
- '@ampproject/remapping': 2.2.1
- '@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.18
- '@types/estree': 1.0.5
- acorn: 8.10.0
- aria-query: 5.3.0
- axobject-query: 4.0.0
- code-red: 1.0.4
- css-tree: 2.3.1
- estree-walker: 3.0.3
- is-reference: 3.0.2
- locate-character: 3.0.0
- magic-string: 0.30.5
- periscopic: 3.1.0
+ /svelte@3.55.1:
+ resolution: {integrity: sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==}
+ engines: {node: '>= 8'}
+
+ /svelte@3.58.0:
+ resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==}
+ engines: {node: '>= 8'}
+ dev: true
/svelte@4.2.2:
resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==}
@@ -7062,46 +5741,6 @@ packages:
locate-character: 3.0.0
magic-string: 0.30.5
periscopic: 3.1.0
-
- /tabbable@6.2.0:
- resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
- dev: false
-
- /tailwind-merge@2.0.0:
- resolution: {integrity: sha512-WO8qghn9yhsldLSg80au+3/gY9E4hFxIvQ3qOmlpXnqpDKoMruKfi/56BbbMg6fHTQJ9QD3cc79PoWqlaQE4rw==}
- dependencies:
- '@babel/runtime': 7.23.2
- dev: false
-
- /tailwindcss@3.3.5(ts-node@10.9.1):
- resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==}
- engines: {node: '>=14.0.0'}
- hasBin: true
- dependencies:
- '@alloc/quick-lru': 5.2.0
- arg: 5.0.2
- chokidar: 3.5.3
- didyoumean: 1.2.2
- dlv: 1.1.3
- fast-glob: 3.3.2
- glob-parent: 6.0.2
- is-glob: 4.0.3
- jiti: 1.21.0
- lilconfig: 2.1.0
- micromatch: 4.0.5
- normalize-path: 3.0.0
- object-hash: 3.0.0
- picocolors: 1.0.0
- postcss: 8.4.31
- postcss-import: 15.1.0(postcss@8.4.31)
- postcss-js: 4.0.1(postcss@8.4.31)
- postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1)
- postcss-nested: 6.0.1(postcss@8.4.31)
- postcss-selector-parser: 6.0.12
- resolve: 1.22.2
- sucrase: 3.34.0
- transitivePeerDependencies:
- - ts-node
dev: true
/tar@6.1.15:
@@ -7141,19 +5780,6 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
- /thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
- dependencies:
- thenify: 3.3.1
- dev: true
-
- /thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
- dependencies:
- any-promise: 1.3.0
- dev: true
-
/through2@2.0.5:
resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
dependencies:
@@ -7210,32 +5836,28 @@ packages:
resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==}
dev: true
- /trim-lines@3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
- dev: false
-
/trim-newlines@3.0.1:
resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
engines: {node: '>=8'}
dev: true
- /trough@2.1.0:
- resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
-
- /ts-api-utils@1.0.3(typescript@5.3.3):
+ /ts-api-utils@1.0.3(typescript@5.1.6):
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
dependencies:
- typescript: 5.3.3
+ typescript: 5.1.6
dev: true
- /ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ /ts-morph@18.0.0:
+ resolution: {integrity: sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==}
+ dependencies:
+ '@ts-morph/common': 0.19.0
+ code-block-writer: 12.0.0
dev: true
- /ts-node@10.9.1(@types/node@18.16.3)(typescript@5.3.3):
+ /ts-node@10.9.1(@types/node@18.16.3)(typescript@5.1.6):
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
requiresBuild: true
@@ -7256,13 +5878,13 @@ packages:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 18.16.3
- acorn: 8.10.0
+ acorn: 8.8.2
acorn-walk: 8.2.0
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.3.3
+ typescript: 5.1.6
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: true
@@ -7288,7 +5910,7 @@ packages:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.5.1
- acorn: 8.10.0
+ acorn: 8.8.2
acorn-walk: 8.2.0
arg: 4.1.3
create-require: 1.1.1
@@ -7300,8 +5922,18 @@ packages:
dev: true
optional: true
+ /tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+ dev: true
+
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
+ dev: true
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -7367,6 +5999,39 @@ packages:
typescript: 5.0.4
dev: true
+ /typescript-plugin-css-modules@5.0.1(ts-node@10.9.1)(typescript@5.1.6):
+ resolution: {integrity: sha512-hKXObfwfjx2/myRq4JeQ8D3xIWYTFqusi0hS/Aka7RFX1xQEoEkdOGDWyXNb8LmObawsUzbI30gQnZvqYXCrkA==}
+ peerDependencies:
+ typescript: '>=4.0.0'
+ dependencies:
+ '@types/postcss-modules-local-by-default': 4.0.0
+ '@types/postcss-modules-scope': 3.0.1
+ dotenv: 16.0.3
+ icss-utils: 5.1.0(postcss@8.4.31)
+ less: 4.1.3
+ lodash.camelcase: 4.3.0
+ postcss: 8.4.31
+ postcss-load-config: 3.1.4(postcss@8.4.31)(ts-node@10.9.1)
+ postcss-modules-extract-imports: 3.0.0(postcss@8.4.31)
+ postcss-modules-local-by-default: 4.0.0(postcss@8.4.31)
+ postcss-modules-scope: 3.0.0(postcss@8.4.31)
+ reserved-words: 0.1.2
+ sass: 1.62.1
+ source-map-js: 1.0.2
+ stylus: 0.59.0
+ tsconfig-paths: 4.2.0
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - supports-color
+ - ts-node
+ dev: true
+
+ /typescript@4.8.4:
+ resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
/typescript@5.0.4:
resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
engines: {node: '>=12.20'}
@@ -7379,12 +6044,6 @@ packages:
hasBin: true
dev: true
- /typescript@5.3.3:
- resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
- engines: {node: '>=14.17'}
- hasBin: true
- dev: true
-
/uglify-js@3.17.4:
resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
engines: {node: '>=0.8.0'}
@@ -7393,16 +6052,12 @@ packages:
dev: true
optional: true
- /unified@11.0.4:
- resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
+ /undici@5.26.3:
+ resolution: {integrity: sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==}
+ engines: {node: '>=14.0'}
dependencies:
- '@types/unist': 3.0.2
- bail: 2.0.2
- devlop: 1.1.0
- extend: 3.0.2
- is-plain-obj: 4.1.0
- trough: 2.1.0
- vfile: 6.0.1
+ '@fastify/busboy': 2.0.0
+ dev: true
/unique-string@2.0.0:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
@@ -7411,55 +6066,6 @@ packages:
crypto-random-string: 2.0.0
dev: true
- /unist-util-find-after@5.0.0:
- resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-is: 6.0.0
- dev: false
-
- /unist-util-is@6.0.0:
- resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
- dependencies:
- '@types/unist': 3.0.2
-
- /unist-util-position@5.0.0:
- resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
- dependencies:
- '@types/unist': 3.0.2
- dev: false
-
- /unist-util-remove-position@5.0.0:
- resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-visit: 5.0.0
- dev: false
-
- /unist-util-stringify-position@2.0.3:
- resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
- dependencies:
- '@types/unist': 2.0.10
- dev: true
-
- /unist-util-stringify-position@4.0.0:
- resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
- dependencies:
- '@types/unist': 3.0.2
-
- /unist-util-visit-parents@6.0.1:
- resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-is: 6.0.0
-
- /unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
/universal-user-agent@6.0.1:
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
dev: true
@@ -7474,17 +6080,6 @@ packages:
engines: {node: '>= 10.0.0'}
dev: true
- /update-browserslist-db@1.0.13(browserslist@4.22.1):
- resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
- dependencies:
- browserslist: 4.22.1
- escalade: 3.1.1
- picocolors: 1.0.0
- dev: true
-
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -7516,51 +6111,23 @@ packages:
engines: {node: '>= 0.10'}
dev: true
- /vfile-location@5.0.2:
- resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==}
- dependencies:
- '@types/unist': 3.0.2
- vfile: 6.0.1
- dev: false
-
- /vfile-message@2.0.4:
- resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
- dependencies:
- '@types/unist': 2.0.10
- unist-util-stringify-position: 2.0.3
- dev: true
-
- /vfile-message@4.0.2:
- resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-stringify-position: 4.0.0
-
- /vfile@6.0.1:
- resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
- dependencies:
- '@types/unist': 3.0.2
- unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.2
-
- /vite-plugin-dts@3.7.3(@types/node@18.16.3)(typescript@5.0.4)(vite@5.1.6):
- resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==}
+ /vite-plugin-dts@2.3.0(@types/node@18.16.3)(vite@4.3.9):
+ resolution: {integrity: sha512-WbJgGtsStgQhdm3EosYmIdTGbag5YQpZ3HXWUAPCDyoXI5qN6EY0V7NXq0lAmnv9hVQsvh0htbYcg0Or5Db9JQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
- typescript: '*'
- vite: '*'
- peerDependenciesMeta:
- vite:
- optional: true
+ vite: '>=2.9.0'
dependencies:
- '@microsoft/api-extractor': 7.39.0(@types/node@18.16.3)
- '@rollup/pluginutils': 5.1.0
- '@vue/language-core': 1.8.27(typescript@5.0.4)
+ '@babel/parser': 7.21.5
+ '@microsoft/api-extractor': 7.34.7(@types/node@18.16.3)
+ '@rollup/pluginutils': 5.0.2
+ '@rushstack/node-core-library': 3.58.0(@types/node@18.16.3)
debug: 4.3.4
+ fast-glob: 3.2.12
+ fs-extra: 10.1.0
kolorist: 1.8.0
- typescript: 5.0.4
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
- vue-tsc: 1.8.27(typescript@5.0.4)
+ magic-string: 0.29.0
+ ts-morph: 18.0.0
+ vite: 4.3.9(@types/node@18.16.3)
transitivePeerDependencies:
- '@types/node'
- rollup
@@ -7571,14 +6138,13 @@ packages:
resolution: {integrity: sha512-gdp/OFVXBiVq1UwPujVb7+4mmgYHTGrzslMbQvxmgzTN4/HC+3j4GNrumsIKSWfA/y3hktII7XqY38muRaGjhw==}
dev: true
- /vite@5.1.6(@types/node@18.16.3)(sass@1.69.5):
- resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ /vite@4.3.9(@types/node@18.16.3):
+ resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
+ '@types/node': '>= 14'
less: '*'
- lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
@@ -7588,8 +6154,6 @@ packages:
optional: true
less:
optional: true
- lightningcss:
- optional: true
sass:
optional: true
stylus:
@@ -7600,42 +6164,22 @@ packages:
optional: true
dependencies:
'@types/node': 18.16.3
- esbuild: 0.19.12
- postcss: 8.4.36
- rollup: 4.13.0
- sass: 1.69.5
+ esbuild: 0.17.18
+ postcss: 8.4.31
+ rollup: 3.26.2
optionalDependencies:
- fsevents: 2.3.3
+ fsevents: 2.3.2
dev: true
- /vitefu@0.2.5(vite@5.1.6):
- resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
+ /vitefu@0.2.4(vite@4.3.9):
+ resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ vite: ^3.0.0 || ^4.0.0
peerDependenciesMeta:
vite:
optional: true
dependencies:
- vite: 5.1.6(@types/node@18.16.3)(sass@1.69.5)
- dev: true
-
- /vue-template-compiler@2.7.16:
- resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
- dependencies:
- de-indent: 1.0.2
- he: 1.2.0
- dev: true
-
- /vue-tsc@1.8.27(typescript@5.0.4):
- resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==}
- hasBin: true
- peerDependencies:
- typescript: '*'
- dependencies:
- '@volar/typescript': 1.11.1
- '@vue/language-core': 1.8.27(typescript@5.0.4)
- semver: 7.5.4
- typescript: 5.0.4
+ vite: 4.3.9(@types/node@18.16.3)
dev: true
/wcwidth@1.0.1:
@@ -7644,10 +6188,6 @@ packages:
defaults: 1.0.4
dev: true
- /web-namespaces@2.0.1:
- resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
- dev: false
-
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: true
@@ -7792,7 +6332,3 @@ packages:
optionalDependencies:
commander: 9.5.0
dev: true
-
- /zwitch@2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
- dev: false
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 3b5cefd..92f9e0d 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,4 @@
packages:
- packages/*
- - docs
+ - demo
+ - speed-highlight
diff --git a/scripts/packages.js b/scripts/packages.js
index c0be4b5..29f6705 100644
--- a/scripts/packages.js
+++ b/scripts/packages.js
@@ -40,6 +40,5 @@ export const packages = [
'plugin-emoji',
'plugin-code',
'plugin-tikz',
- 'plugin-attachment',
- 'plugin-anchor'
+ 'plugin-attachment'
];
diff --git a/tsconfig.json b/tsconfig.json
index d944659..d8ac207 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,5 +15,6 @@
"outDir": "./dist",
"module": "ESNext",
"target": "ESNext"
- }
+ },
+ "files": []
}