@industry-theme/file-editing-panels 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-C2DyN0ld.js → index-B2rZhF0Y.js} +2 -2
- package/dist/{index-C2DyN0ld.js.map → index-B2rZhF0Y.js.map} +1 -1
- package/dist/{index-DUTlnZqf.js → index-BDgU-836.js} +2 -2
- package/dist/{index-DUTlnZqf.js.map → index-BDgU-836.js.map} +1 -1
- package/dist/{index-CGn-nZHE.js → index-BE_uqu8N.js} +2 -2
- package/dist/{index-CGn-nZHE.js.map → index-BE_uqu8N.js.map} +1 -1
- package/dist/{index-Bjy-tLvR.js → index-BO94YI1U.js} +2 -2
- package/dist/{index-Bjy-tLvR.js.map → index-BO94YI1U.js.map} +1 -1
- package/dist/{index-zoffa73C.js → index-BQ3COoTI.js} +2 -2
- package/dist/{index-zoffa73C.js.map → index-BQ3COoTI.js.map} +1 -1
- package/dist/{index-BdhAHbED.js → index-BcJD4K9H.js} +2 -2
- package/dist/{index-BdhAHbED.js.map → index-BcJD4K9H.js.map} +1 -1
- package/dist/{index-oKBZ-u6O.js → index-BijIiC2T.js} +2 -2
- package/dist/{index-oKBZ-u6O.js.map → index-BijIiC2T.js.map} +1 -1
- package/dist/{index-BcDbE3pK.js → index-Bn3GS5JS.js} +2 -2
- package/dist/{index-BcDbE3pK.js.map → index-Bn3GS5JS.js.map} +1 -1
- package/dist/{index-Ea-_uB8N.js → index-CwwU-P8Y.js} +2 -2
- package/dist/{index-Ea-_uB8N.js.map → index-CwwU-P8Y.js.map} +1 -1
- package/dist/{index-CtsvnJ0d.js → index-D4652IGg.js} +2 -2
- package/dist/{index-CtsvnJ0d.js.map → index-D4652IGg.js.map} +1 -1
- package/dist/{index-CxnscdvW.js → index-DHoL-esa.js} +2 -2
- package/dist/{index-CxnscdvW.js.map → index-DHoL-esa.js.map} +1 -1
- package/dist/{index-w2vW-u1q.js → index-D_58AKji.js} +2 -2
- package/dist/{index-w2vW-u1q.js.map → index-D_58AKji.js.map} +1 -1
- package/dist/{index-BC_8EZr_.js → index-Dj4Q-D3m.js} +2 -2
- package/dist/{index-BC_8EZr_.js.map → index-Dj4Q-D3m.js.map} +1 -1
- package/dist/{index-DSfEQ2VM.js → index-DsOGNrfl.js} +2 -2
- package/dist/{index-DSfEQ2VM.js.map → index-DsOGNrfl.js.map} +1 -1
- package/dist/{index-MzM-swvv.js → index-TGeUE9Er.js} +465 -754
- package/dist/index-TGeUE9Er.js.map +1 -0
- package/dist/{index-4EvhSd1p.js → index-WBoaW8wN.js} +2 -2
- package/dist/{index-4EvhSd1p.js.map → index-WBoaW8wN.js.map} +1 -1
- package/dist/{index-4TyGgD0I.js → index-c05jkXcr.js} +2 -2
- package/dist/{index-4TyGgD0I.js.map → index-c05jkXcr.js.map} +1 -1
- package/dist/{index-Du-iiGu7.js → index-kzNBMTqG.js} +2 -2
- package/dist/{index-Du-iiGu7.js.map → index-kzNBMTqG.js.map} +1 -1
- package/dist/panels/MDXEditorPanel/MDXEditorPanel.d.ts +1 -0
- package/dist/panels/MDXEditorPanel/MDXEditorPanel.d.ts.map +1 -1
- package/dist/panels.bundle.css +2280 -0
- package/dist/panels.bundle.js +1 -1
- package/package.json +2 -3
- package/dist/index-MzM-swvv.js.map +0 -1
|
@@ -3,7 +3,7 @@ var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { e
|
|
|
3
3
|
var __publicField = (obj, key, value2) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value2);
|
|
4
4
|
import { jsx as jsx$1, jsxs, Fragment } from "react/jsx-runtime";
|
|
5
5
|
import * as React__default from "react";
|
|
6
|
-
import React__default__default, { createContext, useContext, forwardRef, createElement, useState, useRef, useEffect, useCallback, useMemo, useLayoutEffect, Suspense, useReducer
|
|
6
|
+
import React__default__default, { createContext, useContext, forwardRef, createElement, useState, useRef, useEffect, useCallback, useMemo, useLayoutEffect, Suspense, useReducer } from "react";
|
|
7
7
|
import { ThemedMonacoWithProvider, ThemedMonacoDiffEditor } from "@principal-ade/industry-themed-monaco-editor";
|
|
8
8
|
import * as ReactDOM from "react-dom";
|
|
9
9
|
import ReactDOM__default, { flushSync, createPortal } from "react-dom";
|
|
@@ -12480,7 +12480,7 @@ function fixWrappingWhitespace(node2, parentChain) {
|
|
|
12480
12480
|
if (node2.type === "strong" || node2.type === "emphasis") {
|
|
12481
12481
|
const lastChild = node2.children.at(-1);
|
|
12482
12482
|
if ((lastChild == null ? void 0 : lastChild.type) === "text") {
|
|
12483
|
-
const trailingWhitespace = lastChild.value
|
|
12483
|
+
const trailingWhitespace = TRAILING_WHITESPACE_REGEXP.exec(lastChild.value);
|
|
12484
12484
|
if (trailingWhitespace) {
|
|
12485
12485
|
lastChild.value = lastChild.value.replace(TRAILING_WHITESPACE_REGEXP, "");
|
|
12486
12486
|
const parent = parentChain.at(-1);
|
|
@@ -12495,7 +12495,7 @@ function fixWrappingWhitespace(node2, parentChain) {
|
|
|
12495
12495
|
}
|
|
12496
12496
|
const firstChild = node2.children.at(0);
|
|
12497
12497
|
if ((firstChild == null ? void 0 : firstChild.type) === "text") {
|
|
12498
|
-
const leadingWhitespace = firstChild.value
|
|
12498
|
+
const leadingWhitespace = LEADING_WHITESPACE_REGEXP.exec(firstChild.value);
|
|
12499
12499
|
if (leadingWhitespace) {
|
|
12500
12500
|
firstChild.value = firstChild.value.replace(LEADING_WHITESPACE_REGEXP, "");
|
|
12501
12501
|
const parent = parentChain.at(-1);
|
|
@@ -17025,6 +17025,182 @@ function defaultOnError(left, right) {
|
|
|
17025
17025
|
}) + ") is still open");
|
|
17026
17026
|
}
|
|
17027
17027
|
}
|
|
17028
|
+
const DEFAULT_KNOWN_LANGUAGES = /* @__PURE__ */ new Set([
|
|
17029
|
+
// JavaScript/TypeScript family
|
|
17030
|
+
"javascript",
|
|
17031
|
+
"js",
|
|
17032
|
+
"jsx",
|
|
17033
|
+
"typescript",
|
|
17034
|
+
"ts",
|
|
17035
|
+
"tsx",
|
|
17036
|
+
// Common scripting languages
|
|
17037
|
+
"python",
|
|
17038
|
+
"py",
|
|
17039
|
+
"ruby",
|
|
17040
|
+
"rb",
|
|
17041
|
+
"php",
|
|
17042
|
+
"perl",
|
|
17043
|
+
"bash",
|
|
17044
|
+
"sh",
|
|
17045
|
+
"shell",
|
|
17046
|
+
"powershell",
|
|
17047
|
+
"ps1",
|
|
17048
|
+
// Compiled languages
|
|
17049
|
+
"java",
|
|
17050
|
+
"c",
|
|
17051
|
+
"cpp",
|
|
17052
|
+
"c++",
|
|
17053
|
+
"csharp",
|
|
17054
|
+
"cs",
|
|
17055
|
+
"go",
|
|
17056
|
+
"rust",
|
|
17057
|
+
"rs",
|
|
17058
|
+
"swift",
|
|
17059
|
+
"kotlin",
|
|
17060
|
+
"kt",
|
|
17061
|
+
"scala",
|
|
17062
|
+
"dart",
|
|
17063
|
+
// Web technologies
|
|
17064
|
+
"html",
|
|
17065
|
+
"htm",
|
|
17066
|
+
"css",
|
|
17067
|
+
"scss",
|
|
17068
|
+
"sass",
|
|
17069
|
+
"less",
|
|
17070
|
+
"xml",
|
|
17071
|
+
"svg",
|
|
17072
|
+
// Data formats
|
|
17073
|
+
"json",
|
|
17074
|
+
"json5",
|
|
17075
|
+
"yaml",
|
|
17076
|
+
"yml",
|
|
17077
|
+
"toml",
|
|
17078
|
+
"xml",
|
|
17079
|
+
"csv",
|
|
17080
|
+
// Database & Query
|
|
17081
|
+
"sql",
|
|
17082
|
+
"mysql",
|
|
17083
|
+
"postgresql",
|
|
17084
|
+
"sqlite",
|
|
17085
|
+
"graphql",
|
|
17086
|
+
"gql",
|
|
17087
|
+
// Markup & Documentation
|
|
17088
|
+
"markdown",
|
|
17089
|
+
"md",
|
|
17090
|
+
"latex",
|
|
17091
|
+
"tex",
|
|
17092
|
+
"rst",
|
|
17093
|
+
// Other common languages
|
|
17094
|
+
"r",
|
|
17095
|
+
"matlab",
|
|
17096
|
+
"julia",
|
|
17097
|
+
"lua",
|
|
17098
|
+
"vim",
|
|
17099
|
+
"viml",
|
|
17100
|
+
// Generic/Fallback
|
|
17101
|
+
"text",
|
|
17102
|
+
"txt",
|
|
17103
|
+
"plaintext",
|
|
17104
|
+
"diff",
|
|
17105
|
+
"patch",
|
|
17106
|
+
// Special (diagram tools, etc.)
|
|
17107
|
+
"mermaid",
|
|
17108
|
+
"dot",
|
|
17109
|
+
"graphviz"
|
|
17110
|
+
]);
|
|
17111
|
+
const DEFAULT_LANGUAGE_MAPPINGS = {
|
|
17112
|
+
"n/a": "",
|
|
17113
|
+
// Map to empty string instead of 'text'
|
|
17114
|
+
"N/A": "",
|
|
17115
|
+
// Map to empty string instead of 'text'
|
|
17116
|
+
"argdown": "markdown",
|
|
17117
|
+
"": ""
|
|
17118
|
+
// Keep empty as empty
|
|
17119
|
+
};
|
|
17120
|
+
function escapeComparisonOperators(markdown2) {
|
|
17121
|
+
let result = markdown2;
|
|
17122
|
+
const codeBlocks = [];
|
|
17123
|
+
let codeBlockIndex = 0;
|
|
17124
|
+
result = result.replace(/(```[\s\S]*?```|`[^`\n]+`)/g, (match) => {
|
|
17125
|
+
const placeholder2 = `___CODE_BLOCK_${codeBlockIndex}___`;
|
|
17126
|
+
codeBlocks.push(match);
|
|
17127
|
+
codeBlockIndex++;
|
|
17128
|
+
return placeholder2;
|
|
17129
|
+
});
|
|
17130
|
+
const validTags = [];
|
|
17131
|
+
let validTagIndex = 0;
|
|
17132
|
+
result = result.replace(/<\/?[a-zA-Z][a-zA-Z0-9]*(?:\s+[^>]*)?\/?>/g, (match) => {
|
|
17133
|
+
const placeholder2 = `___VALID_TAG_${validTagIndex}___`;
|
|
17134
|
+
validTags.push(match);
|
|
17135
|
+
validTagIndex++;
|
|
17136
|
+
return placeholder2;
|
|
17137
|
+
});
|
|
17138
|
+
const comments = [];
|
|
17139
|
+
let commentIndex = 0;
|
|
17140
|
+
result = result.replace(/<!--[\s\S]*?-->/g, (match) => {
|
|
17141
|
+
const placeholder2 = `___HTML_COMMENT_${commentIndex}___`;
|
|
17142
|
+
comments.push(match);
|
|
17143
|
+
commentIndex++;
|
|
17144
|
+
return placeholder2;
|
|
17145
|
+
});
|
|
17146
|
+
result = result.replace(/</g, "<");
|
|
17147
|
+
result = result.replace(new RegExp("(?<!^)>", "gm"), ">");
|
|
17148
|
+
result = result.replace(/___VALID_TAG_(\d+)___/g, (_2, index2) => {
|
|
17149
|
+
return validTags[parseInt(index2)];
|
|
17150
|
+
});
|
|
17151
|
+
result = result.replace(/___HTML_COMMENT_(\d+)___/g, (_2, index2) => {
|
|
17152
|
+
return comments[parseInt(index2)];
|
|
17153
|
+
});
|
|
17154
|
+
result = result.replace(/___CODE_BLOCK_(\d+)___/g, (_2, index2) => {
|
|
17155
|
+
return codeBlocks[parseInt(index2)];
|
|
17156
|
+
});
|
|
17157
|
+
return result;
|
|
17158
|
+
}
|
|
17159
|
+
function normalizeCodeBlockLanguages(markdown2, options) {
|
|
17160
|
+
const { knownLanguages, fallbackLanguage, languageMappings } = options;
|
|
17161
|
+
return markdown2.replace(
|
|
17162
|
+
/^(\s*)```([^\n`]*?)\n/gim,
|
|
17163
|
+
(match, indent2, lang) => {
|
|
17164
|
+
const trimmedLang = lang.trim();
|
|
17165
|
+
const lowerLang = trimmedLang.toLowerCase();
|
|
17166
|
+
if (trimmedLang in languageMappings || lowerLang in languageMappings) {
|
|
17167
|
+
const mapped = trimmedLang in languageMappings ? languageMappings[trimmedLang] : languageMappings[lowerLang];
|
|
17168
|
+
return `${indent2}\`\`\`${mapped}
|
|
17169
|
+
`;
|
|
17170
|
+
}
|
|
17171
|
+
if (knownLanguages.has(lowerLang)) {
|
|
17172
|
+
return match;
|
|
17173
|
+
}
|
|
17174
|
+
if (!trimmedLang) {
|
|
17175
|
+
return `${indent2}\`\`\`${fallbackLanguage}
|
|
17176
|
+
`;
|
|
17177
|
+
}
|
|
17178
|
+
return match;
|
|
17179
|
+
}
|
|
17180
|
+
);
|
|
17181
|
+
}
|
|
17182
|
+
function preprocessMarkdown(markdown2, options = {}) {
|
|
17183
|
+
const {
|
|
17184
|
+
escapeComparisonOperators: shouldEscapeOperators = true,
|
|
17185
|
+
normalizeCodeBlockLanguages: shouldNormalizeLangs = true,
|
|
17186
|
+
knownLanguages = DEFAULT_KNOWN_LANGUAGES,
|
|
17187
|
+
fallbackLanguage = "",
|
|
17188
|
+
// Changed from 'text' to empty string
|
|
17189
|
+
languageMappings = DEFAULT_LANGUAGE_MAPPINGS
|
|
17190
|
+
} = options;
|
|
17191
|
+
let result = markdown2;
|
|
17192
|
+
if (shouldNormalizeLangs) {
|
|
17193
|
+
result = normalizeCodeBlockLanguages(result, {
|
|
17194
|
+
knownLanguages,
|
|
17195
|
+
fallbackLanguage,
|
|
17196
|
+
languageMappings
|
|
17197
|
+
});
|
|
17198
|
+
}
|
|
17199
|
+
if (shouldEscapeOperators) {
|
|
17200
|
+
result = escapeComparisonOperators(result);
|
|
17201
|
+
}
|
|
17202
|
+
return result;
|
|
17203
|
+
}
|
|
17028
17204
|
function isParent$1(node2) {
|
|
17029
17205
|
return node2.children instanceof Array;
|
|
17030
17206
|
}
|
|
@@ -17078,7 +17254,8 @@ function importMarkdownToLexical({
|
|
|
17078
17254
|
var _a2;
|
|
17079
17255
|
let mdastRoot;
|
|
17080
17256
|
try {
|
|
17081
|
-
|
|
17257
|
+
const processedMarkdown = preprocessMarkdown(markdown2);
|
|
17258
|
+
mdastRoot = fromMarkdown(processedMarkdown, {
|
|
17082
17259
|
extensions: syntaxExtensions,
|
|
17083
17260
|
mdastExtensions
|
|
17084
17261
|
});
|
|
@@ -17123,7 +17300,7 @@ function importMdastTreeToLexical({ root: root2, mdastRoot, visitors, ...descrip
|
|
|
17123
17300
|
if (!visitor) {
|
|
17124
17301
|
try {
|
|
17125
17302
|
throw new UnrecognizedMarkdownConstructError(`Unsupported markdown syntax: ${toMarkdown(mdastNode)}`);
|
|
17126
|
-
} catch (
|
|
17303
|
+
} catch (_e2) {
|
|
17127
17304
|
throw new UnrecognizedMarkdownConstructError(
|
|
17128
17305
|
`Parsing of the following markdown structure failed: ${JSON.stringify({
|
|
17129
17306
|
type: mdastNode.type,
|
|
@@ -17843,9 +18020,7 @@ const currentSelection$ = $$4(null, (r2) => {
|
|
|
17843
18020
|
const parent = e2.getParent();
|
|
17844
18021
|
return parent !== null && so(parent);
|
|
17845
18022
|
});
|
|
17846
|
-
|
|
17847
|
-
element2 = anchorNode.getTopLevelElementOrThrow();
|
|
17848
|
-
}
|
|
18023
|
+
element2 ?? (element2 = anchorNode.getTopLevelElementOrThrow());
|
|
17849
18024
|
const elementKey = element2.getKey();
|
|
17850
18025
|
const elementDOM = theEditor.getElementByKey(elementKey);
|
|
17851
18026
|
if (elementDOM !== null) {
|
|
@@ -20145,10 +20320,26 @@ function getSelectedNode(selection2) {
|
|
|
20145
20320
|
} else {
|
|
20146
20321
|
return A$2(anchor) ? anchorNode : focusNode;
|
|
20147
20322
|
}
|
|
20148
|
-
} catch
|
|
20323
|
+
} catch {
|
|
20149
20324
|
return null;
|
|
20150
20325
|
}
|
|
20151
20326
|
}
|
|
20327
|
+
const WILL_CHANGE_CONTAINING_BLOCK_PROPS = ["transform", "perspective", "filter", "backdrop-filter", "contain", "container-type"];
|
|
20328
|
+
const CONTAIN_VALUES_CREATING_CONTAINING_BLOCK = ["layout", "paint", "strict", "content"];
|
|
20329
|
+
function getFixedContainingBlock(element2) {
|
|
20330
|
+
let current = element2 == null ? void 0 : element2.parentElement;
|
|
20331
|
+
while (current) {
|
|
20332
|
+
const style = window.getComputedStyle(current);
|
|
20333
|
+
const willChangeProps = style.willChange.split(",").map((v2) => v2.trim());
|
|
20334
|
+
const hasRelevantWillChange = willChangeProps.some((prop) => WILL_CHANGE_CONTAINING_BLOCK_PROPS.includes(prop));
|
|
20335
|
+
const createsContainingBlock = style.transform !== "none" || style.perspective !== "none" || style.filter !== "none" || style.backdropFilter !== "none" || CONTAIN_VALUES_CREATING_CONTAINING_BLOCK.includes(style.contain) || style.containerType !== "normal" || style.contentVisibility === "auto" || hasRelevantWillChange;
|
|
20336
|
+
if (createsContainingBlock) {
|
|
20337
|
+
return current;
|
|
20338
|
+
}
|
|
20339
|
+
current = current.parentElement;
|
|
20340
|
+
}
|
|
20341
|
+
return null;
|
|
20342
|
+
}
|
|
20152
20343
|
function getSelectionRectangle(editor) {
|
|
20153
20344
|
const selection2 = wr();
|
|
20154
20345
|
const nativeSelection = window.getSelection();
|
|
@@ -20175,13 +20366,23 @@ function getSelectionRectangle(editor) {
|
|
|
20175
20366
|
rect = domRange.getBoundingClientRect();
|
|
20176
20367
|
}
|
|
20177
20368
|
}
|
|
20369
|
+
const fixedContainer = getFixedContainingBlock(rootElement);
|
|
20370
|
+
if (fixedContainer) {
|
|
20371
|
+
const containerRect = fixedContainer.getBoundingClientRect();
|
|
20372
|
+
return {
|
|
20373
|
+
top: Math.round(rect.top - containerRect.top),
|
|
20374
|
+
left: Math.round(rect.left - containerRect.left),
|
|
20375
|
+
width: Math.round(rect.width),
|
|
20376
|
+
height: Math.round(rect.height)
|
|
20377
|
+
};
|
|
20378
|
+
}
|
|
20178
20379
|
return {
|
|
20179
20380
|
top: Math.round(rect.top),
|
|
20180
20381
|
left: Math.round(rect.left),
|
|
20181
20382
|
width: Math.round(rect.width),
|
|
20182
20383
|
height: Math.round(rect.height)
|
|
20183
20384
|
};
|
|
20184
|
-
} else if (
|
|
20385
|
+
} else if ((activeElement == null ? void 0 : activeElement.className) !== "link-input") {
|
|
20185
20386
|
return null;
|
|
20186
20387
|
}
|
|
20187
20388
|
return null;
|
|
@@ -20427,8 +20628,140 @@ const MDXEditor = React__default__default.forwardRef((props, ref) => {
|
|
|
20427
20628
|
/* @__PURE__ */ React__default__default.createElement(Methods$1, { mdxRef: ref })
|
|
20428
20629
|
);
|
|
20429
20630
|
});
|
|
20631
|
+
function themeToCSSVariables(theme2) {
|
|
20632
|
+
return {
|
|
20633
|
+
// Page and base backgrounds
|
|
20634
|
+
"--basePageBg": theme2.colors.background,
|
|
20635
|
+
"--baseBase": theme2.colors.background,
|
|
20636
|
+
"--baseBgSubtle": theme2.colors.backgroundSecondary,
|
|
20637
|
+
"--baseBg": theme2.colors.backgroundTertiary,
|
|
20638
|
+
"--baseBgHover": theme2.colors.backgroundHover,
|
|
20639
|
+
"--baseBgActive": theme2.colors.backgroundLight,
|
|
20640
|
+
// Borders and lines
|
|
20641
|
+
"--baseLine": theme2.colors.border,
|
|
20642
|
+
"--baseBorder": theme2.colors.border,
|
|
20643
|
+
"--baseBorderHover": theme2.colors.border,
|
|
20644
|
+
// Solid colors (non-transparent UI elements)
|
|
20645
|
+
"--baseSolid": theme2.colors.muted,
|
|
20646
|
+
"--baseSolidHover": theme2.colors.muted,
|
|
20647
|
+
// Text colors
|
|
20648
|
+
"--baseText": theme2.colors.text,
|
|
20649
|
+
"--baseTextContrast": theme2.colors.text,
|
|
20650
|
+
// Accent colors (primary interactive elements)
|
|
20651
|
+
"--accentBase": theme2.colors.primary,
|
|
20652
|
+
"--accentBgSubtle": theme2.colors.primary,
|
|
20653
|
+
"--accentBg": theme2.colors.primary,
|
|
20654
|
+
"--accentBgHover": theme2.colors.secondary,
|
|
20655
|
+
"--accentBgActive": theme2.colors.secondary,
|
|
20656
|
+
"--accentLine": theme2.colors.primary,
|
|
20657
|
+
"--accentBorder": theme2.colors.primary,
|
|
20658
|
+
"--accentBorderHover": theme2.colors.secondary,
|
|
20659
|
+
"--accentSolid": theme2.colors.primary,
|
|
20660
|
+
"--accentSolidHover": theme2.colors.secondary,
|
|
20661
|
+
"--accentText": theme2.colors.primary,
|
|
20662
|
+
"--accentTextContrast": theme2.colors.accent,
|
|
20663
|
+
// Status/admonition colors
|
|
20664
|
+
"--admonitionTipBg": theme2.colors.info,
|
|
20665
|
+
"--admonitionTipBorder": theme2.colors.info,
|
|
20666
|
+
"--admonitionInfoBg": theme2.colors.success,
|
|
20667
|
+
"--admonitionInfoBorder": theme2.colors.success,
|
|
20668
|
+
"--admonitionCautionBg": theme2.colors.warning,
|
|
20669
|
+
"--admonitionCautionBorder": theme2.colors.warning,
|
|
20670
|
+
"--admonitionDangerBg": theme2.colors.error,
|
|
20671
|
+
"--admonitionDangerBorder": theme2.colors.error,
|
|
20672
|
+
"--admonitionNoteBg": theme2.colors.muted,
|
|
20673
|
+
"--admonitionNoteBorder": theme2.colors.border,
|
|
20674
|
+
// Error color
|
|
20675
|
+
"--error-color": theme2.colors.error,
|
|
20676
|
+
// Typography
|
|
20677
|
+
"--font-mono": theme2.fonts.monospace,
|
|
20678
|
+
"--font-body": theme2.fonts.body,
|
|
20679
|
+
// Spacing (use theme's spacing scale)
|
|
20680
|
+
"--spacing-0": `${theme2.space[0]}px`,
|
|
20681
|
+
"--spacing-px": "1px",
|
|
20682
|
+
"--spacing-0_5": "0.125rem",
|
|
20683
|
+
"--spacing-1": `${theme2.space[1]}px`,
|
|
20684
|
+
"--spacing-1_5": "0.375rem",
|
|
20685
|
+
"--spacing-2": `${theme2.space[2]}px`,
|
|
20686
|
+
"--spacing-2_5": "0.625rem",
|
|
20687
|
+
"--spacing-3": `${theme2.space[3]}px`,
|
|
20688
|
+
"--spacing-3_5": "0.875rem",
|
|
20689
|
+
"--spacing-4": `${theme2.space[4]}px`,
|
|
20690
|
+
"--spacing-5": `${theme2.space[5]}px`,
|
|
20691
|
+
"--spacing-6": `${theme2.space[6]}px`,
|
|
20692
|
+
"--spacing-7": `${theme2.space[7]}px`,
|
|
20693
|
+
"--spacing-8": `${theme2.space[8]}px`,
|
|
20694
|
+
// Border radius (use theme's radii)
|
|
20695
|
+
"--radius-none": `${theme2.radii[0]}px`,
|
|
20696
|
+
"--radius-small": `${theme2.radii[1]}px`,
|
|
20697
|
+
"--radius-base": `${theme2.radii[2]}px`,
|
|
20698
|
+
"--radius-medium": `${theme2.radii[3]}px`,
|
|
20699
|
+
"--radius-large": `${theme2.radii[4]}px`,
|
|
20700
|
+
"--radius-extra-large": `${theme2.radii[5]}px`,
|
|
20701
|
+
// Font sizes (use theme's fontSizes with scaling)
|
|
20702
|
+
"--text-xxs": `${theme2.fontSizes[0]}px`,
|
|
20703
|
+
"--text-xs": `${theme2.fontSizes[1]}px`,
|
|
20704
|
+
"--text-sm": `${theme2.fontSizes[2]}px`,
|
|
20705
|
+
"--text-base": `${theme2.fontSizes[3]}px`
|
|
20706
|
+
};
|
|
20707
|
+
}
|
|
20708
|
+
function generateStyleId(theme2) {
|
|
20709
|
+
const colorStr = JSON.stringify(theme2.colors);
|
|
20710
|
+
let hash2 = 0;
|
|
20711
|
+
for (let i2 = 0; i2 < colorStr.length; i2++) {
|
|
20712
|
+
hash2 = (hash2 << 5) - hash2 + colorStr.charCodeAt(i2) | 0;
|
|
20713
|
+
}
|
|
20714
|
+
return `themed-mdxeditor-${Math.abs(hash2)}`;
|
|
20715
|
+
}
|
|
20716
|
+
const ThemedMDXEditorInner = React__default__default.forwardRef((props, ref) => {
|
|
20717
|
+
const { theme: theme2 } = useTheme();
|
|
20718
|
+
const cssVars = themeToCSSVariables(theme2);
|
|
20719
|
+
const styleId = React__default__default.useMemo(() => generateStyleId(theme2), [theme2]);
|
|
20720
|
+
React__default__default.useEffect(() => {
|
|
20721
|
+
const existingStyle = document.getElementById(styleId);
|
|
20722
|
+
if (existingStyle) {
|
|
20723
|
+
return;
|
|
20724
|
+
}
|
|
20725
|
+
const styleElement = document.createElement("style");
|
|
20726
|
+
styleElement.id = styleId;
|
|
20727
|
+
const cssRules = Object.entries(cssVars).map(([key, value2]) => ` ${key}: ${value2};`).join("\n");
|
|
20728
|
+
styleElement.textContent = `
|
|
20729
|
+
.themed-mdxeditor.mdxeditor {
|
|
20730
|
+
${cssRules}
|
|
20731
|
+
}
|
|
20732
|
+
`;
|
|
20733
|
+
document.head.appendChild(styleElement);
|
|
20734
|
+
return () => {
|
|
20735
|
+
const style = document.getElementById(styleId);
|
|
20736
|
+
if (style) {
|
|
20737
|
+
style.remove();
|
|
20738
|
+
}
|
|
20739
|
+
};
|
|
20740
|
+
}, [cssVars, styleId]);
|
|
20741
|
+
const className = props.className ? `${props.className} themed-mdxeditor` : "themed-mdxeditor";
|
|
20742
|
+
return /* @__PURE__ */ React__default__default.createElement(MDXEditor, { ...props, ref, className });
|
|
20743
|
+
});
|
|
20744
|
+
ThemedMDXEditorInner.displayName = "ThemedMDXEditorInner";
|
|
20745
|
+
const ThemedMDXEditor = React__default__default.forwardRef(
|
|
20746
|
+
(props, ref) => {
|
|
20747
|
+
try {
|
|
20748
|
+
const { theme: contextTheme } = useTheme();
|
|
20749
|
+
if (contextTheme) {
|
|
20750
|
+
return /* @__PURE__ */ React__default__default.createElement(ThemedMDXEditorInner, { ...props, ref });
|
|
20751
|
+
}
|
|
20752
|
+
} catch {
|
|
20753
|
+
}
|
|
20754
|
+
const className = props.className ? `${props.className} dark-editor` : "dark-editor";
|
|
20755
|
+
return /* @__PURE__ */ React__default__default.createElement(MDXEditor, { ...props, ref, className });
|
|
20756
|
+
}
|
|
20757
|
+
);
|
|
20758
|
+
ThemedMDXEditor.displayName = "ThemedMDXEditor";
|
|
20430
20759
|
const CAN_USE_DOM = typeof window !== "undefined" && typeof window.document.createElement !== "undefined";
|
|
20431
|
-
const IS_APPLE = CAN_USE_DOM &&
|
|
20760
|
+
const IS_APPLE = CAN_USE_DOM && (() => {
|
|
20761
|
+
var _a2;
|
|
20762
|
+
const platform2 = (_a2 = navigator.userAgentData) == null ? void 0 : _a2.platform;
|
|
20763
|
+
return platform2 ? /mac/i.test(platform2) : /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);
|
|
20764
|
+
})();
|
|
20432
20765
|
function controlOrMeta(metaKey, ctrlKey) {
|
|
20433
20766
|
if (IS_APPLE) {
|
|
20434
20767
|
return metaKey;
|
|
@@ -20448,31 +20781,31 @@ const MdastHeadingVisitor = {
|
|
|
20448
20781
|
actions.addAndStepInto(At(`h${mdastNode.depth}`));
|
|
20449
20782
|
}
|
|
20450
20783
|
};
|
|
20451
|
-
const FORMATTING_KEYS = [
|
|
20784
|
+
const FORMATTING_KEYS = ["Digit0", "Digit1", "Digit2", "Digit3", "Digit4", "Digit5", "Digit6"];
|
|
20452
20785
|
const ALL_HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
|
|
20453
20786
|
const CODE_TO_HEADING_LEVEL_MAP = {
|
|
20454
|
-
|
|
20455
|
-
|
|
20456
|
-
|
|
20457
|
-
|
|
20458
|
-
|
|
20459
|
-
|
|
20787
|
+
Digit1: 1,
|
|
20788
|
+
Digit2: 2,
|
|
20789
|
+
Digit3: 3,
|
|
20790
|
+
Digit4: 4,
|
|
20791
|
+
Digit5: 5,
|
|
20792
|
+
Digit6: 6
|
|
20460
20793
|
};
|
|
20461
20794
|
const allowedHeadingLevels$ = $$4(ALL_HEADING_LEVELS, (r2) => {
|
|
20462
20795
|
r2.pub(createRootEditorSubscription$, (theRootEditor) => {
|
|
20463
20796
|
return theRootEditor.registerCommand(
|
|
20464
20797
|
Se,
|
|
20465
20798
|
(event) => {
|
|
20466
|
-
const {
|
|
20467
|
-
if (FORMATTING_KEYS.includes(
|
|
20799
|
+
const { code, ctrlKey, metaKey, altKey } = event;
|
|
20800
|
+
if (FORMATTING_KEYS.includes(code) && controlOrMeta(metaKey, ctrlKey) && altKey) {
|
|
20468
20801
|
event.preventDefault();
|
|
20469
20802
|
theRootEditor.update(() => {
|
|
20470
|
-
if (
|
|
20803
|
+
if (code === "Digit0") {
|
|
20471
20804
|
r2.pub(convertSelectionToNode$, () => Fi());
|
|
20472
20805
|
} else {
|
|
20473
20806
|
const allowedHeadingLevels = r2.getValue(allowedHeadingLevels$);
|
|
20474
|
-
const requestedHeadingLevel = CODE_TO_HEADING_LEVEL_MAP[
|
|
20475
|
-
if (
|
|
20807
|
+
const requestedHeadingLevel = CODE_TO_HEADING_LEVEL_MAP[code];
|
|
20808
|
+
if (allowedHeadingLevels.includes(requestedHeadingLevel)) {
|
|
20476
20809
|
r2.pub(convertSelectionToNode$, () => At(`h${requestedHeadingLevel}`));
|
|
20477
20810
|
}
|
|
20478
20811
|
}
|
|
@@ -20674,12 +21007,10 @@ const LexicalListItemVisitor = {
|
|
|
20674
21007
|
let surroundingParagraph = null;
|
|
20675
21008
|
for (const child of lexicalNode.getChildren()) {
|
|
20676
21009
|
if (Zn(child) || Ln(child) || child.isInline() && (hi(child) || pi(child))) {
|
|
20677
|
-
|
|
20678
|
-
|
|
20679
|
-
|
|
20680
|
-
|
|
20681
|
-
});
|
|
20682
|
-
}
|
|
21010
|
+
surroundingParagraph ?? (surroundingParagraph = actions.appendToParent(listItem2, {
|
|
21011
|
+
type: "paragraph",
|
|
21012
|
+
children: []
|
|
21013
|
+
}));
|
|
20683
21014
|
actions.visit(child, surroundingParagraph);
|
|
20684
21015
|
} else {
|
|
20685
21016
|
surroundingParagraph = null;
|
|
@@ -20891,9 +21222,7 @@ const currentListType$ = $$4("", (r2) => {
|
|
|
20891
21222
|
const parent = e2.getParent();
|
|
20892
21223
|
return parent !== null && so(parent);
|
|
20893
21224
|
});
|
|
20894
|
-
|
|
20895
|
-
element2 = anchorNode.getTopLevelElementOrThrow();
|
|
20896
|
-
}
|
|
21225
|
+
element2 ?? (element2 = anchorNode.getTopLevelElementOrThrow());
|
|
20897
21226
|
const elementKey = element2.getKey();
|
|
20898
21227
|
const elementDOM = theEditor.getElementByKey(elementKey);
|
|
20899
21228
|
if (elementDOM !== null) {
|
|
@@ -26582,9 +26911,7 @@ const TableEditor = ({ mdastNode, parentEditor, lexicalTable }) => {
|
|
|
26582
26911
|
const [iconComponentFor, readOnly2] = X$3(iconComponentFor$, readOnly$);
|
|
26583
26912
|
const getCellKey = React__default__default.useMemo(() => {
|
|
26584
26913
|
return (cell) => {
|
|
26585
|
-
|
|
26586
|
-
cell.__cacheKey = uuidv4();
|
|
26587
|
-
}
|
|
26914
|
+
cell.__cacheKey ?? (cell.__cacheKey = uuidv4());
|
|
26588
26915
|
return cell.__cacheKey;
|
|
26589
26916
|
};
|
|
26590
26917
|
}, []);
|
|
@@ -26872,7 +27199,9 @@ const CellEditor = ({ focus: focus2, setActiveCell, parentEditor, lexicalTable,
|
|
|
26872
27199
|
);
|
|
26873
27200
|
}, [colIndex, editor, rootEditor, rowIndex, saveAndFocus, setActiveCell]);
|
|
26874
27201
|
React__default__default.useEffect(() => {
|
|
26875
|
-
|
|
27202
|
+
if (focus2) {
|
|
27203
|
+
editor.focus();
|
|
27204
|
+
}
|
|
26876
27205
|
}, [focus2, editor]);
|
|
26877
27206
|
return /* @__PURE__ */ React__default__default.createElement(h, { initialEditor: editor }, /* @__PURE__ */ React__default__default.createElement(h$4, { contentEditable: /* @__PURE__ */ React__default__default.createElement(x$3, null), placeholder: /* @__PURE__ */ React__default__default.createElement("div", null), ErrorBoundary: a$2 }), nestedEditorChildren.map((Child, index2) => /* @__PURE__ */ React__default__default.createElement(Child, { key: index2 })), /* @__PURE__ */ React__default__default.createElement(a$3, null));
|
|
26878
27207
|
};
|
|
@@ -27176,9 +27505,7 @@ class TableNode extends _i {
|
|
|
27176
27505
|
setColumnAlign(colIndex, align) {
|
|
27177
27506
|
const self2 = this.getWritable();
|
|
27178
27507
|
const table = self2.__mdastNode;
|
|
27179
|
-
|
|
27180
|
-
table.align = [];
|
|
27181
|
-
}
|
|
27508
|
+
table.align ?? (table.align = []);
|
|
27182
27509
|
table.align[colIndex] = align;
|
|
27183
27510
|
}
|
|
27184
27511
|
/** @internal */
|
|
@@ -27214,7 +27541,7 @@ function $convertTableElement(element2) {
|
|
|
27214
27541
|
children: [
|
|
27215
27542
|
{
|
|
27216
27543
|
type: "text",
|
|
27217
|
-
value: cell.textContent
|
|
27544
|
+
value: cell.textContent
|
|
27218
27545
|
}
|
|
27219
27546
|
]
|
|
27220
27547
|
};
|
|
@@ -27572,7 +27899,7 @@ function EditImageToolbar(props) {
|
|
|
27572
27899
|
openEditImageDialog({
|
|
27573
27900
|
nodeKey,
|
|
27574
27901
|
initialValues: {
|
|
27575
|
-
src:
|
|
27902
|
+
src: initialImagePath ?? imageSource,
|
|
27576
27903
|
title,
|
|
27577
27904
|
altText: alt,
|
|
27578
27905
|
width: parseImageDimension(width),
|
|
@@ -31556,7 +31883,7 @@ function ImageResizer({
|
|
|
31556
31883
|
startY: 0
|
|
31557
31884
|
});
|
|
31558
31885
|
const editorRootElement = editor.getRootElement();
|
|
31559
|
-
const maxWidthContainer = maxWidth
|
|
31886
|
+
const maxWidthContainer = maxWidth ?? (editorRootElement !== null ? editorRootElement.getBoundingClientRect().width - 20 : 100);
|
|
31560
31887
|
const maxHeightContainer = editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;
|
|
31561
31888
|
const minWidth = 100;
|
|
31562
31889
|
const minHeight = 100;
|
|
@@ -32020,8 +32347,8 @@ class ImageNode extends _i {
|
|
|
32020
32347
|
this.__src = src;
|
|
32021
32348
|
this.__title = title;
|
|
32022
32349
|
this.__altText = altText;
|
|
32023
|
-
this.__width = width
|
|
32024
|
-
this.__height = height
|
|
32350
|
+
this.__width = width ?? "inherit";
|
|
32351
|
+
this.__height = height ?? "inherit";
|
|
32025
32352
|
this.__rest = rest ?? [];
|
|
32026
32353
|
}
|
|
32027
32354
|
/** @internal */
|
|
@@ -32033,6 +32360,16 @@ class ImageNode extends _i {
|
|
|
32033
32360
|
return new ImageNode(node2.__src, node2.__altText, node2.__title, node2.__width, node2.__height, node2.__rest, node2.__key);
|
|
32034
32361
|
}
|
|
32035
32362
|
/** @internal */
|
|
32363
|
+
afterCloneFrom(prevNode) {
|
|
32364
|
+
super.afterCloneFrom(prevNode);
|
|
32365
|
+
this.__src = prevNode.__src;
|
|
32366
|
+
this.__altText = prevNode.__altText;
|
|
32367
|
+
this.__title = prevNode.__title;
|
|
32368
|
+
this.__width = prevNode.__width;
|
|
32369
|
+
this.__height = prevNode.__height;
|
|
32370
|
+
this.__rest = prevNode.__rest;
|
|
32371
|
+
}
|
|
32372
|
+
/** @internal */
|
|
32036
32373
|
static importJSON(serializedNode) {
|
|
32037
32374
|
const { altText, title, src, width, rest, height } = serializedNode;
|
|
32038
32375
|
const node2 = $createImageNode({
|
|
@@ -32092,7 +32429,7 @@ class ImageNode extends _i {
|
|
|
32092
32429
|
writable.__height = height;
|
|
32093
32430
|
}
|
|
32094
32431
|
/** @internal */
|
|
32095
|
-
createDOM(config2) {
|
|
32432
|
+
createDOM(config2, _editor) {
|
|
32096
32433
|
const span = document.createElement("span");
|
|
32097
32434
|
const theme2 = config2.theme;
|
|
32098
32435
|
const className = theme2.image;
|
|
@@ -35983,6 +36320,13 @@ class CodeBlockNode extends _i {
|
|
|
35983
36320
|
static clone(node2) {
|
|
35984
36321
|
return new CodeBlockNode(node2.__code, node2.__language, node2.__meta, node2.__key);
|
|
35985
36322
|
}
|
|
36323
|
+
afterCloneFrom(prevNode) {
|
|
36324
|
+
super.afterCloneFrom(prevNode);
|
|
36325
|
+
this.__code = prevNode.__code;
|
|
36326
|
+
this.__meta = prevNode.__meta;
|
|
36327
|
+
this.__language = prevNode.__language;
|
|
36328
|
+
this.__focusEmitter = voidEmitter();
|
|
36329
|
+
}
|
|
35986
36330
|
static importJSON(serializedNode) {
|
|
35987
36331
|
const { code, meta: meta2, language: language2 } = serializedNode;
|
|
35988
36332
|
return $createCodeBlockNode({
|
|
@@ -36011,7 +36355,7 @@ class CodeBlockNode extends _i {
|
|
|
36011
36355
|
};
|
|
36012
36356
|
}
|
|
36013
36357
|
// View
|
|
36014
|
-
createDOM(_config) {
|
|
36358
|
+
createDOM(_config, _editor) {
|
|
36015
36359
|
return document.createElement("div");
|
|
36016
36360
|
}
|
|
36017
36361
|
updateDOM() {
|
|
@@ -36083,9 +36427,7 @@ const CodeBlockEditorContainer = (props) => {
|
|
|
36083
36427
|
const codeBlockEditorDescriptors = E$4(codeBlockEditorDescriptors$);
|
|
36084
36428
|
const defaultCodeBlockLanguage = E$4(defaultCodeBlockLanguage$);
|
|
36085
36429
|
let descriptor = codeBlockEditorDescriptors.sort((a2, b2) => b2.priority - a2.priority).find((descriptor2) => descriptor2.match(props.language || "", props.meta || ""));
|
|
36086
|
-
|
|
36087
|
-
descriptor = codeBlockEditorDescriptors.find((descriptor2) => descriptor2.match(defaultCodeBlockLanguage || "", props.meta || ""));
|
|
36088
|
-
}
|
|
36430
|
+
descriptor ?? (descriptor = codeBlockEditorDescriptors.find((descriptor2) => descriptor2.match(defaultCodeBlockLanguage || "", props.meta || "")));
|
|
36089
36431
|
if (!descriptor) {
|
|
36090
36432
|
throw new Error(`No CodeBlockEditor registered for language=${props.language} meta=${props.meta}`);
|
|
36091
36433
|
}
|
|
@@ -36102,10 +36444,10 @@ function $isCodeBlockNode(node2) {
|
|
|
36102
36444
|
}
|
|
36103
36445
|
function $convertPreElement(element2) {
|
|
36104
36446
|
const preElement = element2;
|
|
36105
|
-
const code = preElement.textContent
|
|
36447
|
+
const code = preElement.textContent;
|
|
36106
36448
|
const classAttribute = element2.getAttribute("class") ?? "";
|
|
36107
36449
|
const dataLanguageAttribute = element2.getAttribute("data-language") ?? "";
|
|
36108
|
-
const languageMatch =
|
|
36450
|
+
const languageMatch = /language-(\w+)/.exec(classAttribute);
|
|
36109
36451
|
const language2 = languageMatch ? languageMatch[1] : dataLanguageAttribute;
|
|
36110
36452
|
const meta2 = preElement.getAttribute("data-meta") ?? "";
|
|
36111
36453
|
return {
|
|
@@ -62280,7 +62622,7 @@ function legacy(parser2) {
|
|
|
62280
62622
|
return new LanguageSupport(StreamLanguage.define(parser2));
|
|
62281
62623
|
}
|
|
62282
62624
|
function sql(dialectName) {
|
|
62283
|
-
return import("./index-
|
|
62625
|
+
return import("./index-DsOGNrfl.js").then((m3) => m3.sql({ dialect: m3[dialectName] }));
|
|
62284
62626
|
}
|
|
62285
62627
|
const languages = [
|
|
62286
62628
|
// New-style language modes
|
|
@@ -62288,7 +62630,7 @@ const languages = [
|
|
|
62288
62630
|
name: "C",
|
|
62289
62631
|
extensions: ["c", "h", "ino"],
|
|
62290
62632
|
load() {
|
|
62291
|
-
return import("./index-
|
|
62633
|
+
return import("./index-BO94YI1U.js").then((m3) => m3.cpp());
|
|
62292
62634
|
}
|
|
62293
62635
|
}),
|
|
62294
62636
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62296,7 +62638,7 @@ const languages = [
|
|
|
62296
62638
|
alias: ["cpp"],
|
|
62297
62639
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
62298
62640
|
load() {
|
|
62299
|
-
return import("./index-
|
|
62641
|
+
return import("./index-BO94YI1U.js").then((m3) => m3.cpp());
|
|
62300
62642
|
}
|
|
62301
62643
|
}),
|
|
62302
62644
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62318,7 +62660,7 @@ const languages = [
|
|
|
62318
62660
|
name: "Go",
|
|
62319
62661
|
extensions: ["go"],
|
|
62320
62662
|
load() {
|
|
62321
|
-
return import("./index-
|
|
62663
|
+
return import("./index-kzNBMTqG.js").then((m3) => m3.go());
|
|
62322
62664
|
}
|
|
62323
62665
|
}),
|
|
62324
62666
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62333,7 +62675,7 @@ const languages = [
|
|
|
62333
62675
|
name: "Java",
|
|
62334
62676
|
extensions: ["java"],
|
|
62335
62677
|
load() {
|
|
62336
|
-
return import("./index-
|
|
62678
|
+
return import("./index-CwwU-P8Y.js").then((m3) => m3.java());
|
|
62337
62679
|
}
|
|
62338
62680
|
}),
|
|
62339
62681
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62348,7 +62690,7 @@ const languages = [
|
|
|
62348
62690
|
name: "Jinja",
|
|
62349
62691
|
extensions: ["j2", "jinja", "jinja2"],
|
|
62350
62692
|
load() {
|
|
62351
|
-
return import("./index-
|
|
62693
|
+
return import("./index-BDgU-836.js").then((m3) => m3.jinja());
|
|
62352
62694
|
}
|
|
62353
62695
|
}),
|
|
62354
62696
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62356,7 +62698,7 @@ const languages = [
|
|
|
62356
62698
|
alias: ["json5"],
|
|
62357
62699
|
extensions: ["json", "map"],
|
|
62358
62700
|
load() {
|
|
62359
|
-
return import("./index-
|
|
62701
|
+
return import("./index-BE_uqu8N.js").then((m3) => m3.json());
|
|
62360
62702
|
}
|
|
62361
62703
|
}),
|
|
62362
62704
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62370,14 +62712,14 @@ const languages = [
|
|
|
62370
62712
|
name: "LESS",
|
|
62371
62713
|
extensions: ["less"],
|
|
62372
62714
|
load() {
|
|
62373
|
-
return import("./index-
|
|
62715
|
+
return import("./index-DHoL-esa.js").then((m3) => m3.less());
|
|
62374
62716
|
}
|
|
62375
62717
|
}),
|
|
62376
62718
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62377
62719
|
name: "Liquid",
|
|
62378
62720
|
extensions: ["liquid"],
|
|
62379
62721
|
load() {
|
|
62380
|
-
return import("./index-
|
|
62722
|
+
return import("./index-Dj4Q-D3m.js").then((m3) => m3.liquid());
|
|
62381
62723
|
}
|
|
62382
62724
|
}),
|
|
62383
62725
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62409,7 +62751,7 @@ const languages = [
|
|
|
62409
62751
|
name: "PHP",
|
|
62410
62752
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
62411
62753
|
load() {
|
|
62412
|
-
return import("./index-
|
|
62754
|
+
return import("./index-BijIiC2T.js").then((m3) => m3.php());
|
|
62413
62755
|
}
|
|
62414
62756
|
}),
|
|
62415
62757
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62430,28 +62772,28 @@ const languages = [
|
|
|
62430
62772
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
62431
62773
|
filename: /^(BUCK|BUILD)$/,
|
|
62432
62774
|
load() {
|
|
62433
|
-
return import("./index-
|
|
62775
|
+
return import("./index-BQ3COoTI.js").then((m3) => m3.python());
|
|
62434
62776
|
}
|
|
62435
62777
|
}),
|
|
62436
62778
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62437
62779
|
name: "Rust",
|
|
62438
62780
|
extensions: ["rs"],
|
|
62439
62781
|
load() {
|
|
62440
|
-
return import("./index-
|
|
62782
|
+
return import("./index-WBoaW8wN.js").then((m3) => m3.rust());
|
|
62441
62783
|
}
|
|
62442
62784
|
}),
|
|
62443
62785
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62444
62786
|
name: "Sass",
|
|
62445
62787
|
extensions: ["sass"],
|
|
62446
62788
|
load() {
|
|
62447
|
-
return import("./index-
|
|
62789
|
+
return import("./index-BcJD4K9H.js").then((m3) => m3.sass({ indented: true }));
|
|
62448
62790
|
}
|
|
62449
62791
|
}),
|
|
62450
62792
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62451
62793
|
name: "SCSS",
|
|
62452
62794
|
extensions: ["scss"],
|
|
62453
62795
|
load() {
|
|
62454
|
-
return import("./index-
|
|
62796
|
+
return import("./index-BcJD4K9H.js").then((m3) => m3.sass());
|
|
62455
62797
|
}
|
|
62456
62798
|
}),
|
|
62457
62799
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62486,7 +62828,7 @@ const languages = [
|
|
|
62486
62828
|
name: "WebAssembly",
|
|
62487
62829
|
extensions: ["wat", "wast"],
|
|
62488
62830
|
load() {
|
|
62489
|
-
return import("./index-
|
|
62831
|
+
return import("./index-Bn3GS5JS.js").then((m3) => m3.wast());
|
|
62490
62832
|
}
|
|
62491
62833
|
}),
|
|
62492
62834
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62494,7 +62836,7 @@ const languages = [
|
|
|
62494
62836
|
alias: ["rss", "wsdl", "xsd"],
|
|
62495
62837
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
62496
62838
|
load() {
|
|
62497
|
-
return import("./index-
|
|
62839
|
+
return import("./index-D4652IGg.js").then((m3) => m3.xml());
|
|
62498
62840
|
}
|
|
62499
62841
|
}),
|
|
62500
62842
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62502,7 +62844,7 @@ const languages = [
|
|
|
62502
62844
|
alias: ["yml"],
|
|
62503
62845
|
extensions: ["yaml", "yml"],
|
|
62504
62846
|
load() {
|
|
62505
|
-
return import("./index-
|
|
62847
|
+
return import("./index-D_58AKji.js").then((m3) => m3.yaml());
|
|
62506
62848
|
}
|
|
62507
62849
|
}),
|
|
62508
62850
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -63291,13 +63633,13 @@ const languages = [
|
|
|
63291
63633
|
name: "Vue",
|
|
63292
63634
|
extensions: ["vue"],
|
|
63293
63635
|
load() {
|
|
63294
|
-
return import("./index-
|
|
63636
|
+
return import("./index-B2rZhF0Y.js").then((m3) => m3.vue());
|
|
63295
63637
|
}
|
|
63296
63638
|
}),
|
|
63297
63639
|
/* @__PURE__ */ LanguageDescription.of({
|
|
63298
63640
|
name: "Angular Template",
|
|
63299
63641
|
load() {
|
|
63300
|
-
return import("./index-
|
|
63642
|
+
return import("./index-c05jkXcr.js").then((m3) => m3.angular());
|
|
63301
63643
|
}
|
|
63302
63644
|
})
|
|
63303
63645
|
];
|
|
@@ -66950,7 +67292,7 @@ const CodeMirrorEditor = ({ language: language2, nodeKey, code, focusEmitter })
|
|
|
66950
67292
|
try {
|
|
66951
67293
|
const languageSupport = await languageData2.load();
|
|
66952
67294
|
extensions.push(languageSupport.extension);
|
|
66953
|
-
} catch (
|
|
67295
|
+
} catch (_e2) {
|
|
66954
67296
|
console.warn("failed to load language support for", language2);
|
|
66955
67297
|
}
|
|
66956
67298
|
}
|
|
@@ -67052,7 +67394,7 @@ const codeMirrorPlugin = realmPlugin({
|
|
|
67052
67394
|
function buildCodeBlockDescriptor(codeBlockLanguages) {
|
|
67053
67395
|
return {
|
|
67054
67396
|
match(language2, meta2) {
|
|
67055
|
-
return
|
|
67397
|
+
return Object.hasOwn(codeBlockLanguages, language2 ?? "") && !meta2;
|
|
67056
67398
|
},
|
|
67057
67399
|
priority: 1,
|
|
67058
67400
|
Editor: CodeMirrorEditor
|
|
@@ -67312,7 +67654,7 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67312
67654
|
});
|
|
67313
67655
|
r2.pub(createActiveEditorSubscription$, (editor) => {
|
|
67314
67656
|
return editor.registerCommand(
|
|
67315
|
-
|
|
67657
|
+
Se,
|
|
67316
67658
|
(event) => {
|
|
67317
67659
|
if (event.key === "k" && (IS_APPLE ? event.metaKey : event.ctrlKey) && !r2.getValue(readOnly$)) {
|
|
67318
67660
|
const selection2 = wr();
|
|
@@ -67370,9 +67712,16 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67370
67712
|
Lr([node2]);
|
|
67371
67713
|
node2.select();
|
|
67372
67714
|
} else {
|
|
67373
|
-
linkNode
|
|
67374
|
-
|
|
67375
|
-
|
|
67715
|
+
if (O(linkNode)) {
|
|
67716
|
+
const newLinkNode = d$2(url, { title });
|
|
67717
|
+
newLinkNode.append(Qn(text2));
|
|
67718
|
+
linkNode.replace(newLinkNode);
|
|
67719
|
+
newLinkNode.select();
|
|
67720
|
+
} else {
|
|
67721
|
+
linkNode.setURL(url);
|
|
67722
|
+
linkNode.setTitle(title);
|
|
67723
|
+
updateLinkText(linkNode.getFirstChild(), text2);
|
|
67724
|
+
}
|
|
67376
67725
|
}
|
|
67377
67726
|
},
|
|
67378
67727
|
{ discrete: true }
|
|
@@ -67432,6 +67781,8 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67432
67781
|
_$3(([[selection2], activeEditor, _2, readOnly2]) => {
|
|
67433
67782
|
if (ar(selection2) && activeEditor && !readOnly2) {
|
|
67434
67783
|
const node2 = getLinkNodeInSelection(selection2);
|
|
67784
|
+
if (!selection2.isCollapsed())
|
|
67785
|
+
return { type: "inactive" };
|
|
67435
67786
|
if (node2) {
|
|
67436
67787
|
const rect = getSelectionRectangle(activeEditor);
|
|
67437
67788
|
if (!rect) {
|
|
@@ -75331,641 +75682,6 @@ const UndoRedo = () => {
|
|
|
75331
75682
|
}
|
|
75332
75683
|
);
|
|
75333
75684
|
};
|
|
75334
|
-
(function() {
|
|
75335
|
-
if (typeof document === "undefined") return;
|
|
75336
|
-
var id2 = "mdxeditor-base-styles-L1VzZXJz";
|
|
75337
|
-
if (document.getElementById(id2)) return;
|
|
75338
|
-
var style = document.createElement("style");
|
|
75339
|
-
style.id = id2;
|
|
75340
|
-
style.textContent = ":root, .light, .light-theme {\n --blue-1: #fbfdff;\n --blue-2: #f4faff;\n --blue-3: #e6f4fe;\n --blue-4: #d5efff;\n --blue-5: #c2e5ff;\n --blue-6: #acd8fc;\n --blue-7: #8ec8f6;\n --blue-8: #5eb1ef;\n --blue-9: #0090ff;\n --blue-10: #0588f0;\n --blue-11: #0d74ce;\n --blue-12: #113264;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --blue-1: color(display-p3 0.986 0.992 0.999);\n --blue-2: color(display-p3 0.96 0.979 0.998);\n --blue-3: color(display-p3 0.912 0.956 0.991);\n --blue-4: color(display-p3 0.853 0.932 1);\n --blue-5: color(display-p3 0.788 0.894 0.998);\n --blue-6: color(display-p3 0.709 0.843 0.976);\n --blue-7: color(display-p3 0.606 0.777 0.947);\n --blue-8: color(display-p3 0.451 0.688 0.917);\n --blue-9: color(display-p3 0.247 0.556 0.969);\n --blue-10: color(display-p3 0.234 0.523 0.912);\n --blue-11: color(display-p3 0.15 0.44 0.84);\n --blue-12: color(display-p3 0.102 0.193 0.379);\n }\n }\n}\n\n.dark, .dark-theme {\n --blue-1: #0d1520;\n --blue-2: #111927;\n --blue-3: #0d2847;\n --blue-4: #003362;\n --blue-5: #004074;\n --blue-6: #104d87;\n --blue-7: #205d9e;\n --blue-8: #2870bd;\n --blue-9: #0090ff;\n --blue-10: #3b9eff;\n --blue-11: #70b8ff;\n --blue-12: #c2e6ff;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n .dark, .dark-theme {\n --blue-1: color(display-p3 0.057 0.081 0.122);\n --blue-2: color(display-p3 0.072 0.098 0.147);\n --blue-3: color(display-p3 0.078 0.154 0.27);\n --blue-4: color(display-p3 0.033 0.197 0.37);\n --blue-5: color(display-p3 0.08 0.245 0.441);\n --blue-6: color(display-p3 0.14 0.298 0.511);\n --blue-7: color(display-p3 0.195 0.361 0.6);\n --blue-8: color(display-p3 0.239 0.434 0.72);\n --blue-9: color(display-p3 0.247 0.556 0.969);\n --blue-10: color(display-p3 0.344 0.612 0.973);\n --blue-11: color(display-p3 0.49 0.72 1);\n --blue-12: color(display-p3 0.788 0.898 0.99);\n }\n }\n}\n\n:root, .light, .light-theme {\n --slate-1: #fcfcfd;\n --slate-2: #f9f9fb;\n --slate-3: #f0f0f3;\n --slate-4: #e8e8ec;\n --slate-5: #e0e1e6;\n --slate-6: #d9d9e0;\n --slate-7: #cdced6;\n --slate-8: #b9bbc6;\n --slate-9: #8b8d98;\n --slate-10: #80838d;\n --slate-11: #60646c;\n --slate-12: #1c2024;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --slate-1: color(display-p3 0.988 0.988 0.992);\n --slate-2: color(display-p3 0.976 0.976 0.984);\n --slate-3: color(display-p3 0.94 0.941 0.953);\n --slate-4: color(display-p3 0.908 0.909 0.925);\n --slate-5: color(display-p3 0.88 0.881 0.901);\n --slate-6: color(display-p3 0.85 0.852 0.876);\n --slate-7: color(display-p3 0.805 0.808 0.838);\n --slate-8: color(display-p3 0.727 0.733 0.773);\n --slate-9: color(display-p3 0.547 0.553 0.592);\n --slate-10: color(display-p3 0.503 0.512 0.549);\n --slate-11: color(display-p3 0.379 0.392 0.421);\n --slate-12: color(display-p3 0.113 0.125 0.14);\n }\n }\n}\n\n.dark, .dark-theme {\n --slate-1: #111113;\n --slate-2: #18191b;\n --slate-3: #212225;\n --slate-4: #272a2d;\n --slate-5: #2e3135;\n --slate-6: #363a3f;\n --slate-7: #43484e;\n --slate-8: #5a6169;\n --slate-9: #696e77;\n --slate-10: #777b84;\n --slate-11: #b0b4ba;\n --slate-12: #edeef0;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n .dark, .dark-theme {\n --slate-1: color(display-p3 0.067 0.067 0.074);\n --slate-2: color(display-p3 0.095 0.098 0.105);\n --slate-3: color(display-p3 0.13 0.135 0.145);\n --slate-4: color(display-p3 0.156 0.163 0.176);\n --slate-5: color(display-p3 0.183 0.191 0.206);\n --slate-6: color(display-p3 0.215 0.226 0.244);\n --slate-7: color(display-p3 0.265 0.28 0.302);\n --slate-8: color(display-p3 0.357 0.381 0.409);\n --slate-9: color(display-p3 0.415 0.431 0.463);\n --slate-10: color(display-p3 0.469 0.483 0.514);\n --slate-11: color(display-p3 0.692 0.704 0.728);\n --slate-12: color(display-p3 0.93 0.933 0.94);\n }\n }\n}\n\n:root, .light, .light-theme {\n --grass-1: #fbfefb;\n --grass-2: #f5fbf5;\n --grass-3: #e9f6e9;\n --grass-4: #daf1db;\n --grass-5: #c9e8ca;\n --grass-6: #b2ddb5;\n --grass-7: #94ce9a;\n --grass-8: #65ba74;\n --grass-9: #46a758;\n --grass-10: #3e9b4f;\n --grass-11: #2a7e3b;\n --grass-12: #203c25;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --grass-1: color(display-p3 0.986 0.996 0.985);\n --grass-2: color(display-p3 0.966 0.983 0.964);\n --grass-3: color(display-p3 0.923 0.965 0.917);\n --grass-4: color(display-p3 0.872 0.94 0.865);\n --grass-5: color(display-p3 0.811 0.908 0.802);\n --grass-6: color(display-p3 0.733 0.864 0.724);\n --grass-7: color(display-p3 0.628 0.803 0.622);\n --grass-8: color(display-p3 0.477 0.72 0.482);\n --grass-9: color(display-p3 0.38 0.647 0.378);\n --grass-10: color(display-p3 0.344 0.598 0.342);\n --grass-11: color(display-p3 0.263 0.488 0.261);\n --grass-12: color(display-p3 0.151 0.233 0.153);\n }\n }\n}\n\n:root, .light, .light-theme {\n --cyan-1: #fafdfe;\n --cyan-2: #f2fafb;\n --cyan-3: #def7f9;\n --cyan-4: #caf1f6;\n --cyan-5: #b5e9f0;\n --cyan-6: #9ddde7;\n --cyan-7: #7dcedc;\n --cyan-8: #3db9cf;\n --cyan-9: #00a2c7;\n --cyan-10: #0797b9;\n --cyan-11: #107d98;\n --cyan-12: #0d3c48;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --cyan-1: color(display-p3 0.982 0.992 0.996);\n --cyan-2: color(display-p3 0.955 0.981 0.984);\n --cyan-3: color(display-p3 0.888 0.965 0.975);\n --cyan-4: color(display-p3 0.821 0.941 0.959);\n --cyan-5: color(display-p3 0.751 0.907 0.935);\n --cyan-6: color(display-p3 0.671 0.862 0.9);\n --cyan-7: color(display-p3 0.564 0.8 0.854);\n --cyan-8: color(display-p3 0.388 0.715 0.798);\n --cyan-9: color(display-p3 0.282 0.627 0.765);\n --cyan-10: color(display-p3 0.264 0.583 0.71);\n --cyan-11: color(display-p3 0.08 0.48 0.63);\n --cyan-12: color(display-p3 0.108 0.232 0.277);\n }\n }\n}\n\n:root, .light, .light-theme {\n --amber-1: #fefdfb;\n --amber-2: #fefbe9;\n --amber-3: #fff7c2;\n --amber-4: #ffee9c;\n --amber-5: #fbe577;\n --amber-6: #f3d673;\n --amber-7: #e9c162;\n --amber-8: #e2a336;\n --amber-9: #ffc53d;\n --amber-10: #ffba18;\n --amber-11: #ab6400;\n --amber-12: #4f3422;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --amber-1: color(display-p3 0.995 0.992 0.985);\n --amber-2: color(display-p3 0.994 0.986 0.921);\n --amber-3: color(display-p3 0.994 0.969 0.782);\n --amber-4: color(display-p3 0.989 0.937 0.65);\n --amber-5: color(display-p3 0.97 0.902 0.527);\n --amber-6: color(display-p3 0.936 0.844 0.506);\n --amber-7: color(display-p3 0.89 0.762 0.443);\n --amber-8: color(display-p3 0.85 0.65 0.3);\n --amber-9: color(display-p3 1 0.77 0.26);\n --amber-10: color(display-p3 0.959 0.741 0.274);\n --amber-11: color(display-p3 0.64 0.4 0);\n --amber-12: color(display-p3 0.294 0.208 0.145);\n }\n }\n}\n\n:root, .light, .light-theme {\n --red-1: #fffcfc;\n --red-2: #fff7f7;\n --red-3: #feebec;\n --red-4: #ffdbdc;\n --red-5: #ffcdce;\n --red-6: #fdbdbe;\n --red-7: #f4a9aa;\n --red-8: #eb8e90;\n --red-9: #e5484d;\n --red-10: #dc3e42;\n --red-11: #ce2c31;\n --red-12: #641723;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, .light, .light-theme {\n --red-1: color(display-p3 0.998 0.989 0.988);\n --red-2: color(display-p3 0.995 0.971 0.971);\n --red-3: color(display-p3 0.985 0.925 0.925);\n --red-4: color(display-p3 0.999 0.866 0.866);\n --red-5: color(display-p3 0.984 0.812 0.811);\n --red-6: color(display-p3 0.955 0.751 0.749);\n --red-7: color(display-p3 0.915 0.675 0.672);\n --red-8: color(display-p3 0.872 0.575 0.572);\n --red-9: color(display-p3 0.83 0.329 0.324);\n --red-10: color(display-p3 0.798 0.294 0.285);\n --red-11: color(display-p3 0.744 0.234 0.222);\n --red-12: color(display-p3 0.36 0.115 0.143);\n }\n }\n}\n\n/** Code mirror */\n\n.mdxeditor .cm-editor {\n --sp-font-mono: var(--font-mono);\n --sp-font-body: var(--font-body);\n padding: var(--sp-space-4) 0;\n }\n\n.mdxeditor .sp-editor .cm-editor {\n padding-bottom: 0;\n }\n\n.mdxeditor .cm-scroller {\n padding: 0 !important;\n }\n\n.mdxeditor .cm-focused {\n outline: none;\n }\n\n.mdxeditor .sp-wrapper {\n overflow: hidden;\n }\n\n.mdxeditor .sp-layout {\n border: none;\n }\n\n.mdxeditor .sp-cm pre {\n white-space: break-spaces;\n word-break: break-word;\n overflow-wrap: anywhere;\n flex-shrink: 1;\n }\n\n/** Diff viewer */\n\n.mdxeditor .cm-mergeView .cm-scroller {\n font-family: var(--font-mono);\n line-height: 1.3rem;\n font-size: var(--text-xs);\n }\n\n/** Diff viewer */\n\n.mdxeditor .cm-sourceView .cm-scroller {\n font-family: var(--font-mono);\n line-height: 1.3rem;\n font-size: var(--text-xs);\n }\n\n.mdxeditor .cm-gutters {\n background: transparent;\n font-size: var(--text-xxs);\n }\n\n.mdxeditor .cm-activeLine {\n background: transparent;\n }\n\n.mdxeditor .cm-tooltip-autocomplete {\n background: var(--baseBgSubtle);\n }\n\n.mdxeditor hr.selected[data-lexical-decorator=true] {\n outline: 2px solid highlight;\n }\n._editorRoot_1e2ox_53 {\n --accentBase: var(--blue-1);\n --accentBgSubtle: var(--blue-2);\n --accentBg: var(--blue-3);\n --accentBgHover: var(--blue-4);\n --accentBgActive: var(--blue-5);\n --accentLine: var(--blue-6);\n --accentBorder: var(--blue-7);\n --accentBorderHover: var(--blue-8);\n --accentSolid: var(--blue-9);\n --accentSolidHover: var(--blue-10);\n --accentText: var(--blue-11);\n --accentTextContrast: var(--blue-12);\n\n --basePageBg: white;\n --baseBase: var(--slate-1);\n --baseBgSubtle: var(--slate-2);\n --baseBg: var(--slate-3);\n --baseBgHover: var(--slate-4);\n --baseBgActive: var(--slate-5);\n --baseLine: var(--slate-6);\n --baseBorder: var(--slate-7);\n --baseBorderHover: var(--slate-8);\n --baseSolid: var(--slate-9);\n --baseSolidHover: var(--slate-10);\n --baseText: var(--slate-11);\n --baseTextContrast: var(--slate-12);\n\n --admonitionTipBg: var(--cyan-4);\n --admonitionTipBorder: var(--cyan-8);\n\n --admonitionInfoBg: var(--grass-4);\n --admonitionInfoBorder: var(--grass-8);\n\n --admonitionCautionBg: var(--amber-4);\n --admonitionCautionBorder: var(--amber-8);\n\n --admonitionDangerBg: var(--red-4);\n --admonitionDangerBorder: var(--red-8);\n\n --admonitionNoteBg: var(--slate-4);\n --admonitionNoteBorder: var(--slate-8);\n\n --error-color: var(--red-10);\n\n --spacing-0: 0px;\n --spacing-px: 1px;\n --spacing-0_5: 0.125rem;\n --spacing-1: 0.25rem;\n --spacing-1_5: 0.375rem;\n --spacing-2: 0.5rem;\n --spacing-2_5: 0.625rem;\n --spacing-3: 0.75rem;\n --spacing-3_5: 0.875rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-7: 1.75rem;\n --spacing-8: 2rem;\n --spacing-9: 2.25rem;\n --spacing-10: 2.5rem;\n --spacing-11: 2.75rem;\n --spacing-12: 3rem;\n --spacing-14: 3.5rem;\n --spacing-16: 4rem;\n --spacing-20: 5rem;\n --spacing-24: 6rem;\n --spacing-28: 7rem;\n --spacing-32: 8rem;\n --spacing-36: 9rem;\n --spacing-40: 10rem;\n --spacing-44: 11rem;\n --spacing-48: 12rem;\n --spacing-52: 13rem;\n --spacing-56: 14rem;\n --spacing-60: 15rem;\n --spacing-64: 16rem;\n --spacing-72: 18rem;\n --spacing-80: 20rem;\n --spacing-96: 24rem;\n\n --radius-none: 0px;\n --radius-small: var(--spacing-0_5);\n --radius-base: var(--spacing-1);\n --radius-medium: var(--spacing-1_5);\n --radius-large: var(--spacing-2);\n --radius-extra-large: var(--spacing-3);\n --radius-full: 9999px;\n\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue',\n sans-serif;\n\n --text-base: 1rem;\n --text-sm: 0.875rem;\n --text-xs: 0.75rem;\n --text-xxs: 0.6rem;\n\n font-family: var(--font-body);\n color: var(--baseText);\n}\n\n._editorWrapper_1e2ox_155 {\n}\n\n._nestedListItem_1e2ox_158 {\n list-style: none;\n}\n\n._toolbarRoot_1e2ox_162 {\n z-index: 2;\n display: flex;\n flex-direction: row;\n gap: var(--spacing-1);\n border-radius: var(--radius-medium);\n padding: var(--spacing-1_5);\n align-items: center;\n overflow-x: auto;\n position: sticky;\n top: 0;\n background-color: var(--baseBg);\n width: inherit;\n}\n\n._toolbarRoot_1e2ox_162 div[role='separator'] {\n margin: var(--spacing-2) var(--spacing-1);\n border-left: 1px solid var(--baseBorder);\n border-right: 1px solid var(--baseBase);\n height: var(--spacing-4);\n }\n\n._toolbarRoot_1e2ox_162 svg {\n color: var(--baseTextContrast);\n display: block;\n }\n\n._readOnlyToolbarRoot_1e2ox_189 {\n pointer-events: none;\n background: var(--baseBase);\n}\n\n._readOnlyToolbarRoot_1e2ox_189 > div {\n opacity: 0.5;\n }\n\n._toolbarModeSwitch_1e2ox_198 {\n opacity: 1 !important;\n margin-left: auto;\n align-self: stretch;\n align-items: stretch;\n display: flex;\n border: 1px solid var(--baseBg);\n border-radius: var(--radius-medium);\n font-size: var(--text-xs);\n}\n\n._toolbarModeSwitch_1e2ox_198 ._toolbarToggleItem_1e2ox_208 {\n padding-inline-end: var(--spacing-4);\n padding-inline-start: var(--spacing-4);\n }\n\n._toolbarModeSwitch_1e2ox_198 ._toolbarToggleItem_1e2ox_208:active,\n ._toolbarModeSwitch_1e2ox_198 ._toolbarToggleItem_1e2ox_208[data-state='on'] {\n background-color: var(--baseBorder);\n }\n\n._toolbarGroupOfGroups_1e2ox_219 {\n display: flex;\n margin: 0 var(--spacing-1);\n}\n\n._toolbarToggleSingleGroup_1e2ox_224:first-of-type ._toolbarToggleItem_1e2ox_208:only-child,\n._toolbarToggleSingleGroup_1e2ox_224:only-child ._toolbarToggleItem_1e2ox_208:first-child,\n._toolbarModeSwitch_1e2ox_198 ._toolbarToggleItem_1e2ox_208:first-child {\n border-top-left-radius: var(--radius-base);\n border-bottom-left-radius: var(--radius-base);\n}\n\n._toolbarToggleSingleGroup_1e2ox_224:last-of-type ._toolbarToggleItem_1e2ox_208:only-child,\n._toolbarToggleSingleGroup_1e2ox_224:only-child ._toolbarToggleItem_1e2ox_208:last-child,\n._toolbarModeSwitch_1e2ox_198 ._toolbarToggleItem_1e2ox_208:last-child {\n border-top-right-radius: var(--radius-base);\n border-bottom-right-radius: var(--radius-base);\n}\n\n._toolbarToggleItem_1e2ox_208,\n._toolbarButton_1e2ox_239 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-0_5);\n}\n\n@media (hover: hover) {\n ._toolbarToggleItem_1e2ox_208:hover, ._toolbarButton_1e2ox_239:hover {\n background-color: var(--baseBgActive);\n }\n }\n\n._toolbarToggleItem_1e2ox_208:active svg, ._toolbarButton_1e2ox_239:active svg {\n transform: translate(1px, 1px);\n }\n\n._toolbarToggleItem_1e2ox_208[data-state='on'],\n ._toolbarButton_1e2ox_239[data-state='on'],\n ._toolbarToggleItem_1e2ox_208:active,\n ._toolbarButton_1e2ox_239:active {\n color: var(--baseTextContrast);\n background-color: var(--baseBgActive);\n }\n\n._toolbarToggleItem_1e2ox_208[data-disabled], ._toolbarButton_1e2ox_239[data-disabled] {\n pointer-events: none;\n }\n\n._toolbarToggleItem_1e2ox_208[data-disabled] svg, ._toolbarButton_1e2ox_239[data-disabled] svg {\n color: var(--baseBorderHover);\n }\n\n._toolbarButton_1e2ox_239 {\n border-radius: var(--radius-base);\n}\n\n._toolbarButton_1e2ox_239 + ._toolbarButton_1e2ox_239 {\n margin-left: var(--spacing-1);\n}\n\n._activeToolbarButton_1e2ox_275 {\n color: var(--accentText);\n}\n\n._toolbarToggleSingleGroup_1e2ox_224 {\n display: flex;\n align-items: center;\n white-space: nowrap;\n}\n\n._toolbarNodeKindSelectContainer_1e2ox_285,\n._toolbarButtonDropdownContainer_1e2ox_286,\n._toolbarCodeBlockLanguageSelectContent_1e2ox_287,\n._selectContainer_1e2ox_288 {\n filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.2));\n z-index: 3;\n width: var(--spacing-36);\n border-bottom-left-radius: var(--radius-base);\n border-bottom-right-radius: var(--radius-base);\n background-color: var(--basePageBg);\n font-size: var(--text-sm);\n}\n\n._toolbarButtonDropdownContainer_1e2ox_286 {\n border-top-right-radius: var(--radius-base);\n}\n\n._toolbarButtonDropdownContainer_1e2ox_286 ._selectItem_1e2ox_301:first-child {\n border-top-right-radius: var(--radius-base);\n }\n\n._toolbarNodeKindSelectTrigger_1e2ox_306,\n._toolbarButtonSelectTrigger_1e2ox_307,\n._selectTrigger_1e2ox_308 {\n border: 0;\n background-color: transparent;\n display: flex;\n color: inherit;\n align-items: center;\n width: var(--spacing-36);\n padding: var(--spacing-0_5) var(--spacing-1);\n padding-inline-start: var(--spacing-2);\n border-radius: var(--radius-medium);\n white-space: nowrap;\n flex-wrap: nowrap;\n font-size: var(--text-sm);\n background-color: var(--basePageBg);\n margin: 0 var(--spacing-1);\n}\n\n._toolbarNodeKindSelectTrigger_1e2ox_306[data-state='open'], ._toolbarButtonSelectTrigger_1e2ox_307[data-state='open'], ._selectTrigger_1e2ox_308[data-state='open'] {\n filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.2));\n border-bottom-right-radius: var(--radius-none);\n border-bottom-left-radius: var(--radius-none);\n }\n\n._selectTrigger_1e2ox_308[data-placeholder] > span:first-child {\n color: var(--baseBorderHover);\n}\n\n/** used in the sandpack */\n._toolbarButtonSelectTrigger_1e2ox_307 {\n width: auto;\n padding-inline-start: var(--spacing-2);\n padding-inline-end: var(--spacing-1);\n padding-block: var(--spacing-0_5);\n}\n\n._toolbarCodeBlockLanguageSelectTrigger_1e2ox_343,\n._toolbarCodeBlockLanguageSelectContent_1e2ox_287 {\n width: var(--spacing-48);\n}\n\n._toolbarNodeKindSelectItem_1e2ox_348,\n._selectItem_1e2ox_301 {\n cursor: default;\n display: flex;\n padding: var(--spacing-2);\n}\n\n._toolbarNodeKindSelectItem_1e2ox_348[data-highlighted], ._selectItem_1e2ox_301[data-highlighted] {\n background-color: var(--baseBg);\n }\n\n._toolbarNodeKindSelectItem_1e2ox_348[data-state='checked'], ._selectItem_1e2ox_301[data-state='checked'] {\n color: var(--baseTextContrast);\n background-color: var(--baseBg);\n }\n\n._toolbarNodeKindSelectItem_1e2ox_348[data-highlighted], ._selectItem_1e2ox_301[data-highlighted] {\n outline: none;\n }\n\n._toolbarNodeKindSelectItem_1e2ox_348:last-child, ._selectItem_1e2ox_301:last-child {\n border-bottom-left-radius: var(--radius-base);\n border-bottom-right-radius: var(--radius-base);\n }\n\n._toolbarNodeKindSelectDropdownArrow_1e2ox_373,\n._selectDropdownArrow_1e2ox_374 {\n margin-left: auto;\n display: flex;\n align-items: center;\n}\n\n._contentEditable_1e2ox_380 {\n box-sizing: border-box;\n width: 100%;\n color: var(--baseTextContrast);\n\n padding: var(--spacing-3);\n}\n\n._contentEditable_1e2ox_380:focus {\n outline: none;\n }\n\n._codeMirrorWrapper_1e2ox_392 {\n margin-bottom: var(--spacing-5);\n border: 1px solid var(--baseLine);\n border-radius: var(--radius-medium);\n overflow: hidden;\n padding: 0.8rem;\n position: relative;\n}\n\n._sandPackWrapper_1e2ox_401 {\n margin-bottom: var(--spacing-5);\n border: 1px solid var(--baseLine);\n border-radius: var(--radius-medium);\n overflow: hidden;\n position: relative;\n}\n\n._codeMirrorToolbar_1e2ox_409 {\n position: absolute;\n right: 0;\n top: 0;\n display: flex;\n gap: var(--spacing-1);\n padding: var(--spacing-1);\n z-index: 1;\n background-color: var(--baseBase);\n border-bottom-left-radius: var(--radius-base);\n}\n\n._frontmatterWrapper_1e2ox_413 {\n border-radius: var(--radius-medium);\n padding: var(--spacing-3);\n background-color: var(--baseBgSubtle);\n}\n\n._frontmatterWrapper_1e2ox_413[data-expanded='true'] {\n margin-bottom: var(--spacing-10);\n }\n\n._frontmatterToggleButton_1e2ox_423 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n font-size: var(--text-sm);\n}\n\n._propertyPanelTitle_1e2ox_431 {\n font-size: var(--text-xs);\n font-weight: 400;\n margin: 0;\n padding-top: var(--spacing-2);\n padding-left: var(--spacing-2);\n}\n\n._propertyEditorTable_1e2ox_439 {\n table-layout: fixed;\n border-spacing: var(--spacing-2);\n}\n\n._propertyEditorTable_1e2ox_439 th {\n text-align: left;\n font-size: var(--text-sm);\n padding: var(--spacing-2) var(--spacing-3);\n }\n\n._propertyEditorTable_1e2ox_439 col:nth-child(1) {\n width: 30%;\n }\n\n._propertyEditorTable_1e2ox_439 col:nth-child(2) {\n width: 70%;\n }\n\n._propertyEditorTable_1e2ox_439 td:last-child ._iconButton_1e2ox_457 {\n margin-left: var(--spacing-4);\n margin-right: var(--spacing-4);\n }\n\n._propertyEditorTable_1e2ox_439 ._readOnlyColumnCell_1e2ox_462 {\n padding-left: 0;\n }\n\n._propertyEditorLabelCell_1e2ox_467 {\n font-weight: 400;\n}\n\n._readOnlyColumnCell_1e2ox_462 {\n padding-left: 0;\n}\n\n._buttonsFooter_1e2ox_475 {\n display: flex;\n justify-content: flex-end;\n gap: var(--spacing-2);\n}\n\n._propertyEditorInput_1e2ox_481 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n width: 100%;\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-base);\n border: 1px solid var(--baseBorder);\n background-color: var(--baseBase);\n font-size: var(--text-sm);\n}\n\n._iconButton_1e2ox_457 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n color: var(--baseText);\n}\n\n@media (hover: hover) {\n ._iconButton_1e2ox_457:hover {\n color: var(--baseTextContrast);\n }\n }\n\n._iconButton_1e2ox_457:disabled,\n ._iconButton_1e2ox_457:disabled:hover {\n color: var(--baseLine);\n }\n\n._primaryButton_1e2ox_507,\n._secondaryButton_1e2ox_508 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-2) var(--spacing-3);\n border: 1px solid var(--accentBorder);\n background-color: var(--accentSolidHover);\n color: var(--baseBase);\n font-size: var(--text-xs);\n border-radius: var(--radius-medium);\n}\n\n._primaryButton_1e2ox_507:disabled, ._secondaryButton_1e2ox_508:disabled {\n background: var(--accentLine);\n border-color: var(--accentBg);\n }\n\n._smallButton_1e2ox_523 {\n font-size: var(--text-xs);\n padding: var(--spacing-1) var(--spacing-2);\n border-radius: var(--radius-base);\n}\n\n._secondaryButton_1e2ox_508 {\n border: 1px solid var(--baseBorder);\n background-color: var(--baseSolidHover);\n color: var(--baseBase);\n}\n\n._dialogForm_1e2ox_535 {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-2);\n}\n\n._linkDialogEditForm_1e2ox_541 {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--spacing-2);\n padding: 0;\n}\n\n._linkDialogInputContainer_1e2ox_549 {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n._linkDialogInputWrapper_1e2ox_555 {\n display: flex;\n align-items: center;\n background-color: var(--baseBase);\n\n border-radius: var(--radius-base);\n border: 1px solid var(--baseBorder);\n}\n\n._linkDialogInputWrapper_1e2ox_555[data-visible-dropdown='true'] {\n border-bottom-left-radius: var(--radius-none);\n border-bottom-right-radius: var(--radius-none);\n border-bottom-width: 0;\n }\n\n._linkDialogInputWrapper_1e2ox_555 > button {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding-right: var(--spacing-2);\n }\n\n._linkDialogInput_1e2ox_549,\n._dialogInput_1e2ox_576 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n width: 20rem;\n padding: var(--spacing-2) var(--spacing-3);\n font-size: var(--text-sm);\n}\n\n._linkDialogInput_1e2ox_549::-moz-placeholder, ._dialogInput_1e2ox_576::-moz-placeholder {\n color: var(--baseBorder);\n }\n\n._linkDialogInput_1e2ox_549::placeholder, ._dialogInput_1e2ox_576::placeholder {\n color: var(--baseBorder);\n }\n\n._linkDialogAnchor_1e2ox_587 {\n position: fixed;\n background-color: highlight;\n z-index: -1;\n}\n\n._linkDialogAnchor_1e2ox_587[data-visible='true'] {\n visibility: visible;\n }\n\n._linkDialogAnchor_1e2ox_587[data-visible='false'] {\n visibility: hidden;\n }\n\n._linkDialogPopoverContent_1e2ox_601,\n._tableColumnEditorPopoverContent_1e2ox_602,\n._dialogContent_1e2ox_603 {\n filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.2));\n display: flex;\n align-items: center;\n gap: var(--spacing-0_5);\n border-radius: var(--radius-medium);\n border: 1px solid var(--baseBg);\n background-color: var(--basePageBg);\n padding: var(--spacing-1) var(--spacing-1);\n font-size: var(--text-sm);\n}\n\n._largeDialogContent_1e2ox_615 {\n filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.2));\n gap: var(--spacing-0_5);\n border-radius: var(--radius-medium);\n border: 1px solid var(--baseBorder);\n background-color: var(--baseBgSubtle);\n padding: var(--spacing-4);\n font-size: var(--text-sm);\n}\n\n._dialogTitle_1e2ox_625 {\n font-size: var(--text-base);\n font-weight: 600;\n padding-left: var(--spacing-2);\n}\n\n._dialogCloseButton_1e2ox_631 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n._popoverContent_1e2ox_638 {\n filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.2));\n display: flex;\n align-items: center;\n gap: var(--spacing-0_5);\n border-radius: var(--radius-medium);\n background-color: var(--baseBgSubtle);\n padding: var(--spacing-2) var(--spacing-2);\n font-size: var(--text-sm);\n z-index: 1;\n}\n\n._popoverArrow_1e2ox_650 {\n fill: var(--basePageBg);\n}\n\n._linkDialogPreviewAnchor_1e2ox_654 {\n margin-right: var(--spacing-1);\n display: flex;\n align-items: center;\n color: var(--accentText);\n text-decoration: none;\n\n border: 1px solid transparent;\n}\n\n@media (hover: hover) {\n ._linkDialogPreviewAnchor_1e2ox_654:hover {\n color: var(--accentSolidHover);\n }\n }\n\n._linkDialogPreviewAnchor_1e2ox_654 span {\n max-width: 14rem;\n overflow-x: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n._tooltipTrigger_1e2ox_677 {\n align-self: center;\n}\n\n._tooltipContent_1e2ox_681 {\n z-index: 2;\n position: relative;\n border-radius: var(--radius-medium);\n padding: var(--spacing-1) var(--spacing-2);\n font-size: var(--text-xs);\n background-color: var(--baseText);\n color: var(--baseBase);\n}\n\n._tooltipContent_1e2ox_681 svg {\n fill: var(--baseText);\n }\n\n._actionButton_1e2ox_695 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-1);\n color: var(--baseTextContrast);\n padding: var(--spacing-1) var(--spacing-1);\n border-radius: var(--radius-medium);\n color: var(--baseTextContrast);\n}\n\n._actionButton_1e2ox_695 svg {\n display: block;\n }\n\n@media (hover: hover) {\n ._actionButton_1e2ox_695:hover {\n background-color: var(--baseBg);\n }\n }\n\n._actionButton_1e2ox_695:active svg {\n transform: translate(1px, 1px);\n }\n\n._actionButton_1e2ox_695[data-state='on'],\n ._actionButton_1e2ox_695:active {\n background-color: var(--baseBg);\n color: var(--baseTextContrast);\n }\n\n._primaryActionButton_1e2ox_702 {\n background-color: var(--accentSolid);\n color: var(--baseBase);\n}\n\n@media (hover: hover) {\n ._primaryActionButton_1e2ox_702:hover {\n background-color: var(--accentSolidHover);\n color: var(--baseBase);\n }\n }\n\n._tableEditor_1e2ox_714 {\n table-layout: fixed;\n width: 100%;\n height: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n._tableEditor_1e2ox_714 thead > tr > th {\n text-align: right;\n }\n\n._tableEditor_1e2ox_714 > tbody > tr > td:not(._toolCell_1e2ox_725),\n ._tableEditor_1e2ox_714 > tbody > tr > th:not(._toolCell_1e2ox_725):not([data-tool-cell='true']) {\n border: 1px solid var(--baseBgActive);\n padding: var(--spacing-1) var(--spacing-2);\n white-space: normal;\n }\n\n:is(._tableEditor_1e2ox_714 > tbody > tr > td:not(._toolCell_1e2ox_725),._tableEditor_1e2ox_714 > tbody > tr > th:not(._toolCell_1e2ox_725):not([data-tool-cell='true'])) > div {\n outline: none;\n }\n\n:is(._tableEditor_1e2ox_714 > tbody > tr > td:not(._toolCell_1e2ox_725),._tableEditor_1e2ox_714 > tbody > tr > th:not(._toolCell_1e2ox_725):not([data-tool-cell='true'])) > div > p {\n margin: 0;\n }\n\n[data-active='true']:is(._tableEditor_1e2ox_714 > tbody > tr > td:not(._toolCell_1e2ox_725),._tableEditor_1e2ox_714 > tbody > tr > th:not(._toolCell_1e2ox_725):not([data-tool-cell='true'])) {\n outline: solid 1px var(--baseSolid);\n }\n\n._tableEditor_1e2ox_714 ._tableColumnEditorTrigger_1e2ox_744,\n ._tableEditor_1e2ox_714 ._tableRowEditorTrigger_1e2ox_745,\n ._tableEditor_1e2ox_714 ._addRowButton_1e2ox_746,\n ._tableEditor_1e2ox_714 ._addColumnButton_1e2ox_747,\n ._tableEditor_1e2ox_714 ._iconButton_1e2ox_457 {\n opacity: 0.15;\n }\n\n@media (hover: hover) {\n ._tableEditor_1e2ox_714:hover ._tableColumnEditorTrigger_1e2ox_744,\n ._tableEditor_1e2ox_714:hover ._tableRowEditorTrigger_1e2ox_745,\n ._tableEditor_1e2ox_714:hover ._addRowButton_1e2ox_746,\n ._tableEditor_1e2ox_714:hover ._addColumnButton_1e2ox_747,\n ._tableEditor_1e2ox_714:hover ._iconButton_1e2ox_457 {\n opacity: 0.3;\n }\n\n ._tableEditor_1e2ox_714:hover ._tableColumnEditorTrigger_1e2ox_744:hover, ._tableEditor_1e2ox_714:hover ._tableRowEditorTrigger_1e2ox_745:hover, ._tableEditor_1e2ox_714:hover ._addRowButton_1e2ox_746:hover, ._tableEditor_1e2ox_714:hover ._addColumnButton_1e2ox_747:hover, ._tableEditor_1e2ox_714:hover ._iconButton_1e2ox_457:hover {\n opacity: 1;\n }\n }\n\n._toolCell_1e2ox_725 {\n text-align: right;\n}\n\n._toolCell_1e2ox_725 button {\n margin: auto;\n display: block;\n }\n\n._tableColumnEditorTrigger_1e2ox_744 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-1);\n color: var(--baseTextContrast);\n padding: var(--spacing-1);\n border-radius: var(--radius-full);\n opacity: 0.2;\n}\n\n._tableColumnEditorTrigger_1e2ox_744 svg {\n display: block;\n }\n\n@media (hover: hover) {\n ._tableColumnEditorTrigger_1e2ox_744:hover {\n background-color: var(--baseBg);\n }\n }\n\n._tableColumnEditorTrigger_1e2ox_744:active svg {\n transform: translate(1px, 1px);\n }\n\n._tableColumnEditorTrigger_1e2ox_744[data-state='on'],\n ._tableColumnEditorTrigger_1e2ox_744:active {\n background-color: var(--baseBg);\n color: var(--baseTextContrast);\n }\n\n._tableColumnEditorTrigger_1e2ox_744[data-active='true'] {\n opacity: 1 !important;\n }\n\n._tableColumnEditorToolbar_1e2ox_789 {\n display: flex;\n}\n\n._tableColumnEditorToolbar_1e2ox_789 > button {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-1);\n color: var(--baseTextContrast);\n }\n\n._tableColumnEditorToolbar_1e2ox_789 > button svg {\n display: block;\n }\n\n@media (hover: hover) {\n ._tableColumnEditorToolbar_1e2ox_789 > button:hover {\n background-color: var(--baseBg);\n }\n }\n\n._tableColumnEditorToolbar_1e2ox_789 > button:active svg {\n transform: translate(1px, 1px);\n }\n\n._tableColumnEditorToolbar_1e2ox_789 > button[data-state='on'],\n ._tableColumnEditorToolbar_1e2ox_789 > button:active {\n background-color: var(--baseBg);\n color: var(--baseTextContrast);\n }\n\n._tableColumnEditorToolbar_1e2ox_789 [role='separator'] {\n margin-left: var(--spacing-1);\n margin-right: var(--spacing-1);\n }\n\n._toggleGroupRoot_1e2ox_802 {\n display: inline-flex;\n}\n\n._toggleGroupRoot_1e2ox_802 button {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-1);\n color: var(--baseTextContrast);\n }\n\n._toggleGroupRoot_1e2ox_802 button svg {\n display: block;\n }\n\n@media (hover: hover) {\n ._toggleGroupRoot_1e2ox_802 button:hover {\n background-color: var(--baseBg);\n }\n }\n\n._toggleGroupRoot_1e2ox_802 button:active svg {\n transform: translate(1px, 1px);\n }\n\n._toggleGroupRoot_1e2ox_802 button[data-state='on'],\n ._toggleGroupRoot_1e2ox_802 button:active {\n background-color: var(--baseBg);\n color: var(--baseTextContrast);\n }\n\n._toggleGroupRoot_1e2ox_802 button:first-child {\n border-top-left-radius: var(--radius-base);\n border-bottom-left-radius: var(--radius-base);\n }\n\n._toggleGroupRoot_1e2ox_802 button:last-child {\n border-top-right-radius: var(--radius-base);\n border-bottom-right-radius: var(--radius-base);\n }\n\n._tableToolsColumn_1e2ox_820 {\n width: 2rem;\n}\n\n._tableToolsColumn_1e2ox_820 button {\n margin: auto;\n display: block;\n }\n\n._leftAlignedCell_1e2ox_829 {\n text-align: left;\n}\n\n._rightAlignedCell_1e2ox_833 {\n text-align: right;\n}\n\n._centeredCell_1e2ox_837 {\n text-align: center;\n}\n\n._addColumnButton_1e2ox_747,\n._addRowButton_1e2ox_746 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding: var(--spacing-1);\n color: var(--baseTextContrast);\n background-color: var(--baseBase);\n\n display: flex;\n align-items: center;\n}\n\n._addColumnButton_1e2ox_747 svg, ._addRowButton_1e2ox_746 svg {\n display: block;\n }\n\n@media (hover: hover) {\n ._addColumnButton_1e2ox_747:hover, ._addRowButton_1e2ox_746:hover {\n background-color: var(--baseBg);\n }\n }\n\n._addColumnButton_1e2ox_747:active svg, ._addRowButton_1e2ox_746:active svg {\n transform: translate(1px, 1px);\n }\n\n._addColumnButton_1e2ox_747[data-state='on'],\n ._addRowButton_1e2ox_746[data-state='on'],\n ._addColumnButton_1e2ox_747:active,\n ._addRowButton_1e2ox_746:active {\n background-color: var(--baseBg);\n color: var(--baseTextContrast);\n }\n\n._addColumnButton_1e2ox_747 svg, ._addRowButton_1e2ox_746 svg {\n margin: auto;\n }\n\n._addRowButton_1e2ox_746 {\n width: 100%;\n margin-top: var(--spacing-px);\n box-sizing: border-box;\n border-bottom-right-radius: var(--radius-medium);\n border-bottom-left-radius: var(--radius-medium);\n}\n\n._addColumnButton_1e2ox_747 {\n margin-left: var(--spacing-px);\n height: 100%;\n border-top-right-radius: var(--radius-medium);\n border-bottom-right-radius: var(--radius-medium);\n}\n\n/** Dialog */\n._dialogOverlay_1e2ox_870 {\n position: fixed;\n inset: 0;\n animation: _overlayShow_1e2ox_1 150ms cubic-bezier(0.16, 1, 0.3, 1);\n background-color: var(--baseBase);\n z-index: 51;\n opacity: 0.5;\n}\n\n._dialogContent_1e2ox_603,\n._largeDialogContent_1e2ox_615 {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n animation: _contentShow_1e2ox_1 150ms cubic-bezier(0.16, 1, 0.3, 1);\n z-index: 52;\n}\n\n._dialogContent_1e2ox_603:focus,\n._largeDialogContent_1e2ox_615:focus {\n outline: none;\n}\n\n@keyframes _overlayShow_1e2ox_1 {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 0.5;\n }\n}\n\n@keyframes _contentShow_1e2ox_1 {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n._focusedImage_1e2ox_916 {\n outline: highlight solid 2px;\n}\n\n._imageWrapper_1e2ox_920 {\n display: inline-block;\n position: relative;\n}\n\n._imageWrapper_1e2ox_920[draggable='true'] {\n cursor: move;\n /* fallback if grab cursor is unsupported */\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n._editImageToolbar_1e2ox_933 {\n position: absolute;\n right: 0;\n top: 0;\n display: flex;\n gap: var(--spacing-1);\n padding: var(--spacing-1);\n z-index: 1;\n background-color: var(--baseBase);\n border-bottom-left-radius: var(--radius-base);\n}\n\n._editImageButton_1e2ox_937 svg {\n display: block;\n }\n\n._inlineEditor_1e2ox_943 {\n display: inline-flex;\n border-radius: var(--radius-medium);\n padding: var(--spacing-1);\n gap: var(--spacing-2);\n align-items: center;\n background: var(--baseBg);\n}\n\n._blockEditor_1e2ox_952 {\n display: flex;\n justify-content: stretch;\n border-radius: var(--radius-medium);\n padding: var(--spacing-2);\n gap: var(--spacing-2);\n align-items: center;\n background: var(--baseBg);\n}\n\n._blockEditor_1e2ox_952 ._nestedEditor_1e2ox_961 {\n flex-grow: 1;\n }\n\n._nestedEditor_1e2ox_961 {\n background: var(--basePageBg);\n padding: var(--spacing-1) var(--spacing-2);\n border-radius: var(--radius-medium);\n}\n\n._nestedEditor_1e2ox_961 > p {\n margin: 0;\n }\n\n._nestedEditor_1e2ox_961:focus {\n outline: none;\n }\n\n._genericComponentName_1e2ox_980 {\n font-size: var(--text-sm);\n color: var(--baseText);\n padding-right: var(--spacing-2);\n}\n\n._diffSourceToggleWrapper_1e2ox_986 {\n margin-left: auto;\n pointer-events: auto;\n opacity: 1;\n position: sticky;\n right: 0;\n}\n\n._ggDiffSourceToggle_1e2ox_994 {\n}\n\n._diffSourceToggle_1e2ox_986 {\n border-radius: var(--radius-medium);\n background-color: var(--baseBase);\n display: flex;\n}\n\n._diffSourceToggle_1e2ox_986 ._toolbarToggleItem_1e2ox_208 {\n padding: 0;\n }\n\n._diffSourceToggle_1e2ox_986 ._toolbarToggleItem_1e2ox_208 > span {\n display: block;\n padding: var(--spacing-1) var(--spacing-1);\n }\n\n._selectWithLabel_1e2ox_1012 {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-left: var(--spacing-2);\n}\n\n._selectWithLabel_1e2ox_1012 > label {\n font-size: var(--text-sm);\n }\n\n._selectWithLabel_1e2ox_1012 ._selectTrigger_1e2ox_308 {\n border: 1px solid var(--baseBorder);\n }\n\n._toolbarTitleMode_1e2ox_1027 {\n font-size: var(--text-sm);\n margin-left: var(--spacing-2);\n}\n\n._imageControlWrapperResizing_1e2ox_1032 {\n touch-action: none;\n}\n\n._imageResizer_1e2ox_1036 {\n display: block;\n width: 7px;\n height: 7px;\n position: absolute;\n background-color: var(--accentText);\n border: 1px solid var(--baseBg);\n}\n\n._imageResizer_1e2ox_1036._imageResizerN_1e2ox_1045 {\n top: -6px;\n left: 48%;\n cursor: n-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerNe_1e2ox_1051 {\n top: -6px;\n right: -6px;\n cursor: ne-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerE_1e2ox_1057 {\n bottom: 48%;\n right: -6px;\n cursor: e-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerSe_1e2ox_1063 {\n bottom: -2px;\n right: -6px;\n cursor: nwse-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerS_1e2ox_1063 {\n bottom: -2px;\n left: 48%;\n cursor: s-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerSw_1e2ox_1075 {\n bottom: -2px;\n left: -6px;\n cursor: sw-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerW_1e2ox_1081 {\n bottom: 48%;\n left: -6px;\n cursor: w-resize;\n}\n\n._imageResizer_1e2ox_1036._imageResizerNw_1e2ox_1087 {\n top: -6px;\n left: -6px;\n cursor: nw-resize;\n}\n\n._imagePlaceholder_1e2ox_1093 {\n border: 2px dashed;\n padding: 48px;\n margin: 12px;\n width: -moz-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: fit-content;\n}\n\n._imageDimensionsContainer_1e2ox_1101 {\n display: flex;\n gap: var(--spacing-4);\n}\n\n._placeholder_1e2ox_1106 {\n color: var(--baseSolid);\n overflow: hidden;\n position: absolute;\n top: 0;\n padding: var(--spacing-3);\n text-overflow: ellipsis;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n white-space: nowrap;\n display: inline-block;\n pointer-events: none;\n}\n\n._rootContentEditableWrapper_1e2ox_1119 {\n position: relative;\n}\n\n._downshiftContainer_1e2ox_1123 {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n._downshiftInputWrapper_1e2ox_1129 {\n display: flex;\n align-items: center;\n background-color: var(--baseBase);\n\n border-radius: var(--radius-base);\n border: 1px solid var(--baseBorder);\n}\n\n._downshiftInputWrapper_1e2ox_1129[data-visible-dropdown='true'] {\n border-bottom-left-radius: var(--radius-none);\n border-bottom-right-radius: var(--radius-none);\n border-bottom-width: 0;\n }\n\n._downshiftInputWrapper_1e2ox_1129 > button {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n padding-right: var(--spacing-2);\n }\n\n._downshiftInput_1e2ox_1129 {\n border: 0;\n background-color: transparent;\n font-size: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n all: unset;\n box-sizing: border-box;\n cursor: default;\n width: 20rem;\n padding: var(--spacing-2) var(--spacing-3);\n font-size: var(--text-sm);\n}\n\n._downshiftInput_1e2ox_1129::-moz-placeholder {\n color: var(--baseBorder);\n }\n\n._downshiftInput_1e2ox_1129::placeholder {\n color: var(--baseBorder);\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 {\n position: relative;\n}\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul {\n all: unset;\n box-sizing: border-box;\n position: absolute;\n font-size: var(--text-sm);\n width: 100%;\n display: none;\n border-bottom-left-radius: var(--radius-medium);\n border-bottom-right-radius: var(--radius-medium);\n max-height: var(--spacing-48);\n overflow-x: hidden;\n overflow-y: auto;\n border: 1px solid var(--baseBorder);\n border-top-width: 0;\n background-color: var(--baseBase);\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul[data-visible='true'] {\n display: block;\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul li {\n padding: var(--spacing-2) var(--spacing-3);\n white-space: nowrap;\n margin-bottom: var(--spacing-1);\n overflow-x: hidden;\n text-overflow: ellipsis;\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul li[data-selected='true'] {\n background-color: var(--baseBgSubtle);\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul li[data-highlighted='true'] {\n background-color: var(--baseBgHover);\n }\n\n._downshiftAutocompleteContainer_1e2ox_1160 ul li:last-of-type {\n border-bottom-left-radius: var(--radius-medium);\n border-bottom-right-radius: var(--radius-medium);\n }\n\n._textInput_1e2ox_1206 {\n all: unset;\n border-radius: var(--radius-base);\n border: 1px solid var(--baseBorder);\n background-color: var(--baseBase);\n padding: var(--spacing-2) var(--spacing-3);\n}\n\nform._multiFieldForm_1e2ox_1214 {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-2);\n gap: var(--spacing-2);\n}\n\nform._multiFieldForm_1e2ox_1214 ._formField_1e2ox_1220 {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n }\n\nform._multiFieldForm_1e2ox_1214 ._formField_1e2ox_1220 label {\n font-size: var(--text-xs);\n }\n\n._markdownParseError_1e2ox_1231 {\n border-radius: var(--radius-base);\n border: 1px solid var(--error-color);\n padding: var(--spacing-2);\n margin-block: var(--spacing-2);\n color: var(--error-color);\n font-size: var(--text-xs);\n}\n\n._popupContainer_1e2ox_1240 {\n position: relative;\n z-index: 2;\n}\n\n._inputSizer_1e2ox_1245 {\n display: inline-grid;\n vertical-align: baseline;\n align-items: center;\n position: relative;\n}\n\n._inputSizer_1e2ox_1245::after,\n ._inputSizer_1e2ox_1245 input {\n width: auto;\n min-width: 1rem;\n grid-area: 1 / 2;\n font: inherit;\n margin: 0;\n padding: 0 2px;\n resize: none;\n background: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: none;\n color: inherit;\n }\n\n._inputSizer_1e2ox_1245 span {\n padding: 0.25em;\n }\n\n._inputSizer_1e2ox_1245::after {\n content: attr(data-value);\n white-space: pre-wrap;\n }\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --blue-1: #fbfdff;\n --blue-2: #f4faff;\n --blue-3: #e6f4fe;\n --blue-4: #d5efff;\n --blue-5: #c2e5ff;\n --blue-6: #acd8fc;\n --blue-7: #8ec8f6;\n --blue-8: #5eb1ef;\n --blue-9: #0090ff;\n --blue-10: #0588f0;\n --blue-11: #0d74ce;\n --blue-12: #113264;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --blue-1: color(display-p3 0.986 0.992 0.999);\n --blue-2: color(display-p3 0.96 0.979 0.998);\n --blue-3: color(display-p3 0.912 0.956 0.991);\n --blue-4: color(display-p3 0.853 0.932 1);\n --blue-5: color(display-p3 0.788 0.894 0.998);\n --blue-6: color(display-p3 0.709 0.843 0.976);\n --blue-7: color(display-p3 0.606 0.777 0.947);\n --blue-8: color(display-p3 0.451 0.688 0.917);\n --blue-9: color(display-p3 0.247 0.556 0.969);\n --blue-10: color(display-p3 0.234 0.523 0.912);\n --blue-11: color(display-p3 0.15 0.44 0.84);\n --blue-12: color(display-p3 0.102 0.193 0.379);\n }\n }\n}\n\n._dark_1tncs_1, ._dark-theme_1tncs_1 {\n --blue-1: #0d1520;\n --blue-2: #111927;\n --blue-3: #0d2847;\n --blue-4: #003362;\n --blue-5: #004074;\n --blue-6: #104d87;\n --blue-7: #205d9e;\n --blue-8: #2870bd;\n --blue-9: #0090ff;\n --blue-10: #3b9eff;\n --blue-11: #70b8ff;\n --blue-12: #c2e6ff;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n ._dark_1tncs_1, ._dark-theme_1tncs_1 {\n --blue-1: color(display-p3 0.057 0.081 0.122);\n --blue-2: color(display-p3 0.072 0.098 0.147);\n --blue-3: color(display-p3 0.078 0.154 0.27);\n --blue-4: color(display-p3 0.033 0.197 0.37);\n --blue-5: color(display-p3 0.08 0.245 0.441);\n --blue-6: color(display-p3 0.14 0.298 0.511);\n --blue-7: color(display-p3 0.195 0.361 0.6);\n --blue-8: color(display-p3 0.239 0.434 0.72);\n --blue-9: color(display-p3 0.247 0.556 0.969);\n --blue-10: color(display-p3 0.344 0.612 0.973);\n --blue-11: color(display-p3 0.49 0.72 1);\n --blue-12: color(display-p3 0.788 0.898 0.99);\n }\n }\n}\n\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --slate-1: #fcfcfd;\n --slate-2: #f9f9fb;\n --slate-3: #f0f0f3;\n --slate-4: #e8e8ec;\n --slate-5: #e0e1e6;\n --slate-6: #d9d9e0;\n --slate-7: #cdced6;\n --slate-8: #b9bbc6;\n --slate-9: #8b8d98;\n --slate-10: #80838d;\n --slate-11: #60646c;\n --slate-12: #1c2024;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --slate-1: color(display-p3 0.988 0.988 0.992);\n --slate-2: color(display-p3 0.976 0.976 0.984);\n --slate-3: color(display-p3 0.94 0.941 0.953);\n --slate-4: color(display-p3 0.908 0.909 0.925);\n --slate-5: color(display-p3 0.88 0.881 0.901);\n --slate-6: color(display-p3 0.85 0.852 0.876);\n --slate-7: color(display-p3 0.805 0.808 0.838);\n --slate-8: color(display-p3 0.727 0.733 0.773);\n --slate-9: color(display-p3 0.547 0.553 0.592);\n --slate-10: color(display-p3 0.503 0.512 0.549);\n --slate-11: color(display-p3 0.379 0.392 0.421);\n --slate-12: color(display-p3 0.113 0.125 0.14);\n }\n }\n}\n\n._dark_1tncs_1, ._dark-theme_1tncs_1 {\n --slate-1: #111113;\n --slate-2: #18191b;\n --slate-3: #212225;\n --slate-4: #272a2d;\n --slate-5: #2e3135;\n --slate-6: #363a3f;\n --slate-7: #43484e;\n --slate-8: #5a6169;\n --slate-9: #696e77;\n --slate-10: #777b84;\n --slate-11: #b0b4ba;\n --slate-12: #edeef0;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n ._dark_1tncs_1, ._dark-theme_1tncs_1 {\n --slate-1: color(display-p3 0.067 0.067 0.074);\n --slate-2: color(display-p3 0.095 0.098 0.105);\n --slate-3: color(display-p3 0.13 0.135 0.145);\n --slate-4: color(display-p3 0.156 0.163 0.176);\n --slate-5: color(display-p3 0.183 0.191 0.206);\n --slate-6: color(display-p3 0.215 0.226 0.244);\n --slate-7: color(display-p3 0.265 0.28 0.302);\n --slate-8: color(display-p3 0.357 0.381 0.409);\n --slate-9: color(display-p3 0.415 0.431 0.463);\n --slate-10: color(display-p3 0.469 0.483 0.514);\n --slate-11: color(display-p3 0.692 0.704 0.728);\n --slate-12: color(display-p3 0.93 0.933 0.94);\n }\n }\n}\n\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --grass-1: #fbfefb;\n --grass-2: #f5fbf5;\n --grass-3: #e9f6e9;\n --grass-4: #daf1db;\n --grass-5: #c9e8ca;\n --grass-6: #b2ddb5;\n --grass-7: #94ce9a;\n --grass-8: #65ba74;\n --grass-9: #46a758;\n --grass-10: #3e9b4f;\n --grass-11: #2a7e3b;\n --grass-12: #203c25;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --grass-1: color(display-p3 0.986 0.996 0.985);\n --grass-2: color(display-p3 0.966 0.983 0.964);\n --grass-3: color(display-p3 0.923 0.965 0.917);\n --grass-4: color(display-p3 0.872 0.94 0.865);\n --grass-5: color(display-p3 0.811 0.908 0.802);\n --grass-6: color(display-p3 0.733 0.864 0.724);\n --grass-7: color(display-p3 0.628 0.803 0.622);\n --grass-8: color(display-p3 0.477 0.72 0.482);\n --grass-9: color(display-p3 0.38 0.647 0.378);\n --grass-10: color(display-p3 0.344 0.598 0.342);\n --grass-11: color(display-p3 0.263 0.488 0.261);\n --grass-12: color(display-p3 0.151 0.233 0.153);\n }\n }\n}\n\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --cyan-1: #fafdfe;\n --cyan-2: #f2fafb;\n --cyan-3: #def7f9;\n --cyan-4: #caf1f6;\n --cyan-5: #b5e9f0;\n --cyan-6: #9ddde7;\n --cyan-7: #7dcedc;\n --cyan-8: #3db9cf;\n --cyan-9: #00a2c7;\n --cyan-10: #0797b9;\n --cyan-11: #107d98;\n --cyan-12: #0d3c48;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --cyan-1: color(display-p3 0.982 0.992 0.996);\n --cyan-2: color(display-p3 0.955 0.981 0.984);\n --cyan-3: color(display-p3 0.888 0.965 0.975);\n --cyan-4: color(display-p3 0.821 0.941 0.959);\n --cyan-5: color(display-p3 0.751 0.907 0.935);\n --cyan-6: color(display-p3 0.671 0.862 0.9);\n --cyan-7: color(display-p3 0.564 0.8 0.854);\n --cyan-8: color(display-p3 0.388 0.715 0.798);\n --cyan-9: color(display-p3 0.282 0.627 0.765);\n --cyan-10: color(display-p3 0.264 0.583 0.71);\n --cyan-11: color(display-p3 0.08 0.48 0.63);\n --cyan-12: color(display-p3 0.108 0.232 0.277);\n }\n }\n}\n\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --amber-1: #fefdfb;\n --amber-2: #fefbe9;\n --amber-3: #fff7c2;\n --amber-4: #ffee9c;\n --amber-5: #fbe577;\n --amber-6: #f3d673;\n --amber-7: #e9c162;\n --amber-8: #e2a336;\n --amber-9: #ffc53d;\n --amber-10: #ffba18;\n --amber-11: #ab6400;\n --amber-12: #4f3422;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --amber-1: color(display-p3 0.995 0.992 0.985);\n --amber-2: color(display-p3 0.994 0.986 0.921);\n --amber-3: color(display-p3 0.994 0.969 0.782);\n --amber-4: color(display-p3 0.989 0.937 0.65);\n --amber-5: color(display-p3 0.97 0.902 0.527);\n --amber-6: color(display-p3 0.936 0.844 0.506);\n --amber-7: color(display-p3 0.89 0.762 0.443);\n --amber-8: color(display-p3 0.85 0.65 0.3);\n --amber-9: color(display-p3 1 0.77 0.26);\n --amber-10: color(display-p3 0.959 0.741 0.274);\n --amber-11: color(display-p3 0.64 0.4 0);\n --amber-12: color(display-p3 0.294 0.208 0.145);\n }\n }\n}\n\n:root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --red-1: #fffcfc;\n --red-2: #fff7f7;\n --red-3: #feebec;\n --red-4: #ffdbdc;\n --red-5: #ffcdce;\n --red-6: #fdbdbe;\n --red-7: #f4a9aa;\n --red-8: #eb8e90;\n --red-9: #e5484d;\n --red-10: #dc3e42;\n --red-11: #ce2c31;\n --red-12: #641723;\n}\n\n@supports (color: color(display-p3 1 1 1)) {\n @media (color-gamut: p3) {\n :root, ._light_1tncs_1, ._light-theme_1tncs_1 {\n --red-1: color(display-p3 0.998 0.989 0.988);\n --red-2: color(display-p3 0.995 0.971 0.971);\n --red-3: color(display-p3 0.985 0.925 0.925);\n --red-4: color(display-p3 0.999 0.866 0.866);\n --red-5: color(display-p3 0.984 0.812 0.811);\n --red-6: color(display-p3 0.955 0.751 0.749);\n --red-7: color(display-p3 0.915 0.675 0.672);\n --red-8: color(display-p3 0.872 0.575 0.572);\n --red-9: color(display-p3 0.83 0.329 0.324);\n --red-10: color(display-p3 0.798 0.294 0.285);\n --red-11: color(display-p3 0.744 0.234 0.222);\n --red-12: color(display-p3 0.36 0.115 0.143);\n }\n }\n}\n\n._bold_1tncs_10 {\n font-weight: bold;\n}\n\n._italic_1tncs_14 {\n font-style: italic;\n}\n\n._underline_1tncs_18 {\n text-decoration: underline;\n}\n\n._bold_1tncs_10 {\n font-weight: 700;\n}\n\n._italic_1tncs_14 {\n font-style: italic;\n}\n\n._underline_1tncs_18 {\n text-decoration: underline\n}\n\n._strikethrough_1tncs_34 {\n text-decoration: line-through\n}\n\n._underlineStrikethrough_1tncs_38 {\n text-decoration: underline line-through\n}\n\n._subscript_1tncs_42 {\n font-size: .8em;\n vertical-align: sub !important\n}\n\n._superscript_1tncs_47 {\n font-size: .8em;\n vertical-align: super\n}\n\n._code_1tncs_52 {\n background-color: var(--baseBg);\n padding: 1px .25rem;\n font-family: var(--font-mono);\n font-size: 94%\n}\n\n._nestedListItem_1tncs_59 {\n list-style: none;\n list-style-type: none;\n}\n\n._nestedListItem_1tncs_59:before,\n._nestedListItem_1tncs_59:after {\n display: none;\n}\n\n._listitem_1tncs_69 {\n margin: var(--spacing-2) 0;\n}\n\n._listItemChecked_1tncs_73,\n._listItemUnchecked_1tncs_74 {\n position: relative;\n margin-left: 0;\n margin-right: 0;\n margin-inline-start: -1rem;\n padding-left: var(--spacing-6);\n padding-right: var(--spacing-6);\n list-style-type: none;\n outline: none;\n}\n\n._listItemChecked_1tncs_73 {\n text-decoration: line-through;\n}\n\n._listItemUnchecked_1tncs_74:before,\n._listItemChecked_1tncs_73:before {\n content: '';\n width: var(--spacing-4);\n height: var(--spacing-4);\n top: 0;\n left: 0;\n cursor: pointer;\n display: block;\n background-size: cover;\n position: absolute;\n}\n\n._listItemUnchecked_1tncs_74[dir='rtl']:before,\n._listItemChecked_1tncs_73[dir='rtl']:before {\n left: auto;\n right: 0;\n}\n\n._listItemUnchecked_1tncs_74:focus:before,\n._listItemChecked_1tncs_73:focus:before {\n box-shadow: 0 0 0 2px var(--accentBgActive);\n border-radius: var(--radius-small);\n}\n\n._listItemUnchecked_1tncs_74:before {\n border: 1px solid var(--baseBorder);\n border-radius: var(--radius-small);\n}\n\n._listItemChecked_1tncs_73:before {\n border: 1px solid var(--accentBorder);\n border-radius: var(--radius-small);\n background-color: var(--accentSolid);\n background-repeat: no-repeat;\n}\n\n._listItemChecked_1tncs_73:after {\n content: '';\n cursor: pointer;\n border-color: var(--baseBase);\n border-style: solid;\n position: absolute;\n display: block;\n top: var(--spacing-0_5);\n width: var(--spacing-1);\n left: var(--spacing-1_5);\n right: var(--spacing-1_5);\n height: var(--spacing-2);\n transform: rotate(45deg);\n border-width: 0 var(--spacing-0_5) var(--spacing-0_5) 0;\n}\n\n._nestedListItem_1tncs_59 {\n list-style-type: none;\n}\n\n._nestedListItem_1tncs_59:before,\n._nestedListItem_1tncs_59:after {\n display: none;\n}\n\n._admonitionDanger_1tncs_151,\n._admonitionInfo_1tncs_152,\n._admonitionNote_1tncs_153,\n._admonitionTip_1tncs_154,\n._admonitionCaution_1tncs_155 {\n padding: var(--spacing-2);\n margin-top: var(--spacing-2);\n margin-bottom: var(--spacing-2);\n border-left: 3px solid var(--admonitionBorder);\n background-color: var(--admonitionBg);\n}\n\n._admonitionInfo_1tncs_152 {\n --admonitionBorder: var(--admonitionInfoBorder);\n --admonitionBg: var(--admonitionInfoBg);\n}\n\n._admonitionTip_1tncs_154 {\n --admonitionBorder: var(--admonitionTipBorder);\n --admonitionBg: var(--admonitionTipBg);\n}\n\n._admonitionCaution_1tncs_155 {\n --admonitionBorder: var(--admonitionCautionBorder);\n --admonitionBg: var(--admonitionCautionBg);\n}\n\n._admonitionDanger_1tncs_151 {\n --admonitionBorder: var(--admonitionDangerBorder);\n --admonitionBg: var(--admonitionDangerBg);\n}\n\n._admonitionNote_1tncs_153 {\n --admonitionBorder: var(--admonitionNoteBorder);\n --admonitionBg: var(--admonitionNoteBg);\n}\n\n._mdxExpression_1tncs_188 {\n font-family: var(--font-mono);\n font-size: 84%;\n color: var(--accentText);\n}\n\n._mdxExpression_1tncs_188 input:focus-visible {\n outline: none;\n }\n";
|
|
75341
|
-
document.head.appendChild(style);
|
|
75342
|
-
})();
|
|
75343
|
-
(function() {
|
|
75344
|
-
if (typeof document === "undefined") return;
|
|
75345
|
-
var id2 = "industry-mdx-editor-styles-L1VzZXJz";
|
|
75346
|
-
if (document.getElementById(id2)) return;
|
|
75347
|
-
var style = document.createElement("style");
|
|
75348
|
-
style.id = id2;
|
|
75349
|
-
style.textContent = "/**\n * Industry-themed MDX Editor styles\n * These CSS custom properties integrate MDXEditor with the industry-theme system\n * Based on Radix UI theming system used by MDXEditor\n *\n * Note: All Radix color variables are set directly by the component\n * This file provides additional content styling and customizations\n */\n\n/* Override MDXEditor's default CSS variables with our theme */\n.themed-mdx-editor [class*='editorRoot'] {\n --accentBase: var(--accentBase) !important;\n --accentBgSubtle: var(--accentBgSubtle) !important;\n --accentBg: var(--accentBg) !important;\n --accentBgHover: var(--accentBgHover) !important;\n --accentBgActive: var(--accentBgActive) !important;\n --accentLine: var(--accentLine) !important;\n --accentBorder: var(--accentBorder) !important;\n --accentBorderHover: var(--accentBorderHover) !important;\n --accentSolid: var(--accentSolid) !important;\n --accentSolidHover: var(--accentSolidHover) !important;\n --accentText: var(--accentText) !important;\n --accentTextContrast: var(--accentTextContrast) !important;\n\n --basePageBg: var(--mdx-editor-bg) !important;\n --baseBase: var(--baseBase) !important;\n --baseBgSubtle: var(--baseBgSubtle) !important;\n --baseBg: var(--baseBg) !important;\n --baseBgHover: var(--baseBgHover) !important;\n --baseBgActive: var(--baseBgActive) !important;\n --baseLine: var(--baseLine) !important;\n --baseBorder: var(--baseBorder) !important;\n --baseBorderHover: var(--baseBorderHover) !important;\n --baseSolid: var(--baseSolid) !important;\n --baseSolidHover: var(--baseSolidHover) !important;\n --baseText: var(--baseText) !important;\n --baseTextContrast: var(--baseTextContrast) !important;\n}\n\n/* MDXEditor content styling */\n.themed-mdx-editor .mdx-editor-content {\n font-family: var(--mdx-editor-font-family);\n font-size: var(--mdx-editor-font-size);\n color: var(--mdx-editor-fg);\n line-height: 1.6;\n\n /* Document padding - similar to Google Docs margins */\n padding-top: var(--mdx-editor-padding-top, 0);\n padding-right: var(--mdx-editor-padding-right, 0);\n padding-bottom: var(--mdx-editor-padding-bottom, 0);\n padding-left: var(--mdx-editor-padding-left, 0);\n\n /* Ensure content is properly contained */\n box-sizing: border-box;\n}\n\n/* Headings */\n.themed-mdx-editor .mdx-editor-content h1,\n.themed-mdx-editor .mdx-editor-content h2,\n.themed-mdx-editor .mdx-editor-content h3,\n.themed-mdx-editor .mdx-editor-content h4,\n.themed-mdx-editor .mdx-editor-content h5,\n.themed-mdx-editor .mdx-editor-content h6 {\n color: var(--mdx-editor-heading-color);\n}\n\n/* Links */\n.themed-mdx-editor .mdx-editor-content a {\n color: var(--mdx-editor-link-color);\n}\n\n/* Inline code */\n.themed-mdx-editor .mdx-editor-content code {\n background-color: var(--mdx-editor-code-bg);\n font-family: var(--mdx-editor-font-family);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n/* Code blocks - target the CodeMirror editor wrapper */\n.themed-mdx-editor .cm-editor {\n background-color: var(--mdx-editor-code-bg) !important;\n}\n\n.themed-mdx-editor .cm-editor .cm-scroller {\n font-family: var(--mdx-editor-font-family);\n background-color: var(--mdx-editor-code-bg);\n}\n\n.themed-mdx-editor .cm-editor .cm-gutters {\n background-color: var(--mdx-editor-code-bg);\n border-right: 1px solid var(--mdx-editor-border);\n color: var(--mdx-editor-fg);\n}\n\n.themed-mdx-editor .cm-editor .cm-content {\n background-color: var(--mdx-editor-code-bg);\n color: var(--mdx-editor-fg);\n}\n\n.themed-mdx-editor .cm-editor .cm-line {\n background-color: var(--mdx-editor-code-bg);\n}\n\n.themed-mdx-editor .cm-editor .cm-activeLineGutter {\n background-color: var(--baseBgHover);\n}\n\n.themed-mdx-editor .cm-editor .cm-activeLine {\n background-color: var(--baseBgHover);\n}\n\n/* Selection */\n.themed-mdx-editor .mdx-editor-content ::selection {\n background-color: var(--mdx-editor-selection-bg);\n}\n\n/* Toolbar container */\n.themed-mdx-editor [class*='toolbarRoot'] {\n background-color: var(--mdx-editor-toolbar-bg);\n border-bottom: 1px solid var(--mdx-editor-border);\n}\n\n/* Toolbar buttons */\n.themed-mdx-editor [class*='toolbarRoot'] button:not([class*='selectTrigger']) {\n color: var(--mdx-editor-fg);\n}\n\n.themed-mdx-editor [class*='toolbarRoot'] button:not([class*='selectTrigger']):hover {\n background-color: var(--mdx-editor-selection-bg);\n}\n\n/* Fix toolbar SVG icon colors - override MDXEditor's baseTextContrast usage */\n.themed-mdx-editor [class*='toolbarRoot'] svg {\n color: var(--baseText) !important;\n}\n\n/* Toolbar select dropdowns (BlockTypeSelect, etc.) */\n.themed-mdx-editor button[role='combobox'][class*='selectTrigger'],\n.themed-mdx-editor [data-toolbar-item='true'][class*='selectTrigger'],\nbutton[role='combobox'][class*='selectTrigger'][data-toolbar-item='true'] {\n background-color: var(--baseBg) !important;\n color: var(--baseText) !important;\n border: 1px solid var(--baseBorder) !important;\n padding: 4px 8px !important;\n border-radius: 4px !important;\n}\n\n.themed-mdx-editor button[role='combobox'][class*='selectTrigger']:hover,\n.themed-mdx-editor [data-toolbar-item='true'][class*='selectTrigger']:hover,\nbutton[role='combobox'][class*='selectTrigger'][data-toolbar-item='true']:hover {\n background-color: var(--baseBgHover) !important;\n border-color: var(--baseBorderHover) !important;\n}\n\n.themed-mdx-editor button[class*='selectTrigger'] span,\nbutton[class*='selectTrigger'][data-toolbar-item='true'] span {\n color: var(--baseText) !important;\n}\n\n.themed-mdx-editor button[class*='selectTrigger'] [class*='selectDropdownArrow'] svg,\nbutton[class*='selectTrigger'][data-toolbar-item='true'] [class*='selectDropdownArrow'] svg {\n color: var(--baseText) !important;\n}\n\n/* Select dropdown content - Note: These are often portaled outside the editor */\n[class*='selectContent'] {\n background-color: var(--baseBg) !important;\n border: 1px solid var(--baseBorder) !important;\n color: var(--baseText) !important;\n z-index: 9999 !important;\n}\n\n[class*='selectItem'] {\n color: var(--baseText) !important;\n}\n\n[class*='selectItem']:hover {\n background-color: var(--baseBgHover) !important;\n}\n\n[class*='selectItem'][data-state='checked'] {\n background-color: var(--accentBg) !important;\n color: var(--accentText) !important;\n}\n\n/* Table borders - use accent color for visibility */\n.themed-mdx-editor [class*='tableEditor'] > tbody > tr > td:not([class*='toolCell']),\n.themed-mdx-editor [class*='tableEditor'] > tbody > tr > th:not([class*='toolCell']):not([data-tool-cell='true']) {\n border: 1px solid var(--mdx-editor-table-border) !important;\n padding: var(--spacing-1) var(--spacing-2);\n white-space: normal;\n}\n\n.themed-mdx-editor [class*='tableEditor'] > thead > tr > th {\n border: 1px solid var(--mdx-editor-table-border) !important;\n}\n\n/* Source mode editor */\n.themed-mdx-editor [class*='sourceEditor'] {\n font-family: var(--mdx-editor-font-family);\n font-size: var(--mdx-editor-font-size);\n background-color: var(--mdx-editor-bg);\n color: var(--mdx-editor-fg);\n}\n\n/* Scrollbars */\n.themed-mdx-editor ::-webkit-scrollbar {\n width: 12px;\n height: 12px;\n}\n\n.themed-mdx-editor ::-webkit-scrollbar-track {\n background: var(--mdx-editor-bg);\n}\n\n.themed-mdx-editor ::-webkit-scrollbar-thumb {\n background: var(--mdx-editor-border);\n border-radius: 6px;\n}\n\n.themed-mdx-editor ::-webkit-scrollbar-thumb:hover {\n background: var(--mdx-editor-fg);\n opacity: 0.5;\n}\n\n/*\n * Tailwind CSS Compatibility Styles\n * Tailwind's Preflight resets all default HTML styles, but MDXEditor expects them.\n * These styles restore necessary defaults for proper content rendering.\n */\n\n/* Restore default heading styles */\n.themed-mdx-editor h1 {\n font-size: 2em;\n font-weight: 700;\n margin-top: 0.67em;\n margin-bottom: 0.67em;\n line-height: 1.2;\n}\n\n.themed-mdx-editor h2 {\n font-size: 1.5em;\n font-weight: 600;\n margin-top: 0.83em;\n margin-bottom: 0.83em;\n line-height: 1.3;\n}\n\n.themed-mdx-editor h3 {\n font-size: 1.17em;\n font-weight: 600;\n margin-top: 1em;\n margin-bottom: 1em;\n line-height: 1.4;\n}\n\n.themed-mdx-editor h4 {\n font-size: 1em;\n font-weight: 600;\n margin-top: 1.33em;\n margin-bottom: 1.33em;\n line-height: 1.5;\n}\n\n.themed-mdx-editor h5 {\n font-size: 0.83em;\n font-weight: 600;\n margin-top: 1.67em;\n margin-bottom: 1.67em;\n line-height: 1.5;\n}\n\n.themed-mdx-editor h6 {\n font-size: 0.67em;\n font-weight: 600;\n margin-top: 2.33em;\n margin-bottom: 2.33em;\n line-height: 1.5;\n}\n\n/* Restore default paragraph spacing */\n.themed-mdx-editor p {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\n/* Restore default list styles */\n.themed-mdx-editor ul {\n list-style-type: disc;\n margin-top: 1em;\n margin-bottom: 1em;\n padding-left: 2.5em;\n}\n\n.themed-mdx-editor ul ul {\n list-style-type: circle;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n}\n\n.themed-mdx-editor ul ul ul {\n list-style-type: square;\n}\n\n.themed-mdx-editor ol {\n list-style-type: decimal;\n margin-top: 1em;\n margin-bottom: 1em;\n padding-left: 2.5em;\n}\n\n.themed-mdx-editor ol ol {\n list-style-type: lower-alpha;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n}\n\n.themed-mdx-editor ol ol ol {\n list-style-type: lower-roman;\n}\n\n.themed-mdx-editor li {\n margin-top: 0.25em;\n margin-bottom: 0.25em;\n}\n\n/* Restore default blockquote styles */\n.themed-mdx-editor blockquote {\n margin-top: 1em;\n margin-bottom: 1em;\n margin-left: 2.5em;\n margin-right: 2.5em;\n padding-left: 1em;\n border-left: 4px solid currentColor;\n opacity: 0.8;\n}\n\n/* Restore default code styles */\n.themed-mdx-editor code {\n font-family: monospace;\n font-size: 0.9em;\n}\n\n.themed-mdx-editor pre {\n margin-top: 1em;\n margin-bottom: 1em;\n padding: 1em;\n overflow: auto;\n}\n\n.themed-mdx-editor pre code {\n font-size: inherit;\n}\n\n/* Restore default table styles */\n.themed-mdx-editor table {\n border-collapse: collapse;\n margin-top: 1em;\n margin-bottom: 1em;\n width: 100%;\n}\n\n.themed-mdx-editor th,\n.themed-mdx-editor td {\n padding: 0.5em;\n text-align: left;\n}\n\n.themed-mdx-editor th {\n font-weight: 600;\n}\n\n/* Restore default emphasis styles */\n.themed-mdx-editor strong,\n.themed-mdx-editor b {\n font-weight: 700;\n}\n\n.themed-mdx-editor em,\n.themed-mdx-editor i {\n font-style: italic;\n}\n\n/* Restore default link styles */\n.themed-mdx-editor a {\n text-decoration: underline;\n cursor: pointer;\n}\n\n/* Restore default hr styles */\n.themed-mdx-editor hr {\n margin-top: 1.5em;\n margin-bottom: 1.5em;\n border: 0;\n border-top: 1px solid currentColor;\n opacity: 0.3;\n}\n";
|
|
75350
|
-
document.head.appendChild(style);
|
|
75351
|
-
})();
|
|
75352
|
-
var defaultPreprocessRules = [
|
|
75353
|
-
{
|
|
75354
|
-
name: "normalize-code-block-language",
|
|
75355
|
-
description: "Normalize unknown or missing code block language identifiers",
|
|
75356
|
-
pattern: /^(\s*)```([^\n`]*?)\n/gim,
|
|
75357
|
-
replacement: (_match, indent2, lang) => {
|
|
75358
|
-
const trimmedLang = lang.trim();
|
|
75359
|
-
const knownLanguages = [
|
|
75360
|
-
"javascript",
|
|
75361
|
-
"js",
|
|
75362
|
-
"typescript",
|
|
75363
|
-
"ts",
|
|
75364
|
-
"jsx",
|
|
75365
|
-
"tsx",
|
|
75366
|
-
"python",
|
|
75367
|
-
"py",
|
|
75368
|
-
"java",
|
|
75369
|
-
"c",
|
|
75370
|
-
"cpp",
|
|
75371
|
-
"csharp",
|
|
75372
|
-
"cs",
|
|
75373
|
-
"html",
|
|
75374
|
-
"css",
|
|
75375
|
-
"scss",
|
|
75376
|
-
"sass",
|
|
75377
|
-
"less",
|
|
75378
|
-
"json",
|
|
75379
|
-
"yaml",
|
|
75380
|
-
"yml",
|
|
75381
|
-
"xml",
|
|
75382
|
-
"toml",
|
|
75383
|
-
"bash",
|
|
75384
|
-
"sh",
|
|
75385
|
-
"shell",
|
|
75386
|
-
"powershell",
|
|
75387
|
-
"sql",
|
|
75388
|
-
"graphql",
|
|
75389
|
-
"markdown",
|
|
75390
|
-
"md",
|
|
75391
|
-
"rust",
|
|
75392
|
-
"go",
|
|
75393
|
-
"ruby",
|
|
75394
|
-
"php",
|
|
75395
|
-
"swift",
|
|
75396
|
-
"kotlin",
|
|
75397
|
-
"dart",
|
|
75398
|
-
"r",
|
|
75399
|
-
"matlab",
|
|
75400
|
-
"diff",
|
|
75401
|
-
"text",
|
|
75402
|
-
"plaintext"
|
|
75403
|
-
];
|
|
75404
|
-
if (knownLanguages.includes(trimmedLang.toLowerCase())) {
|
|
75405
|
-
return _match;
|
|
75406
|
-
}
|
|
75407
|
-
if (!trimmedLang || trimmedLang === "") {
|
|
75408
|
-
return `${indent2}\`\`\`markdown
|
|
75409
|
-
`;
|
|
75410
|
-
}
|
|
75411
|
-
const langLower = trimmedLang.toLowerCase();
|
|
75412
|
-
if (langLower === "n/a") {
|
|
75413
|
-
return `${indent2}\`\`\`markdown
|
|
75414
|
-
`;
|
|
75415
|
-
}
|
|
75416
|
-
if (langLower === "argdown") {
|
|
75417
|
-
return `${indent2}\`\`\`markdown
|
|
75418
|
-
`;
|
|
75419
|
-
}
|
|
75420
|
-
return _match;
|
|
75421
|
-
}
|
|
75422
|
-
},
|
|
75423
|
-
{
|
|
75424
|
-
name: "less-than-digit",
|
|
75425
|
-
description: "Escape < followed by digit",
|
|
75426
|
-
pattern: /<(?=\d)/g,
|
|
75427
|
-
replacement: "<"
|
|
75428
|
-
},
|
|
75429
|
-
{
|
|
75430
|
-
name: "less-than-space-digit",
|
|
75431
|
-
description: "Escape < followed by space and digit",
|
|
75432
|
-
pattern: /<(\s+)(?=\d)/g,
|
|
75433
|
-
replacement: (_match, spaces2) => `<${spaces2}`
|
|
75434
|
-
},
|
|
75435
|
-
{
|
|
75436
|
-
name: "greater-than-digit",
|
|
75437
|
-
description: "Escape > followed by digit",
|
|
75438
|
-
pattern: new RegExp("(?<![-\\w])>(?=\\s?\\d)", "g"),
|
|
75439
|
-
replacement: ">"
|
|
75440
|
-
},
|
|
75441
|
-
{
|
|
75442
|
-
name: "invalid-tag-opening",
|
|
75443
|
-
description: "Escape invalid opening tags starting with digit",
|
|
75444
|
-
pattern: /<(\/?(?:\d[^>\s]*))/g,
|
|
75445
|
-
replacement: (_match, tagContent) => `<${tagContent}`
|
|
75446
|
-
},
|
|
75447
|
-
{
|
|
75448
|
-
name: "numeric-only-tag",
|
|
75449
|
-
description: "Escape tags that are only numbers",
|
|
75450
|
-
pattern: /<(\d+)>/g,
|
|
75451
|
-
replacement: (_match, number2) => `<${number2}>`
|
|
75452
|
-
}
|
|
75453
|
-
];
|
|
75454
|
-
function preserveCode(markdown2, transform) {
|
|
75455
|
-
const parts = [];
|
|
75456
|
-
const codeRegex = /(```[\s\S]*?```|`[^`\n]+`)/g;
|
|
75457
|
-
let lastIndex = 0;
|
|
75458
|
-
let match;
|
|
75459
|
-
while ((match = codeRegex.exec(markdown2)) !== null) {
|
|
75460
|
-
if (match.index > lastIndex) {
|
|
75461
|
-
parts.push({
|
|
75462
|
-
type: "text",
|
|
75463
|
-
content: markdown2.slice(lastIndex, match.index)
|
|
75464
|
-
});
|
|
75465
|
-
}
|
|
75466
|
-
parts.push({
|
|
75467
|
-
type: "code",
|
|
75468
|
-
content: match[0]
|
|
75469
|
-
});
|
|
75470
|
-
lastIndex = match.index + match[0].length;
|
|
75471
|
-
}
|
|
75472
|
-
if (lastIndex < markdown2.length) {
|
|
75473
|
-
parts.push({
|
|
75474
|
-
type: "text",
|
|
75475
|
-
content: markdown2.slice(lastIndex)
|
|
75476
|
-
});
|
|
75477
|
-
}
|
|
75478
|
-
return parts.map((part) => part.type === "code" ? part.content : transform(part.content)).join("");
|
|
75479
|
-
}
|
|
75480
|
-
function preprocessMDX(markdown2, options = {}) {
|
|
75481
|
-
const {
|
|
75482
|
-
rules = defaultPreprocessRules,
|
|
75483
|
-
enable,
|
|
75484
|
-
disable: disable2,
|
|
75485
|
-
preserveCodeBlocks = true,
|
|
75486
|
-
onStats,
|
|
75487
|
-
debug = false
|
|
75488
|
-
} = options;
|
|
75489
|
-
let activeRules = rules;
|
|
75490
|
-
if (Array.isArray(enable) && enable.length > 0) {
|
|
75491
|
-
activeRules = rules.filter((r2) => enable.includes(r2.name));
|
|
75492
|
-
}
|
|
75493
|
-
if (Array.isArray(disable2) && disable2.length > 0) {
|
|
75494
|
-
activeRules = activeRules.filter((r2) => !disable2.includes(r2.name));
|
|
75495
|
-
}
|
|
75496
|
-
if (debug) {
|
|
75497
|
-
console.log("[mdx-auto-fix] Active preprocessing rules:", activeRules.map((r2) => r2.name));
|
|
75498
|
-
}
|
|
75499
|
-
const stats = {
|
|
75500
|
-
totalFixes: 0,
|
|
75501
|
-
byTransformer: {}
|
|
75502
|
-
};
|
|
75503
|
-
let result = markdown2;
|
|
75504
|
-
const codeBlockLangRule = activeRules.find((r2) => r2.name === "normalize-code-block-language");
|
|
75505
|
-
if (codeBlockLangRule) {
|
|
75506
|
-
let fixCount = 0;
|
|
75507
|
-
let insideCodeBlock = false;
|
|
75508
|
-
if (typeof codeBlockLangRule.replacement === "function") {
|
|
75509
|
-
result = result.replace(codeBlockLangRule.pattern, (...args) => {
|
|
75510
|
-
if (insideCodeBlock) {
|
|
75511
|
-
insideCodeBlock = false;
|
|
75512
|
-
return args[0];
|
|
75513
|
-
}
|
|
75514
|
-
insideCodeBlock = true;
|
|
75515
|
-
const originalMatch = args[0];
|
|
75516
|
-
const replacement = codeBlockLangRule.replacement(...args);
|
|
75517
|
-
if (replacement !== originalMatch) {
|
|
75518
|
-
fixCount++;
|
|
75519
|
-
}
|
|
75520
|
-
return replacement;
|
|
75521
|
-
});
|
|
75522
|
-
} else {
|
|
75523
|
-
result = result.replace(codeBlockLangRule.pattern, (match) => {
|
|
75524
|
-
if (insideCodeBlock) {
|
|
75525
|
-
insideCodeBlock = false;
|
|
75526
|
-
return match;
|
|
75527
|
-
}
|
|
75528
|
-
insideCodeBlock = true;
|
|
75529
|
-
const replacement = codeBlockLangRule.replacement;
|
|
75530
|
-
if (replacement !== match) {
|
|
75531
|
-
fixCount++;
|
|
75532
|
-
}
|
|
75533
|
-
return replacement;
|
|
75534
|
-
});
|
|
75535
|
-
}
|
|
75536
|
-
if (fixCount > 0) {
|
|
75537
|
-
stats.byTransformer[codeBlockLangRule.name] = fixCount;
|
|
75538
|
-
stats.totalFixes += fixCount;
|
|
75539
|
-
if (debug) {
|
|
75540
|
-
console.log(`[mdx-auto-fix] ${codeBlockLangRule.name}: ${fixCount} fixes`);
|
|
75541
|
-
}
|
|
75542
|
-
}
|
|
75543
|
-
}
|
|
75544
|
-
const otherRules = activeRules.filter((r2) => r2.name !== "normalize-code-block-language");
|
|
75545
|
-
const transform = (text2) => {
|
|
75546
|
-
let transformed = text2;
|
|
75547
|
-
for (const rule of otherRules) {
|
|
75548
|
-
let fixCount = 0;
|
|
75549
|
-
if (typeof rule.replacement === "function") {
|
|
75550
|
-
transformed = transformed.replace(rule.pattern, (...args) => {
|
|
75551
|
-
fixCount++;
|
|
75552
|
-
return rule.replacement(...args);
|
|
75553
|
-
});
|
|
75554
|
-
} else {
|
|
75555
|
-
transformed = transformed.replace(rule.pattern, () => {
|
|
75556
|
-
fixCount++;
|
|
75557
|
-
return rule.replacement;
|
|
75558
|
-
});
|
|
75559
|
-
}
|
|
75560
|
-
if (fixCount > 0) {
|
|
75561
|
-
stats.byTransformer[rule.name] = (stats.byTransformer[rule.name] || 0) + fixCount;
|
|
75562
|
-
stats.totalFixes += fixCount;
|
|
75563
|
-
if (debug) {
|
|
75564
|
-
console.log(`[mdx-auto-fix] ${rule.name}: ${fixCount} fixes`);
|
|
75565
|
-
}
|
|
75566
|
-
}
|
|
75567
|
-
}
|
|
75568
|
-
return transformed;
|
|
75569
|
-
};
|
|
75570
|
-
result = preserveCodeBlocks ? preserveCode(result, transform) : transform(result);
|
|
75571
|
-
if (onStats && stats.totalFixes > 0) {
|
|
75572
|
-
onStats(stats);
|
|
75573
|
-
}
|
|
75574
|
-
if (debug && stats.totalFixes > 0) {
|
|
75575
|
-
console.log(`[mdx-auto-fix] Total preprocessing fixes: ${stats.totalFixes}`);
|
|
75576
|
-
}
|
|
75577
|
-
return result;
|
|
75578
|
-
}
|
|
75579
|
-
function getPaddingStyles(padding) {
|
|
75580
|
-
if (!padding) {
|
|
75581
|
-
return {};
|
|
75582
|
-
}
|
|
75583
|
-
const presets = {
|
|
75584
|
-
none: "0",
|
|
75585
|
-
narrow: "0.5in",
|
|
75586
|
-
moderate: "0.75in",
|
|
75587
|
-
normal: "1in",
|
|
75588
|
-
wide: "2in"
|
|
75589
|
-
};
|
|
75590
|
-
if (typeof padding === "string" && padding in presets) {
|
|
75591
|
-
const value2 = presets[padding];
|
|
75592
|
-
return {
|
|
75593
|
-
paddingTop: value2,
|
|
75594
|
-
paddingRight: value2,
|
|
75595
|
-
paddingBottom: value2,
|
|
75596
|
-
paddingLeft: value2
|
|
75597
|
-
};
|
|
75598
|
-
}
|
|
75599
|
-
if (typeof padding === "number") {
|
|
75600
|
-
return { padding: `${padding}px` };
|
|
75601
|
-
}
|
|
75602
|
-
if (typeof padding === "string") {
|
|
75603
|
-
return { padding };
|
|
75604
|
-
}
|
|
75605
|
-
const styles2 = {};
|
|
75606
|
-
if (padding.top !== void 0) {
|
|
75607
|
-
styles2.paddingTop = typeof padding.top === "number" ? `${padding.top}px` : padding.top;
|
|
75608
|
-
}
|
|
75609
|
-
if (padding.right !== void 0) {
|
|
75610
|
-
styles2.paddingRight = typeof padding.right === "number" ? `${padding.right}px` : padding.right;
|
|
75611
|
-
}
|
|
75612
|
-
if (padding.bottom !== void 0) {
|
|
75613
|
-
styles2.paddingBottom = typeof padding.bottom === "number" ? `${padding.bottom}px` : padding.bottom;
|
|
75614
|
-
}
|
|
75615
|
-
if (padding.left !== void 0) {
|
|
75616
|
-
styles2.paddingLeft = typeof padding.left === "number" ? `${padding.left}px` : padding.left;
|
|
75617
|
-
}
|
|
75618
|
-
return styles2;
|
|
75619
|
-
}
|
|
75620
|
-
function validateTheme(theme2) {
|
|
75621
|
-
const requiredColors = [
|
|
75622
|
-
"primary",
|
|
75623
|
-
"text",
|
|
75624
|
-
"background",
|
|
75625
|
-
"backgroundSecondary",
|
|
75626
|
-
"border"
|
|
75627
|
-
];
|
|
75628
|
-
const missingColors = [];
|
|
75629
|
-
for (const colorKey of requiredColors) {
|
|
75630
|
-
if (!theme2.colors[colorKey]) {
|
|
75631
|
-
missingColors.push(`theme.colors.${colorKey}`);
|
|
75632
|
-
}
|
|
75633
|
-
}
|
|
75634
|
-
if (missingColors.length > 0) {
|
|
75635
|
-
throw new Error(
|
|
75636
|
-
`ThemedMDXEditor: Missing required theme properties:
|
|
75637
|
-
- ${missingColors.join("\n - ")}
|
|
75638
|
-
|
|
75639
|
-
Please ensure your theme object includes all required color properties.`
|
|
75640
|
-
);
|
|
75641
|
-
}
|
|
75642
|
-
}
|
|
75643
|
-
var ThemedMDXEditor = forwardRef((props, ref) => {
|
|
75644
|
-
var _a2, _b, _c, _d, _e2, _f;
|
|
75645
|
-
const {
|
|
75646
|
-
theme: theme2,
|
|
75647
|
-
loadingComponent,
|
|
75648
|
-
initialValue,
|
|
75649
|
-
onSave,
|
|
75650
|
-
filePath,
|
|
75651
|
-
enableSaveShortcut = true,
|
|
75652
|
-
onDirtyChange,
|
|
75653
|
-
hideStatusBar = false,
|
|
75654
|
-
containerClassName = "",
|
|
75655
|
-
containerStyle = {},
|
|
75656
|
-
showLoadingState = false,
|
|
75657
|
-
documentPadding = { top: "0.25in", right: "0.5in", bottom: "0.5in", left: "0.5in" },
|
|
75658
|
-
autoFixMDX = true,
|
|
75659
|
-
markdown: controlledMarkdown,
|
|
75660
|
-
onChange: externalOnChange,
|
|
75661
|
-
...restEditorProps
|
|
75662
|
-
} = props;
|
|
75663
|
-
const editorRef = useRef(null);
|
|
75664
|
-
const [isMounted, setIsMounted] = useState(false);
|
|
75665
|
-
const [isLoading, setIsLoading] = useState(showLoadingState);
|
|
75666
|
-
const prevFilePathRef = useRef(filePath);
|
|
75667
|
-
const prevInitialValueRef = useRef(initialValue);
|
|
75668
|
-
const isControlled = controlledMarkdown !== void 0;
|
|
75669
|
-
const computeInitialValue = useCallback(() => {
|
|
75670
|
-
if (initialValue !== void 0) return initialValue;
|
|
75671
|
-
if (typeof controlledMarkdown === "string") return controlledMarkdown;
|
|
75672
|
-
return "";
|
|
75673
|
-
}, [controlledMarkdown, initialValue]);
|
|
75674
|
-
const [internalValue, setInternalValue] = useState(() => computeInitialValue());
|
|
75675
|
-
const [savedValue, setSavedValue] = useState(() => computeInitialValue());
|
|
75676
|
-
const [isDirty, setIsDirty] = useState(false);
|
|
75677
|
-
const currentValue = isControlled ? controlledMarkdown ?? "" : internalValue;
|
|
75678
|
-
const processedMarkdown = useMemo(() => {
|
|
75679
|
-
if (!autoFixMDX) {
|
|
75680
|
-
return currentValue;
|
|
75681
|
-
}
|
|
75682
|
-
return preprocessMDX(currentValue, {
|
|
75683
|
-
preserveCodeBlocks: true
|
|
75684
|
-
});
|
|
75685
|
-
}, [currentValue, autoFixMDX]);
|
|
75686
|
-
useEffect(() => {
|
|
75687
|
-
setIsMounted(true);
|
|
75688
|
-
if (showLoadingState) {
|
|
75689
|
-
setIsLoading(false);
|
|
75690
|
-
}
|
|
75691
|
-
}, [showLoadingState]);
|
|
75692
|
-
useImperativeHandle(ref, () => editorRef.current);
|
|
75693
|
-
useEffect(() => {
|
|
75694
|
-
if (!isControlled && initialValue !== void 0 && initialValue !== prevInitialValueRef.current) {
|
|
75695
|
-
setInternalValue(initialValue);
|
|
75696
|
-
setSavedValue(initialValue);
|
|
75697
|
-
setIsDirty(false);
|
|
75698
|
-
prevInitialValueRef.current = initialValue;
|
|
75699
|
-
}
|
|
75700
|
-
}, [initialValue, isControlled]);
|
|
75701
|
-
useEffect(() => {
|
|
75702
|
-
if (filePath !== prevFilePathRef.current) {
|
|
75703
|
-
const baseline = initialValue ?? currentValue;
|
|
75704
|
-
if (!isControlled && initialValue !== void 0) {
|
|
75705
|
-
setInternalValue(initialValue);
|
|
75706
|
-
}
|
|
75707
|
-
setSavedValue(baseline);
|
|
75708
|
-
setIsDirty(false);
|
|
75709
|
-
prevFilePathRef.current = filePath;
|
|
75710
|
-
}
|
|
75711
|
-
}, [currentValue, filePath, initialValue, isControlled]);
|
|
75712
|
-
useEffect(() => {
|
|
75713
|
-
const dirty = currentValue !== savedValue;
|
|
75714
|
-
setIsDirty((prev) => prev === dirty ? prev : dirty);
|
|
75715
|
-
}, [currentValue, savedValue]);
|
|
75716
|
-
useEffect(() => {
|
|
75717
|
-
onDirtyChange == null ? void 0 : onDirtyChange(isDirty);
|
|
75718
|
-
}, [isDirty, onDirtyChange]);
|
|
75719
|
-
const updateSavedState = useCallback(
|
|
75720
|
-
(nextSavedValue) => {
|
|
75721
|
-
setSavedValue(nextSavedValue);
|
|
75722
|
-
setIsDirty(false);
|
|
75723
|
-
},
|
|
75724
|
-
[]
|
|
75725
|
-
);
|
|
75726
|
-
const handleChange = useCallback(
|
|
75727
|
-
(value2, initialMarkdownNormalize) => {
|
|
75728
|
-
const nextValue = value2 ?? "";
|
|
75729
|
-
if (!isControlled) {
|
|
75730
|
-
setInternalValue(nextValue);
|
|
75731
|
-
}
|
|
75732
|
-
const dirty = nextValue !== savedValue;
|
|
75733
|
-
setIsDirty((prev) => prev === dirty ? prev : dirty);
|
|
75734
|
-
externalOnChange == null ? void 0 : externalOnChange(value2, initialMarkdownNormalize);
|
|
75735
|
-
},
|
|
75736
|
-
[externalOnChange, isControlled, savedValue]
|
|
75737
|
-
);
|
|
75738
|
-
const handleSave = useCallback(async () => {
|
|
75739
|
-
var _a3;
|
|
75740
|
-
if (onSave) {
|
|
75741
|
-
try {
|
|
75742
|
-
const latestValue = ((_a3 = editorRef.current) == null ? void 0 : _a3.getMarkdown()) ?? currentValue;
|
|
75743
|
-
const result = onSave(latestValue, { filePath });
|
|
75744
|
-
if (result && typeof result.then === "function") {
|
|
75745
|
-
await result;
|
|
75746
|
-
}
|
|
75747
|
-
updateSavedState(latestValue);
|
|
75748
|
-
} catch (error) {
|
|
75749
|
-
console.error("Failed to save editor contents", error);
|
|
75750
|
-
}
|
|
75751
|
-
}
|
|
75752
|
-
}, [onSave, currentValue, filePath, updateSavedState]);
|
|
75753
|
-
useEffect(() => {
|
|
75754
|
-
if (!enableSaveShortcut || !onSave) return;
|
|
75755
|
-
const handleKeyDown = (e2) => {
|
|
75756
|
-
if ((e2.metaKey || e2.ctrlKey) && e2.key === "s") {
|
|
75757
|
-
e2.preventDefault();
|
|
75758
|
-
handleSave();
|
|
75759
|
-
}
|
|
75760
|
-
};
|
|
75761
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
75762
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
75763
|
-
}, [enableSaveShortcut, handleSave, onSave]);
|
|
75764
|
-
const editorStyles = useMemo(() => {
|
|
75765
|
-
var _a3, _b2, _c2, _d2, _e3, _f2, _g;
|
|
75766
|
-
validateTheme(theme2);
|
|
75767
|
-
const hexToRgba = (hex, alpha) => {
|
|
75768
|
-
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
75769
|
-
if (result) {
|
|
75770
|
-
const r2 = parseInt(result[1], 16);
|
|
75771
|
-
const g2 = parseInt(result[2], 16);
|
|
75772
|
-
const b2 = parseInt(result[3], 16);
|
|
75773
|
-
return `rgba(${r2}, ${g2}, ${b2}, ${alpha})`;
|
|
75774
|
-
}
|
|
75775
|
-
return hex;
|
|
75776
|
-
};
|
|
75777
|
-
const primaryColor = theme2.colors.primary;
|
|
75778
|
-
const textColor = theme2.colors.text;
|
|
75779
|
-
const background2 = theme2.colors.background;
|
|
75780
|
-
const backgroundSecondary = theme2.colors.backgroundSecondary;
|
|
75781
|
-
const border = theme2.colors.border;
|
|
75782
|
-
const backgroundTertiary = theme2.colors.backgroundTertiary || backgroundSecondary;
|
|
75783
|
-
const accentColor = theme2.colors.accent || textColor;
|
|
75784
|
-
const paddingStyles = getPaddingStyles(documentPadding);
|
|
75785
|
-
return {
|
|
75786
|
-
// Radix Accent Colors (computed from primary color with different opacities)
|
|
75787
|
-
// These are used by MDXEditor's internal UI components (toolbar, dialogs, etc.)
|
|
75788
|
-
"--accentBase": primaryColor,
|
|
75789
|
-
"--accentBgSubtle": hexToRgba(primaryColor, 0.05),
|
|
75790
|
-
"--accentBg": hexToRgba(primaryColor, 0.1),
|
|
75791
|
-
"--accentBgHover": hexToRgba(primaryColor, 0.15),
|
|
75792
|
-
"--accentBgActive": hexToRgba(primaryColor, 0.2),
|
|
75793
|
-
"--accentLine": hexToRgba(primaryColor, 0.3),
|
|
75794
|
-
"--accentBorder": hexToRgba(primaryColor, 0.4),
|
|
75795
|
-
"--accentBorderHover": hexToRgba(primaryColor, 0.5),
|
|
75796
|
-
"--accentSolid": primaryColor,
|
|
75797
|
-
"--accentSolidHover": primaryColor,
|
|
75798
|
-
"--accentText": primaryColor,
|
|
75799
|
-
"--accentTextContrast": background2,
|
|
75800
|
-
// Radix Base Colors (computed from background/text colors)
|
|
75801
|
-
// These are used by MDXEditor's internal UI components (toolbar, dialogs, etc.)
|
|
75802
|
-
"--baseBase": background2,
|
|
75803
|
-
"--baseBgSubtle": backgroundSecondary,
|
|
75804
|
-
"--baseBg": background2,
|
|
75805
|
-
"--baseBgHover": backgroundSecondary,
|
|
75806
|
-
"--baseBgActive": backgroundTertiary,
|
|
75807
|
-
"--baseLine": hexToRgba(textColor, 0.15),
|
|
75808
|
-
"--baseBorder": border,
|
|
75809
|
-
"--baseBorderHover": hexToRgba(textColor, 0.3),
|
|
75810
|
-
"--baseSolid": textColor,
|
|
75811
|
-
"--baseSolidHover": textColor,
|
|
75812
|
-
"--baseText": textColor,
|
|
75813
|
-
"--baseTextContrast": background2,
|
|
75814
|
-
// Spacing scale - maps to theme.space array or uses defaults
|
|
75815
|
-
"--spacing-0": "0px",
|
|
75816
|
-
"--spacing-px": "1px",
|
|
75817
|
-
"--spacing-0_5": "0.125rem",
|
|
75818
|
-
"--spacing-1": `${((_a3 = theme2.space) == null ? void 0 : _a3[1]) || 4}px`,
|
|
75819
|
-
"--spacing-1_5": "0.375rem",
|
|
75820
|
-
"--spacing-2": `${((_b2 = theme2.space) == null ? void 0 : _b2[2]) || 8}px`,
|
|
75821
|
-
"--spacing-2_5": "0.625rem",
|
|
75822
|
-
"--spacing-3": "0.75rem",
|
|
75823
|
-
"--spacing-3_5": "0.875rem",
|
|
75824
|
-
"--spacing-4": `${((_c2 = theme2.space) == null ? void 0 : _c2[3]) || 16}px`,
|
|
75825
|
-
"--spacing-5": "1.25rem",
|
|
75826
|
-
"--spacing-6": "1.5rem",
|
|
75827
|
-
"--spacing-7": "1.75rem",
|
|
75828
|
-
"--spacing-8": `${((_d2 = theme2.space) == null ? void 0 : _d2[4]) || 32}px`,
|
|
75829
|
-
"--spacing-9": "2.25rem",
|
|
75830
|
-
"--spacing-10": "2.5rem",
|
|
75831
|
-
"--spacing-11": "2.75rem",
|
|
75832
|
-
"--spacing-12": "3rem",
|
|
75833
|
-
"--spacing-14": "3.5rem",
|
|
75834
|
-
"--spacing-16": `${((_e3 = theme2.space) == null ? void 0 : _e3[5]) || 64}px`,
|
|
75835
|
-
// Our custom variables for content styling (used in mdx-editor-theme.css)
|
|
75836
|
-
"--mdx-editor-bg": background2,
|
|
75837
|
-
"--mdx-editor-fg": textColor,
|
|
75838
|
-
"--mdx-editor-border": border,
|
|
75839
|
-
"--mdx-editor-table-border": accentColor,
|
|
75840
|
-
"--mdx-editor-toolbar-bg": backgroundSecondary,
|
|
75841
|
-
"--mdx-editor-code-bg": backgroundTertiary,
|
|
75842
|
-
"--mdx-editor-selection-bg": hexToRgba(primaryColor, 0.2),
|
|
75843
|
-
"--mdx-editor-link-color": primaryColor,
|
|
75844
|
-
"--mdx-editor-heading-color": textColor,
|
|
75845
|
-
"--mdx-editor-font-family": ((_f2 = theme2.fonts) == null ? void 0 : _f2.monospace) || "monospace",
|
|
75846
|
-
"--mdx-editor-font-size": `${((_g = theme2.fontSizes) == null ? void 0 : _g[2]) || 14}px`,
|
|
75847
|
-
// Document padding CSS variables
|
|
75848
|
-
"--mdx-editor-padding-top": paddingStyles.paddingTop || paddingStyles.padding || "0",
|
|
75849
|
-
"--mdx-editor-padding-right": paddingStyles.paddingRight || paddingStyles.padding || "0",
|
|
75850
|
-
"--mdx-editor-padding-bottom": paddingStyles.paddingBottom || paddingStyles.padding || "0",
|
|
75851
|
-
"--mdx-editor-padding-left": paddingStyles.paddingLeft || paddingStyles.padding || "0",
|
|
75852
|
-
...containerStyle
|
|
75853
|
-
};
|
|
75854
|
-
}, [theme2, containerStyle, documentPadding]);
|
|
75855
|
-
useEffect(() => {
|
|
75856
|
-
const root2 = document.documentElement;
|
|
75857
|
-
const styles2 = editorStyles;
|
|
75858
|
-
const originalValues = {};
|
|
75859
|
-
Object.entries(styles2).forEach(([key, value2]) => {
|
|
75860
|
-
if (key.startsWith("--")) {
|
|
75861
|
-
originalValues[key] = root2.style.getPropertyValue(key);
|
|
75862
|
-
root2.style.setProperty(key, String(value2));
|
|
75863
|
-
}
|
|
75864
|
-
});
|
|
75865
|
-
return () => {
|
|
75866
|
-
Object.entries(originalValues).forEach(([key, value2]) => {
|
|
75867
|
-
if (value2) {
|
|
75868
|
-
root2.style.setProperty(key, value2);
|
|
75869
|
-
} else {
|
|
75870
|
-
root2.style.removeProperty(key);
|
|
75871
|
-
}
|
|
75872
|
-
});
|
|
75873
|
-
};
|
|
75874
|
-
}, [editorStyles]);
|
|
75875
|
-
if (!isMounted || isLoading) {
|
|
75876
|
-
const loading = loadingComponent || /* @__PURE__ */ jsx$1(
|
|
75877
|
-
"div",
|
|
75878
|
-
{
|
|
75879
|
-
style: {
|
|
75880
|
-
display: "flex",
|
|
75881
|
-
alignItems: "center",
|
|
75882
|
-
justifyContent: "center",
|
|
75883
|
-
height: "100%",
|
|
75884
|
-
color: theme2.colors.textSecondary,
|
|
75885
|
-
fontFamily: ((_a2 = theme2.fonts) == null ? void 0 : _a2.body) || "system-ui"
|
|
75886
|
-
},
|
|
75887
|
-
children: "Loading editor..."
|
|
75888
|
-
}
|
|
75889
|
-
);
|
|
75890
|
-
return /* @__PURE__ */ jsx$1("div", { style: { height: "100%", ...containerStyle }, children: loading });
|
|
75891
|
-
}
|
|
75892
|
-
return /* @__PURE__ */ jsxs(
|
|
75893
|
-
"div",
|
|
75894
|
-
{
|
|
75895
|
-
className: `themed-mdx-editor ${containerClassName}`.trim(),
|
|
75896
|
-
style: {
|
|
75897
|
-
display: "flex",
|
|
75898
|
-
flexDirection: "column",
|
|
75899
|
-
height: "100%",
|
|
75900
|
-
backgroundColor: theme2.colors.background,
|
|
75901
|
-
color: theme2.colors.text,
|
|
75902
|
-
fontFamily: ((_b = theme2.fonts) == null ? void 0 : _b.body) || "system-ui",
|
|
75903
|
-
...editorStyles
|
|
75904
|
-
},
|
|
75905
|
-
children: [
|
|
75906
|
-
/* @__PURE__ */ jsx$1("div", { style: { flex: 1, overflow: "auto" }, children: /* @__PURE__ */ jsx$1(
|
|
75907
|
-
MDXEditor,
|
|
75908
|
-
{
|
|
75909
|
-
ref: editorRef,
|
|
75910
|
-
markdown: processedMarkdown,
|
|
75911
|
-
onChange: handleChange,
|
|
75912
|
-
contentEditableClassName: "mdx-editor-content",
|
|
75913
|
-
...restEditorProps
|
|
75914
|
-
}
|
|
75915
|
-
) }),
|
|
75916
|
-
!hideStatusBar && /* @__PURE__ */ jsxs(
|
|
75917
|
-
"div",
|
|
75918
|
-
{
|
|
75919
|
-
style: {
|
|
75920
|
-
display: "flex",
|
|
75921
|
-
alignItems: "center",
|
|
75922
|
-
gap: "8px",
|
|
75923
|
-
padding: "4px 12px",
|
|
75924
|
-
backgroundColor: theme2.colors.backgroundSecondary,
|
|
75925
|
-
color: theme2.colors.text,
|
|
75926
|
-
fontFamily: ((_c = theme2.fonts) == null ? void 0 : _c.monospace) || "monospace",
|
|
75927
|
-
fontSize: ((_d = theme2.fontSizes) == null ? void 0 : _d[1]) || 12,
|
|
75928
|
-
borderTop: `1px solid ${theme2.colors.border}`
|
|
75929
|
-
},
|
|
75930
|
-
children: [
|
|
75931
|
-
/* @__PURE__ */ jsx$1("div", { style: { flex: 1 }, children: filePath && /* @__PURE__ */ jsx$1(
|
|
75932
|
-
"span",
|
|
75933
|
-
{
|
|
75934
|
-
style: {
|
|
75935
|
-
color: theme2.colors.textSecondary,
|
|
75936
|
-
fontSize: ((_e2 = theme2.fontSizes) == null ? void 0 : _e2[0]) || 11
|
|
75937
|
-
},
|
|
75938
|
-
children: filePath
|
|
75939
|
-
}
|
|
75940
|
-
) }),
|
|
75941
|
-
/* @__PURE__ */ jsx$1(
|
|
75942
|
-
"div",
|
|
75943
|
-
{
|
|
75944
|
-
style: {
|
|
75945
|
-
padding: "2px 8px",
|
|
75946
|
-
borderRadius: 4,
|
|
75947
|
-
border: `1px solid ${isDirty ? theme2.colors.warning : theme2.colors.border}`,
|
|
75948
|
-
backgroundColor: isDirty ? theme2.colors.backgroundTertiary || theme2.colors.backgroundSecondary : theme2.colors.background,
|
|
75949
|
-
color: isDirty ? theme2.colors.warning : theme2.colors.textSecondary,
|
|
75950
|
-
fontWeight: 600,
|
|
75951
|
-
fontSize: ((_f = theme2.fontSizes) == null ? void 0 : _f[0]) || 11
|
|
75952
|
-
},
|
|
75953
|
-
children: isDirty ? "Modified" : "Saved"
|
|
75954
|
-
}
|
|
75955
|
-
)
|
|
75956
|
-
]
|
|
75957
|
-
}
|
|
75958
|
-
)
|
|
75959
|
-
]
|
|
75960
|
-
}
|
|
75961
|
-
);
|
|
75962
|
-
});
|
|
75963
|
-
ThemedMDXEditor.displayName = "ThemedMDXEditor";
|
|
75964
|
-
var ThemedMDXEditorWithProvider = React__default__default.forwardRef((props, ref) => {
|
|
75965
|
-
const { theme: theme2 } = useTheme();
|
|
75966
|
-
return /* @__PURE__ */ jsx$1(ThemedMDXEditor, { ref, theme: theme2, ...props });
|
|
75967
|
-
});
|
|
75968
|
-
ThemedMDXEditorWithProvider.displayName = "ThemedMDXEditorWithProvider";
|
|
75969
75685
|
const MDXEditorPanelContent = ({
|
|
75970
75686
|
context,
|
|
75971
75687
|
actions: _actions,
|
|
@@ -76064,6 +75780,31 @@ const MDXEditorPanelContent = ({
|
|
|
76064
75780
|
});
|
|
76065
75781
|
return unsubscribe;
|
|
76066
75782
|
}, [events]);
|
|
75783
|
+
const handleChange = useCallback((value2) => {
|
|
75784
|
+
setMarkdown(value2);
|
|
75785
|
+
setIsDirty(true);
|
|
75786
|
+
setParseError(null);
|
|
75787
|
+
}, []);
|
|
75788
|
+
const handleSave = useCallback(
|
|
75789
|
+
async (content2) => {
|
|
75790
|
+
const contentToSave = content2 || markdown2;
|
|
75791
|
+
if (filePath && (fileSystem == null ? void 0 : fileSystem.writeFile)) {
|
|
75792
|
+
try {
|
|
75793
|
+
await fileSystem.writeFile(filePath, contentToSave);
|
|
75794
|
+
setIsDirty(false);
|
|
75795
|
+
events.emit({
|
|
75796
|
+
type: "file:save",
|
|
75797
|
+
source: "industry-theme.mdx-editor",
|
|
75798
|
+
timestamp: Date.now(),
|
|
75799
|
+
payload: { path: filePath }
|
|
75800
|
+
});
|
|
75801
|
+
} catch (error) {
|
|
75802
|
+
console.error("Error saving file:", error);
|
|
75803
|
+
}
|
|
75804
|
+
}
|
|
75805
|
+
},
|
|
75806
|
+
[markdown2, filePath, fileSystem, events]
|
|
75807
|
+
);
|
|
76067
75808
|
useEffect(() => {
|
|
76068
75809
|
const loadFileContent = async () => {
|
|
76069
75810
|
if (!filePath || !(fileSystem == null ? void 0 : fileSystem.readFile)) {
|
|
@@ -76092,30 +75833,17 @@ const MDXEditorPanelContent = ({
|
|
|
76092
75833
|
};
|
|
76093
75834
|
loadFileContent();
|
|
76094
75835
|
}, [filePath, fileSystem]);
|
|
76095
|
-
|
|
76096
|
-
|
|
76097
|
-
|
|
76098
|
-
|
|
76099
|
-
|
|
76100
|
-
|
|
76101
|
-
const contentToSave = content2 || markdown2;
|
|
76102
|
-
if (filePath && (fileSystem == null ? void 0 : fileSystem.writeFile)) {
|
|
76103
|
-
try {
|
|
76104
|
-
await fileSystem.writeFile(filePath, contentToSave);
|
|
76105
|
-
setIsDirty(false);
|
|
76106
|
-
events.emit({
|
|
76107
|
-
type: "file:save",
|
|
76108
|
-
source: "industry-theme.mdx-editor",
|
|
76109
|
-
timestamp: Date.now(),
|
|
76110
|
-
payload: { path: filePath }
|
|
76111
|
-
});
|
|
76112
|
-
} catch (error) {
|
|
76113
|
-
console.error("Error saving file:", error);
|
|
76114
|
-
}
|
|
75836
|
+
useEffect(() => {
|
|
75837
|
+
if (!isEditable) return;
|
|
75838
|
+
const handleKeyDown = (e2) => {
|
|
75839
|
+
if ((e2.metaKey || e2.ctrlKey) && e2.key === "s") {
|
|
75840
|
+
e2.preventDefault();
|
|
75841
|
+
handleSave();
|
|
76115
75842
|
}
|
|
76116
|
-
}
|
|
76117
|
-
|
|
76118
|
-
|
|
75843
|
+
};
|
|
75844
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
75845
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
75846
|
+
}, [isEditable, handleSave]);
|
|
76119
75847
|
if (!isMounted) {
|
|
76120
75848
|
return /* @__PURE__ */ jsx$1(
|
|
76121
75849
|
"div",
|
|
@@ -76223,29 +75951,12 @@ const MDXEditorPanelContent = ({
|
|
|
76223
75951
|
width: "100%"
|
|
76224
75952
|
},
|
|
76225
75953
|
children: /* @__PURE__ */ jsx$1(
|
|
76226
|
-
|
|
75954
|
+
ThemedMDXEditor,
|
|
76227
75955
|
{
|
|
76228
75956
|
markdown: safeMarkdown,
|
|
76229
|
-
onSave: async (content2) => {
|
|
76230
|
-
await handleSave(content2);
|
|
76231
|
-
},
|
|
76232
75957
|
onChange: handleChange,
|
|
76233
|
-
onDirtyChange: setIsDirty,
|
|
76234
75958
|
readOnly: !isEditable,
|
|
76235
|
-
|
|
76236
|
-
enableSaveShortcut: isEditable,
|
|
76237
|
-
hideStatusBar: false,
|
|
76238
|
-
documentPadding: { left: 32, right: 32, top: 0, bottom: 32 },
|
|
76239
|
-
onError: (error) => {
|
|
76240
|
-
console.error("MDXEditor parsing error:", error);
|
|
76241
|
-
setTimeout(() => {
|
|
76242
|
-
if (error && typeof error === "object" && "message" in error) {
|
|
76243
|
-
setParseError(String(error.message));
|
|
76244
|
-
} else {
|
|
76245
|
-
setParseError("Markdown parsing error");
|
|
76246
|
-
}
|
|
76247
|
-
}, 0);
|
|
76248
|
-
},
|
|
75959
|
+
contentEditableClassName: "prose",
|
|
76249
75960
|
plugins
|
|
76250
75961
|
},
|
|
76251
75962
|
filePath || "default"
|
|
@@ -76563,4 +76274,4 @@ export {
|
|
|
76563
76274
|
onPackageUnload as y,
|
|
76564
76275
|
fileEditingPanelTools as z
|
|
76565
76276
|
};
|
|
76566
|
-
//# sourceMappingURL=index-
|
|
76277
|
+
//# sourceMappingURL=index-TGeUE9Er.js.map
|