diff --git a/docs/v3/contribute/content-standardization.mdx b/docs/v3/contribute/content-standardization.mdx
index 71984608bf..2128f53e9f 100644
--- a/docs/v3/contribute/content-standardization.mdx
+++ b/docs/v3/contribute/content-standardization.mdx
@@ -1,7 +1,5 @@
import Feedback from '@site/src/components/Feedback';
import ThemedImage from "@theme/ThemedImage";
-import { BlockMath, InlineMath } from 'react-katex';
-import 'katex/dist/katex.min.css';
# Content standardization
@@ -329,19 +327,22 @@ Use a sequence diagram for complex and repetitive communication schemes between
## Math equations
-To include mathematical expressions in documentation, use the [react-katex](https://katex.org/docs/supported) library. It supports both inline and block-level math using `LaTeX` syntax.
+To include mathematical expressions in documentation, use the common inline snippet `$...$` and latex block `$$...$$` syntax.
-Import the required components at the top of your `.mdx` file:
+- Inline snippets are used for short expressions inside the regular text. That is, the following snippet `$2 + 2 = 4$` would be rendered as $2 + 2 = 4$
+- Blocks are used for centered, standalone formulas and equations. For example, the following block:
-```mdx
-import { BlockMath, InlineMath } from 'react-katex';
-import 'katex/dist/katex.min.css';
-```
+ ```mdx
+ $$
+ 2 + 2 = 4
+ $$
+ ```
-These imports allow you to render `LaTeX` math expressions:
-- `BlockMath` is used for centered, standalone formulas.
-- `InlineMath` is used for short expressions inside the regular text.
-- The `css` import applies the necessary styling for proper rendering.
+ would be rendered as a standalone equation:
+
+ $$
+ 2 + 2 = 4
+ $$
Contributors can use the following examples to format various types of math expressions in the documentation:
@@ -350,29 +351,32 @@ Contributors can use the following examples to format various types of math expr
For systems of equations, use `LaTeX` formatting for clarity:
```mdx
-
+\end{cases}
+$$
```
This renders the system of equations as:
-
-
+\end{cases}
+$$
### Exponential functions
For exponential functions, you can use the following format:
```mdx
-
+$e^{x} = \lim\limits_{n\to \infty} \left( 1 + \frac{x}{n} \right)^n$
```
-This renders the equation:
+This renders the equation: $e^{x} = \lim\limits_{n\to \infty} \left( 1 + \frac{x}{n} \right)^n$
### Fractions
@@ -380,30 +384,30 @@ This renders the equation:
+$\frac{a}{b}$
```
-This renders the fraction:
+This renders the fraction: $\frac{a}{b}$
### Summation
For summation notation, use the following `LaTeX` formatting:
```mdx
-
+$\sum_{i=1}^{n} i^2$
```
-This renders the summation:
+This renders the summation: $\sum_{i=1}^{n} i^2$
### Logarithmic expressions
For logarithmic equations, use the following `LaTeX` syntax:
```mdx
-
+$\log_{b}(x)$
```
-This renders the logarithmic expression:
+This renders the logarithmic expression: $\log_{b}(x)$
## Terminology
diff --git a/docs/v3/documentation/dapps/assets/nft-2.0.mdx b/docs/v3/documentation/dapps/assets/nft-2.0.mdx
index 537d96f8f7..3410cc571f 100644
--- a/docs/v3/documentation/dapps/assets/nft-2.0.mdx
+++ b/docs/v3/documentation/dapps/assets/nft-2.0.mdx
@@ -3,8 +3,6 @@ title: NFT 2.0
---
import Feedback from '@site/src/components/Feedback';
-import {InlineMath} from 'react-katex';
-import 'katex/dist/katex.min.css';
## Concept
@@ -132,7 +130,7 @@ All operations that involve commercial intent must include royalty payments, as
#### Retrieving royalty parameters
According to the specification, the sales contract must retrieve royalty parameters from the collection contract and calculate payments based on that data.
-The easiest way to obtain royalty parameters is by calling the `royalty_params()` get method on the main collection contract. It returns `(int numerator, int denominator, slice destination)`, where the royalty share is calculated as .
+The easiest way to obtain royalty parameters is by calling the `royalty_params()` get method on the main collection contract. It returns `(int numerator, int denominator, slice destination)`, where the royalty share is calculated as $\frac{numerator}{denominator}$.
For example, if `numerator = 11` and `denominator = 1000`, the royalty share is `1.1%`. The numerator must be less than the denominator. The `destination` is a slice of type `MsgAddress`, indicating the address where the royalty should be sent.
diff --git a/docs/v3/guidelines/dapps/cookbook.mdx b/docs/v3/guidelines/dapps/cookbook.mdx
index fcbc71d0dc..03e0c172c5 100644
--- a/docs/v3/guidelines/dapps/cookbook.mdx
+++ b/docs/v3/guidelines/dapps/cookbook.mdx
@@ -3,8 +3,6 @@ import Feedback from '@site/src/components/Feedback';
import ThemedImage from '@theme/ThemedImage';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-import { BlockMath, InlineMath } from 'react-katex';
-import 'katex/dist/katex.min.css';
# TON cookbook
@@ -1481,7 +1479,7 @@ This information is sufficient to construct the swap message.
- Vault: The vault is responsible for holding assets and receiving transfer messages. When a swap is requested, the vault informs the corresponding pool.
- Pool: The pool calculates the swap amount based on predefined formulas and informs the vault, which in turn releases the swapped asset to the user.
- Calculations of swap amount are based on a mathematical formula, which means so far we have two different pools, one known as Volatile, that operates based on the commonly used "Constant Product" formula: , And the other known as Stable-Swap - Optimized for assets of near-equal value (e.g. USDT / USDC, TON / stTON). It uses the formula: .
+ Calculations of swap amount are based on a mathematical formula, which means so far we have two different pools, one known as Volatile, that operates based on the commonly used "Constant Product" formula: $x \cdot y = k$, And the other known as Stable-Swap - Optimized for assets of near-equal value (e.g. USDT / USDC, TON / stTON). It uses the formula: $x^3 \cdot y + y^3 \cdot x = k$.
So for every swap we need the corresponding Vault and it needs to implement a specific API tailored for interacting with a distinct asset type. DeDust has three implementations of Vault: Native Vault - handles the native coin (Toncoin); Jetton Vault - manages jettons; and Extra-Currency Vault (upcoming) - designed for TON extra-currencies.
DeDust provides an SDK, written in TypeScript, to interact with the contracts, components, and APIs needed for the swap. Before swapping any assets, the environment must be set up and the necessary objects initialized.
diff --git a/docs/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx b/docs/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
index a7d7a5a9be..6c0aacbe74 100644
--- a/docs/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
+++ b/docs/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
@@ -15,8 +15,6 @@ faq:
---
import Feedback from '@site/src/components/Feedback';
-import { BlockMath} from 'react-katex';
-import 'katex/dist/katex.min.css';
import Button from '@site/src/components/button';
@@ -274,11 +272,15 @@ It consists of the following components:
The address is defined as:
-
+$$
+\text{Address} := (\text{workchain\_id}, \text{account\_id})
+$$
where:
-
+$$
+\text{account\_id}:= \text{HASH(initial\_code, initial\_data)}
+$$
:::important
`StateInit` (_State Initialized_) defines the contract’s initialization parameters: _code_, _data_, and optionally a _library_.
diff --git a/docs/v3/guidelines/dapps/tutorials/nft-minting-guide.mdx b/docs/v3/guidelines/dapps/tutorials/nft-minting-guide.mdx
index 332516fcca..03d69fd970 100644
--- a/docs/v3/guidelines/dapps/tutorials/nft-minting-guide.mdx
+++ b/docs/v3/guidelines/dapps/tutorials/nft-minting-guide.mdx
@@ -1,6 +1,4 @@
import Feedback from '@site/src/components/Feedback';
-import { BlockMath, InlineMath } from 'react-katex';
-import 'katex/dist/katex.min.css';
# Step-by-Step NFT Collection Minting
@@ -580,8 +578,7 @@ const NftItemCodeCell = Cell.fromBase64(
dataCell.storeRef(NftItemCodeCell);
```
-The smart contract stores royalty parameters using royaltyFactor, royaltyBase, and royaltyAddress. The royalty percentage is calculated using the formula:
-. If we know royaltyPercent, calculating royaltyFactor is straightforward.
+The smart contract stores royalty parameters using royaltyFactor, royaltyBase, and royaltyAddress. The royalty percentage is calculated using the formula: $\left( \frac{\text{royaltyFactor}}{\text{royaltyBase}} \right) \times 100\%$. If we know the royaltyPercent, calculating royaltyFactor is straightforward.
```ts
const royaltyBase = 1000;
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 36f714956a..f98225b093 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -66,6 +66,12 @@ const config = {
],
stylesheets: [
'https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800&family=Inter:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap',
+ {
+ href: 'https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css',
+ type: 'text/css',
+ integrity: 'sha384-5TcZemv2l/9On385z///+d7MSYlvIEw9FuZTIdZ14vJLqWphw7e7ZPuOiCHJcFCP',
+ crossorigin: 'anonymous',
+ },
],
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'throw',
@@ -118,7 +124,9 @@ const config = {
// }
remarkPlugins: [
[require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }],
+ require('remark-math').default,
],
+ rehypePlugins: [require('rehype-katex').default]
},
blog: {
showReadingTime: true,
@@ -127,8 +135,7 @@ const config = {
editUrl:
'https://github.com/ton-community/ton-docs/tree/main/',
},
- theme:
- {
+ theme: {
customCss: require.resolve('./src/css/custom.css'),
},
pages: {
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
index 2db7425782..5fcb931e0b 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/v3/guidelines/dapps/transactions/foundations-of-blockchain.mdx
@@ -1,6 +1,4 @@
import Feedback from '@site/src/components/Feedback';
-import { BlockMath} from 'react-katex';
-import 'katex/dist/katex.min.css';
import Button from '@site/src/components/button';
# Основы блокчейна
@@ -223,11 +221,15 @@ account_frozen$01 state_hash:bits256 = AccountState;
Адрес определяется как:
-
+$$
+{Address} := ({workchain_id},{account_id})
+$$
, где
-
+$$
+{account_id}:= {HASH(StateInit)}
+$$
Адрес соответствует состоянию контракта при его первичной инициализации, и может быть вычислен даже **до** развёртывания контракта.
Это позволяет использовать адрес заранее — например, для получения токенов или настройки взаимодействий.
diff --git a/package-lock.json b/package-lock.json
index ad718044d9..e451d4f8ae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,13 +23,11 @@
"clsx": "^2.1.1",
"docusaurus-plugin-sass": "^0.2.5",
"dotenv": "^16.4.5",
- "katex": "^0.16.22",
"markdown-link-extractor": "^4.0.2",
"markdown-to-jsx": "^7.5.0",
"prism-react-renderer": "^2.4.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-katex": "^3.1.0",
"react-player": "^2.16.0",
"react-tooltip": "^5.28.0",
"react-zoom-pan-pinch": "^3.7.0",
@@ -50,11 +48,13 @@
"eslint-plugin-regex": "^1.10.0",
"globals": "^16.2.0",
"husky": "^9.1.6",
+ "rehype-katex": "^7.0.1",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
"remark-lint": "^10.0.1",
"remark-lint-rule-style": "^4.0.1",
"remark-lint-unordered-list-marker-style": "^4.0.1",
+ "remark-math": "^6.0.0",
"typescript": "^5.8.3"
},
"engines": {
@@ -7592,6 +7592,13 @@
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
},
+ "node_modules/@types/katex": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
+ "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/mdast": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
@@ -12895,6 +12902,58 @@
"node": ">= 0.4"
}
},
+ "node_modules/hast-util-from-dom": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz",
+ "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hastscript": "^9.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
+ "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz",
+ "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-dom": "^5.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/hast-util-from-parse5": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
@@ -12914,6 +12973,20 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/hast-util-parse-selector": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
@@ -13030,6 +13103,23 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/hast-util-to-text": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/hast-util-whitespace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
@@ -13639,32 +13729,6 @@
"node": ">=8"
}
},
- "node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/is-ci": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
@@ -14705,6 +14769,26 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-math": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz",
+ "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.1.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-mdx": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
@@ -15687,6 +15771,85 @@
}
]
},
+ "node_modules/micromark-extension-math": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz",
+ "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "devlop": "^1.0.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-math/node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-math/node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-math/node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/micromark-extension-mdx-expression": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
@@ -19786,18 +19949,6 @@
"react": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/react-katex": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/react-katex/-/react-katex-3.1.0.tgz",
- "integrity": "sha512-At9uLOkC75gwn2N+ZXc5HD8TlATsB+3Hkp9OGs6uA8tM3dwZ3Wljn74Bk3JyHFPgSnesY/EMrIAB1WJwqZqejA==",
- "dependencies": {
- "katex": "^0.16.0"
- },
- "peerDependencies": {
- "prop-types": "^15.8.1",
- "react": ">=15.3.2 <20"
- }
- },
"node_modules/react-live": {
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.8.tgz",
@@ -20138,6 +20289,26 @@
"node": ">=6"
}
},
+ "node_modules/rehype-katex": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz",
+ "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/katex": "^0.16.0",
+ "hast-util-from-html-isomorphic": "^2.0.0",
+ "hast-util-to-text": "^4.0.0",
+ "katex": "^0.16.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/rehype-raw": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
@@ -20299,119 +20470,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-lint-file-extension": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-2.1.2.tgz",
- "integrity": "sha512-Nq54F5R7F1gyj/IMW6SvkAbVNrH+p38WK3//KCoZLDUYFrH0oXgXXFGHi9CT/O0VEopW+bWJfTn8YAJRs0qI5Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
- "node_modules/remark-lint-file-extension/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-lint-file-extension/node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/remark-lint-rule-style": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.1.tgz",
@@ -20484,6 +20542,23 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-math": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz",
+ "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-math": "^3.0.0",
+ "micromark-extension-math": "^3.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remark-mdx": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz",
@@ -22511,108 +22586,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/unified-lint-rule": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.2.tgz",
- "integrity": "sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "trough": "^2.0.0",
- "unified": "^10.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-lint-rule/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true
- },
- "node_modules/unified-lint-rule/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-lint-rule/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-lint-rule/node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified-lint-rule/node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/unified-message-control": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz",
@@ -22648,6 +22621,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/unist-util-inspect": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz",
@@ -22698,6 +22686,21 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/unist-util-stringify-position": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
diff --git a/package.json b/package.json
index e62348efe4..4bd607307e 100644
--- a/package.json
+++ b/package.json
@@ -38,13 +38,11 @@
"clsx": "^2.1.1",
"docusaurus-plugin-sass": "^0.2.5",
"dotenv": "^16.4.5",
- "katex": "^0.16.22",
"markdown-link-extractor": "^4.0.2",
"markdown-to-jsx": "^7.5.0",
"prism-react-renderer": "^2.4.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-katex": "^3.1.0",
"react-player": "^2.16.0",
"react-tooltip": "^5.28.0",
"react-zoom-pan-pinch": "^3.7.0",
@@ -65,11 +63,13 @@
"eslint-plugin-regex": "^1.10.0",
"globals": "^16.2.0",
"husky": "^9.1.6",
+ "rehype-katex": "7.0.1",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
"remark-lint": "^10.0.1",
"remark-lint-rule-style": "^4.0.1",
"remark-lint-unordered-list-marker-style": "^4.0.1",
+ "remark-math": "6.0.0",
"typescript": "^5.8.3"
},
"browserslist": {