@industry-theme/file-editing-panels 0.2.3 → 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-CqtzDkXg.js → index-B2rZhF0Y.js} +2 -2
- package/dist/{index-CqtzDkXg.js.map → index-B2rZhF0Y.js.map} +1 -1
- package/dist/{index-BPiU3ZGu.js → index-BDgU-836.js} +2 -2
- package/dist/{index-BPiU3ZGu.js.map → index-BDgU-836.js.map} +1 -1
- package/dist/{index-BwJ7ysyg.js → index-BE_uqu8N.js} +2 -2
- package/dist/{index-BwJ7ysyg.js.map → index-BE_uqu8N.js.map} +1 -1
- package/dist/{index-CUxI5QVO.js → index-BO94YI1U.js} +2 -2
- package/dist/{index-CUxI5QVO.js.map → index-BO94YI1U.js.map} +1 -1
- package/dist/{index-BGYE_9-2.js → index-BQ3COoTI.js} +2 -2
- package/dist/{index-BGYE_9-2.js.map → index-BQ3COoTI.js.map} +1 -1
- package/dist/{index-DEKx4IQM.js → index-BcJD4K9H.js} +2 -2
- package/dist/{index-DEKx4IQM.js.map → index-BcJD4K9H.js.map} +1 -1
- package/dist/{index-CLkHiHHg.js → index-BijIiC2T.js} +2 -2
- package/dist/{index-CLkHiHHg.js.map → index-BijIiC2T.js.map} +1 -1
- package/dist/{index-KaUsXGnl.js → index-Bn3GS5JS.js} +2 -2
- package/dist/{index-KaUsXGnl.js.map → index-Bn3GS5JS.js.map} +1 -1
- package/dist/{index-ByS7RhLv.js → index-CwwU-P8Y.js} +2 -2
- package/dist/{index-ByS7RhLv.js.map → index-CwwU-P8Y.js.map} +1 -1
- package/dist/{index-DZEhVUk2.js → index-D4652IGg.js} +2 -2
- package/dist/{index-DZEhVUk2.js.map → index-D4652IGg.js.map} +1 -1
- package/dist/{index-Dtu7Z_rj.js → index-DHoL-esa.js} +2 -2
- package/dist/{index-Dtu7Z_rj.js.map → index-DHoL-esa.js.map} +1 -1
- package/dist/{index--PROGPVz.js → index-D_58AKji.js} +2 -2
- package/dist/{index--PROGPVz.js.map → index-D_58AKji.js.map} +1 -1
- package/dist/{index-n0l3b7yd.js → index-Dj4Q-D3m.js} +2 -2
- package/dist/{index-n0l3b7yd.js.map → index-Dj4Q-D3m.js.map} +1 -1
- package/dist/{index-MGDZkDQT.js → index-DsOGNrfl.js} +2 -2
- package/dist/{index-MGDZkDQT.js.map → index-DsOGNrfl.js.map} +1 -1
- package/dist/{index-6w0qQWxe.js → index-TGeUE9Er.js} +471 -758
- package/dist/index-TGeUE9Er.js.map +1 -0
- package/dist/{index-C8M7XUU3.js → index-WBoaW8wN.js} +2 -2
- package/dist/{index-C8M7XUU3.js.map → index-WBoaW8wN.js.map} +1 -1
- package/dist/{index-C2ZCh8Gz.js → index-c05jkXcr.js} +2 -2
- package/dist/{index-C2ZCh8Gz.js.map → index-c05jkXcr.js.map} +1 -1
- package/dist/{index-DQXY2KTD.js → index-kzNBMTqG.js} +2 -2
- package/dist/{index-DQXY2KTD.js.map → index-kzNBMTqG.js.map} +1 -1
- package/dist/panels/FileEditorPanel/FileEditorPanel.d.ts +6 -0
- package/dist/panels/FileEditorPanel/FileEditorPanel.d.ts.map +1 -1
- package/dist/panels/GitDiffPanel/GitDiffPanel.d.ts +6 -0
- package/dist/panels/GitDiffPanel/GitDiffPanel.d.ts.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-6w0qQWxe.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";
|
|
@@ -217,7 +217,8 @@ const FileEditorPanelContent = ({
|
|
|
217
217
|
context,
|
|
218
218
|
actions: _actions,
|
|
219
219
|
events,
|
|
220
|
-
filePath: filePathProp
|
|
220
|
+
filePath: filePathProp,
|
|
221
|
+
showCloseButton = true
|
|
221
222
|
}) => {
|
|
222
223
|
var _a2, _b, _c;
|
|
223
224
|
const { theme: theme2 } = useTheme();
|
|
@@ -542,7 +543,7 @@ const FileEditorPanelContent = ({
|
|
|
542
543
|
}
|
|
543
544
|
)
|
|
544
545
|
] }),
|
|
545
|
-
filePath && /* @__PURE__ */ jsx$1(
|
|
546
|
+
filePath && showCloseButton && /* @__PURE__ */ jsx$1(
|
|
546
547
|
"button",
|
|
547
548
|
{
|
|
548
549
|
onClick: handleClose2,
|
|
@@ -745,7 +746,8 @@ const GitDiffPanelContent = ({
|
|
|
745
746
|
actions: _actions,
|
|
746
747
|
events,
|
|
747
748
|
filePath: filePathProp,
|
|
748
|
-
gitStatus: gitStatusProp
|
|
749
|
+
gitStatus: gitStatusProp,
|
|
750
|
+
showCloseButton = true
|
|
749
751
|
}) => {
|
|
750
752
|
var _a2;
|
|
751
753
|
const { theme: theme2 } = useTheme();
|
|
@@ -946,7 +948,7 @@ const GitDiffPanelContent = ({
|
|
|
946
948
|
]
|
|
947
949
|
}
|
|
948
950
|
),
|
|
949
|
-
/* @__PURE__ */ jsx$1(
|
|
951
|
+
showCloseButton && /* @__PURE__ */ jsx$1(
|
|
950
952
|
"button",
|
|
951
953
|
{
|
|
952
954
|
onClick: handleClose2,
|
|
@@ -12478,7 +12480,7 @@ function fixWrappingWhitespace(node2, parentChain) {
|
|
|
12478
12480
|
if (node2.type === "strong" || node2.type === "emphasis") {
|
|
12479
12481
|
const lastChild = node2.children.at(-1);
|
|
12480
12482
|
if ((lastChild == null ? void 0 : lastChild.type) === "text") {
|
|
12481
|
-
const trailingWhitespace = lastChild.value
|
|
12483
|
+
const trailingWhitespace = TRAILING_WHITESPACE_REGEXP.exec(lastChild.value);
|
|
12482
12484
|
if (trailingWhitespace) {
|
|
12483
12485
|
lastChild.value = lastChild.value.replace(TRAILING_WHITESPACE_REGEXP, "");
|
|
12484
12486
|
const parent = parentChain.at(-1);
|
|
@@ -12493,7 +12495,7 @@ function fixWrappingWhitespace(node2, parentChain) {
|
|
|
12493
12495
|
}
|
|
12494
12496
|
const firstChild = node2.children.at(0);
|
|
12495
12497
|
if ((firstChild == null ? void 0 : firstChild.type) === "text") {
|
|
12496
|
-
const leadingWhitespace = firstChild.value
|
|
12498
|
+
const leadingWhitespace = LEADING_WHITESPACE_REGEXP.exec(firstChild.value);
|
|
12497
12499
|
if (leadingWhitespace) {
|
|
12498
12500
|
firstChild.value = firstChild.value.replace(LEADING_WHITESPACE_REGEXP, "");
|
|
12499
12501
|
const parent = parentChain.at(-1);
|
|
@@ -17023,6 +17025,182 @@ function defaultOnError(left, right) {
|
|
|
17023
17025
|
}) + ") is still open");
|
|
17024
17026
|
}
|
|
17025
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
|
+
}
|
|
17026
17204
|
function isParent$1(node2) {
|
|
17027
17205
|
return node2.children instanceof Array;
|
|
17028
17206
|
}
|
|
@@ -17076,7 +17254,8 @@ function importMarkdownToLexical({
|
|
|
17076
17254
|
var _a2;
|
|
17077
17255
|
let mdastRoot;
|
|
17078
17256
|
try {
|
|
17079
|
-
|
|
17257
|
+
const processedMarkdown = preprocessMarkdown(markdown2);
|
|
17258
|
+
mdastRoot = fromMarkdown(processedMarkdown, {
|
|
17080
17259
|
extensions: syntaxExtensions,
|
|
17081
17260
|
mdastExtensions
|
|
17082
17261
|
});
|
|
@@ -17121,7 +17300,7 @@ function importMdastTreeToLexical({ root: root2, mdastRoot, visitors, ...descrip
|
|
|
17121
17300
|
if (!visitor) {
|
|
17122
17301
|
try {
|
|
17123
17302
|
throw new UnrecognizedMarkdownConstructError(`Unsupported markdown syntax: ${toMarkdown(mdastNode)}`);
|
|
17124
|
-
} catch (
|
|
17303
|
+
} catch (_e2) {
|
|
17125
17304
|
throw new UnrecognizedMarkdownConstructError(
|
|
17126
17305
|
`Parsing of the following markdown structure failed: ${JSON.stringify({
|
|
17127
17306
|
type: mdastNode.type,
|
|
@@ -17841,9 +18020,7 @@ const currentSelection$ = $$4(null, (r2) => {
|
|
|
17841
18020
|
const parent = e2.getParent();
|
|
17842
18021
|
return parent !== null && so(parent);
|
|
17843
18022
|
});
|
|
17844
|
-
|
|
17845
|
-
element2 = anchorNode.getTopLevelElementOrThrow();
|
|
17846
|
-
}
|
|
18023
|
+
element2 ?? (element2 = anchorNode.getTopLevelElementOrThrow());
|
|
17847
18024
|
const elementKey = element2.getKey();
|
|
17848
18025
|
const elementDOM = theEditor.getElementByKey(elementKey);
|
|
17849
18026
|
if (elementDOM !== null) {
|
|
@@ -20143,10 +20320,26 @@ function getSelectedNode(selection2) {
|
|
|
20143
20320
|
} else {
|
|
20144
20321
|
return A$2(anchor) ? anchorNode : focusNode;
|
|
20145
20322
|
}
|
|
20146
|
-
} catch
|
|
20323
|
+
} catch {
|
|
20147
20324
|
return null;
|
|
20148
20325
|
}
|
|
20149
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
|
+
}
|
|
20150
20343
|
function getSelectionRectangle(editor) {
|
|
20151
20344
|
const selection2 = wr();
|
|
20152
20345
|
const nativeSelection = window.getSelection();
|
|
@@ -20173,13 +20366,23 @@ function getSelectionRectangle(editor) {
|
|
|
20173
20366
|
rect = domRange.getBoundingClientRect();
|
|
20174
20367
|
}
|
|
20175
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
|
+
}
|
|
20176
20379
|
return {
|
|
20177
20380
|
top: Math.round(rect.top),
|
|
20178
20381
|
left: Math.round(rect.left),
|
|
20179
20382
|
width: Math.round(rect.width),
|
|
20180
20383
|
height: Math.round(rect.height)
|
|
20181
20384
|
};
|
|
20182
|
-
} else if (
|
|
20385
|
+
} else if ((activeElement == null ? void 0 : activeElement.className) !== "link-input") {
|
|
20183
20386
|
return null;
|
|
20184
20387
|
}
|
|
20185
20388
|
return null;
|
|
@@ -20425,8 +20628,140 @@ const MDXEditor = React__default__default.forwardRef((props, ref) => {
|
|
|
20425
20628
|
/* @__PURE__ */ React__default__default.createElement(Methods$1, { mdxRef: ref })
|
|
20426
20629
|
);
|
|
20427
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";
|
|
20428
20759
|
const CAN_USE_DOM = typeof window !== "undefined" && typeof window.document.createElement !== "undefined";
|
|
20429
|
-
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
|
+
})();
|
|
20430
20765
|
function controlOrMeta(metaKey, ctrlKey) {
|
|
20431
20766
|
if (IS_APPLE) {
|
|
20432
20767
|
return metaKey;
|
|
@@ -20446,31 +20781,31 @@ const MdastHeadingVisitor = {
|
|
|
20446
20781
|
actions.addAndStepInto(At(`h${mdastNode.depth}`));
|
|
20447
20782
|
}
|
|
20448
20783
|
};
|
|
20449
|
-
const FORMATTING_KEYS = [
|
|
20784
|
+
const FORMATTING_KEYS = ["Digit0", "Digit1", "Digit2", "Digit3", "Digit4", "Digit5", "Digit6"];
|
|
20450
20785
|
const ALL_HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
|
|
20451
20786
|
const CODE_TO_HEADING_LEVEL_MAP = {
|
|
20452
|
-
|
|
20453
|
-
|
|
20454
|
-
|
|
20455
|
-
|
|
20456
|
-
|
|
20457
|
-
|
|
20787
|
+
Digit1: 1,
|
|
20788
|
+
Digit2: 2,
|
|
20789
|
+
Digit3: 3,
|
|
20790
|
+
Digit4: 4,
|
|
20791
|
+
Digit5: 5,
|
|
20792
|
+
Digit6: 6
|
|
20458
20793
|
};
|
|
20459
20794
|
const allowedHeadingLevels$ = $$4(ALL_HEADING_LEVELS, (r2) => {
|
|
20460
20795
|
r2.pub(createRootEditorSubscription$, (theRootEditor) => {
|
|
20461
20796
|
return theRootEditor.registerCommand(
|
|
20462
20797
|
Se,
|
|
20463
20798
|
(event) => {
|
|
20464
|
-
const {
|
|
20465
|
-
if (FORMATTING_KEYS.includes(
|
|
20799
|
+
const { code, ctrlKey, metaKey, altKey } = event;
|
|
20800
|
+
if (FORMATTING_KEYS.includes(code) && controlOrMeta(metaKey, ctrlKey) && altKey) {
|
|
20466
20801
|
event.preventDefault();
|
|
20467
20802
|
theRootEditor.update(() => {
|
|
20468
|
-
if (
|
|
20803
|
+
if (code === "Digit0") {
|
|
20469
20804
|
r2.pub(convertSelectionToNode$, () => Fi());
|
|
20470
20805
|
} else {
|
|
20471
20806
|
const allowedHeadingLevels = r2.getValue(allowedHeadingLevels$);
|
|
20472
|
-
const requestedHeadingLevel = CODE_TO_HEADING_LEVEL_MAP[
|
|
20473
|
-
if (
|
|
20807
|
+
const requestedHeadingLevel = CODE_TO_HEADING_LEVEL_MAP[code];
|
|
20808
|
+
if (allowedHeadingLevels.includes(requestedHeadingLevel)) {
|
|
20474
20809
|
r2.pub(convertSelectionToNode$, () => At(`h${requestedHeadingLevel}`));
|
|
20475
20810
|
}
|
|
20476
20811
|
}
|
|
@@ -20672,12 +21007,10 @@ const LexicalListItemVisitor = {
|
|
|
20672
21007
|
let surroundingParagraph = null;
|
|
20673
21008
|
for (const child of lexicalNode.getChildren()) {
|
|
20674
21009
|
if (Zn(child) || Ln(child) || child.isInline() && (hi(child) || pi(child))) {
|
|
20675
|
-
|
|
20676
|
-
|
|
20677
|
-
|
|
20678
|
-
|
|
20679
|
-
});
|
|
20680
|
-
}
|
|
21010
|
+
surroundingParagraph ?? (surroundingParagraph = actions.appendToParent(listItem2, {
|
|
21011
|
+
type: "paragraph",
|
|
21012
|
+
children: []
|
|
21013
|
+
}));
|
|
20681
21014
|
actions.visit(child, surroundingParagraph);
|
|
20682
21015
|
} else {
|
|
20683
21016
|
surroundingParagraph = null;
|
|
@@ -20889,9 +21222,7 @@ const currentListType$ = $$4("", (r2) => {
|
|
|
20889
21222
|
const parent = e2.getParent();
|
|
20890
21223
|
return parent !== null && so(parent);
|
|
20891
21224
|
});
|
|
20892
|
-
|
|
20893
|
-
element2 = anchorNode.getTopLevelElementOrThrow();
|
|
20894
|
-
}
|
|
21225
|
+
element2 ?? (element2 = anchorNode.getTopLevelElementOrThrow());
|
|
20895
21226
|
const elementKey = element2.getKey();
|
|
20896
21227
|
const elementDOM = theEditor.getElementByKey(elementKey);
|
|
20897
21228
|
if (elementDOM !== null) {
|
|
@@ -26580,9 +26911,7 @@ const TableEditor = ({ mdastNode, parentEditor, lexicalTable }) => {
|
|
|
26580
26911
|
const [iconComponentFor, readOnly2] = X$3(iconComponentFor$, readOnly$);
|
|
26581
26912
|
const getCellKey = React__default__default.useMemo(() => {
|
|
26582
26913
|
return (cell) => {
|
|
26583
|
-
|
|
26584
|
-
cell.__cacheKey = uuidv4();
|
|
26585
|
-
}
|
|
26914
|
+
cell.__cacheKey ?? (cell.__cacheKey = uuidv4());
|
|
26586
26915
|
return cell.__cacheKey;
|
|
26587
26916
|
};
|
|
26588
26917
|
}, []);
|
|
@@ -26870,7 +27199,9 @@ const CellEditor = ({ focus: focus2, setActiveCell, parentEditor, lexicalTable,
|
|
|
26870
27199
|
);
|
|
26871
27200
|
}, [colIndex, editor, rootEditor, rowIndex, saveAndFocus, setActiveCell]);
|
|
26872
27201
|
React__default__default.useEffect(() => {
|
|
26873
|
-
|
|
27202
|
+
if (focus2) {
|
|
27203
|
+
editor.focus();
|
|
27204
|
+
}
|
|
26874
27205
|
}, [focus2, editor]);
|
|
26875
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));
|
|
26876
27207
|
};
|
|
@@ -27174,9 +27505,7 @@ class TableNode extends _i {
|
|
|
27174
27505
|
setColumnAlign(colIndex, align) {
|
|
27175
27506
|
const self2 = this.getWritable();
|
|
27176
27507
|
const table = self2.__mdastNode;
|
|
27177
|
-
|
|
27178
|
-
table.align = [];
|
|
27179
|
-
}
|
|
27508
|
+
table.align ?? (table.align = []);
|
|
27180
27509
|
table.align[colIndex] = align;
|
|
27181
27510
|
}
|
|
27182
27511
|
/** @internal */
|
|
@@ -27212,7 +27541,7 @@ function $convertTableElement(element2) {
|
|
|
27212
27541
|
children: [
|
|
27213
27542
|
{
|
|
27214
27543
|
type: "text",
|
|
27215
|
-
value: cell.textContent
|
|
27544
|
+
value: cell.textContent
|
|
27216
27545
|
}
|
|
27217
27546
|
]
|
|
27218
27547
|
};
|
|
@@ -27570,7 +27899,7 @@ function EditImageToolbar(props) {
|
|
|
27570
27899
|
openEditImageDialog({
|
|
27571
27900
|
nodeKey,
|
|
27572
27901
|
initialValues: {
|
|
27573
|
-
src:
|
|
27902
|
+
src: initialImagePath ?? imageSource,
|
|
27574
27903
|
title,
|
|
27575
27904
|
altText: alt,
|
|
27576
27905
|
width: parseImageDimension(width),
|
|
@@ -31554,7 +31883,7 @@ function ImageResizer({
|
|
|
31554
31883
|
startY: 0
|
|
31555
31884
|
});
|
|
31556
31885
|
const editorRootElement = editor.getRootElement();
|
|
31557
|
-
const maxWidthContainer = maxWidth
|
|
31886
|
+
const maxWidthContainer = maxWidth ?? (editorRootElement !== null ? editorRootElement.getBoundingClientRect().width - 20 : 100);
|
|
31558
31887
|
const maxHeightContainer = editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;
|
|
31559
31888
|
const minWidth = 100;
|
|
31560
31889
|
const minHeight = 100;
|
|
@@ -32018,8 +32347,8 @@ class ImageNode extends _i {
|
|
|
32018
32347
|
this.__src = src;
|
|
32019
32348
|
this.__title = title;
|
|
32020
32349
|
this.__altText = altText;
|
|
32021
|
-
this.__width = width
|
|
32022
|
-
this.__height = height
|
|
32350
|
+
this.__width = width ?? "inherit";
|
|
32351
|
+
this.__height = height ?? "inherit";
|
|
32023
32352
|
this.__rest = rest ?? [];
|
|
32024
32353
|
}
|
|
32025
32354
|
/** @internal */
|
|
@@ -32031,6 +32360,16 @@ class ImageNode extends _i {
|
|
|
32031
32360
|
return new ImageNode(node2.__src, node2.__altText, node2.__title, node2.__width, node2.__height, node2.__rest, node2.__key);
|
|
32032
32361
|
}
|
|
32033
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 */
|
|
32034
32373
|
static importJSON(serializedNode) {
|
|
32035
32374
|
const { altText, title, src, width, rest, height } = serializedNode;
|
|
32036
32375
|
const node2 = $createImageNode({
|
|
@@ -32090,7 +32429,7 @@ class ImageNode extends _i {
|
|
|
32090
32429
|
writable.__height = height;
|
|
32091
32430
|
}
|
|
32092
32431
|
/** @internal */
|
|
32093
|
-
createDOM(config2) {
|
|
32432
|
+
createDOM(config2, _editor) {
|
|
32094
32433
|
const span = document.createElement("span");
|
|
32095
32434
|
const theme2 = config2.theme;
|
|
32096
32435
|
const className = theme2.image;
|
|
@@ -35981,6 +36320,13 @@ class CodeBlockNode extends _i {
|
|
|
35981
36320
|
static clone(node2) {
|
|
35982
36321
|
return new CodeBlockNode(node2.__code, node2.__language, node2.__meta, node2.__key);
|
|
35983
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
|
+
}
|
|
35984
36330
|
static importJSON(serializedNode) {
|
|
35985
36331
|
const { code, meta: meta2, language: language2 } = serializedNode;
|
|
35986
36332
|
return $createCodeBlockNode({
|
|
@@ -36009,7 +36355,7 @@ class CodeBlockNode extends _i {
|
|
|
36009
36355
|
};
|
|
36010
36356
|
}
|
|
36011
36357
|
// View
|
|
36012
|
-
createDOM(_config) {
|
|
36358
|
+
createDOM(_config, _editor) {
|
|
36013
36359
|
return document.createElement("div");
|
|
36014
36360
|
}
|
|
36015
36361
|
updateDOM() {
|
|
@@ -36081,9 +36427,7 @@ const CodeBlockEditorContainer = (props) => {
|
|
|
36081
36427
|
const codeBlockEditorDescriptors = E$4(codeBlockEditorDescriptors$);
|
|
36082
36428
|
const defaultCodeBlockLanguage = E$4(defaultCodeBlockLanguage$);
|
|
36083
36429
|
let descriptor = codeBlockEditorDescriptors.sort((a2, b2) => b2.priority - a2.priority).find((descriptor2) => descriptor2.match(props.language || "", props.meta || ""));
|
|
36084
|
-
|
|
36085
|
-
descriptor = codeBlockEditorDescriptors.find((descriptor2) => descriptor2.match(defaultCodeBlockLanguage || "", props.meta || ""));
|
|
36086
|
-
}
|
|
36430
|
+
descriptor ?? (descriptor = codeBlockEditorDescriptors.find((descriptor2) => descriptor2.match(defaultCodeBlockLanguage || "", props.meta || "")));
|
|
36087
36431
|
if (!descriptor) {
|
|
36088
36432
|
throw new Error(`No CodeBlockEditor registered for language=${props.language} meta=${props.meta}`);
|
|
36089
36433
|
}
|
|
@@ -36100,10 +36444,10 @@ function $isCodeBlockNode(node2) {
|
|
|
36100
36444
|
}
|
|
36101
36445
|
function $convertPreElement(element2) {
|
|
36102
36446
|
const preElement = element2;
|
|
36103
|
-
const code = preElement.textContent
|
|
36447
|
+
const code = preElement.textContent;
|
|
36104
36448
|
const classAttribute = element2.getAttribute("class") ?? "";
|
|
36105
36449
|
const dataLanguageAttribute = element2.getAttribute("data-language") ?? "";
|
|
36106
|
-
const languageMatch =
|
|
36450
|
+
const languageMatch = /language-(\w+)/.exec(classAttribute);
|
|
36107
36451
|
const language2 = languageMatch ? languageMatch[1] : dataLanguageAttribute;
|
|
36108
36452
|
const meta2 = preElement.getAttribute("data-meta") ?? "";
|
|
36109
36453
|
return {
|
|
@@ -62278,7 +62622,7 @@ function legacy(parser2) {
|
|
|
62278
62622
|
return new LanguageSupport(StreamLanguage.define(parser2));
|
|
62279
62623
|
}
|
|
62280
62624
|
function sql(dialectName) {
|
|
62281
|
-
return import("./index-
|
|
62625
|
+
return import("./index-DsOGNrfl.js").then((m3) => m3.sql({ dialect: m3[dialectName] }));
|
|
62282
62626
|
}
|
|
62283
62627
|
const languages = [
|
|
62284
62628
|
// New-style language modes
|
|
@@ -62286,7 +62630,7 @@ const languages = [
|
|
|
62286
62630
|
name: "C",
|
|
62287
62631
|
extensions: ["c", "h", "ino"],
|
|
62288
62632
|
load() {
|
|
62289
|
-
return import("./index-
|
|
62633
|
+
return import("./index-BO94YI1U.js").then((m3) => m3.cpp());
|
|
62290
62634
|
}
|
|
62291
62635
|
}),
|
|
62292
62636
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62294,7 +62638,7 @@ const languages = [
|
|
|
62294
62638
|
alias: ["cpp"],
|
|
62295
62639
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
62296
62640
|
load() {
|
|
62297
|
-
return import("./index-
|
|
62641
|
+
return import("./index-BO94YI1U.js").then((m3) => m3.cpp());
|
|
62298
62642
|
}
|
|
62299
62643
|
}),
|
|
62300
62644
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62316,7 +62660,7 @@ const languages = [
|
|
|
62316
62660
|
name: "Go",
|
|
62317
62661
|
extensions: ["go"],
|
|
62318
62662
|
load() {
|
|
62319
|
-
return import("./index-
|
|
62663
|
+
return import("./index-kzNBMTqG.js").then((m3) => m3.go());
|
|
62320
62664
|
}
|
|
62321
62665
|
}),
|
|
62322
62666
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62331,7 +62675,7 @@ const languages = [
|
|
|
62331
62675
|
name: "Java",
|
|
62332
62676
|
extensions: ["java"],
|
|
62333
62677
|
load() {
|
|
62334
|
-
return import("./index-
|
|
62678
|
+
return import("./index-CwwU-P8Y.js").then((m3) => m3.java());
|
|
62335
62679
|
}
|
|
62336
62680
|
}),
|
|
62337
62681
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62346,7 +62690,7 @@ const languages = [
|
|
|
62346
62690
|
name: "Jinja",
|
|
62347
62691
|
extensions: ["j2", "jinja", "jinja2"],
|
|
62348
62692
|
load() {
|
|
62349
|
-
return import("./index-
|
|
62693
|
+
return import("./index-BDgU-836.js").then((m3) => m3.jinja());
|
|
62350
62694
|
}
|
|
62351
62695
|
}),
|
|
62352
62696
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62354,7 +62698,7 @@ const languages = [
|
|
|
62354
62698
|
alias: ["json5"],
|
|
62355
62699
|
extensions: ["json", "map"],
|
|
62356
62700
|
load() {
|
|
62357
|
-
return import("./index-
|
|
62701
|
+
return import("./index-BE_uqu8N.js").then((m3) => m3.json());
|
|
62358
62702
|
}
|
|
62359
62703
|
}),
|
|
62360
62704
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62368,14 +62712,14 @@ const languages = [
|
|
|
62368
62712
|
name: "LESS",
|
|
62369
62713
|
extensions: ["less"],
|
|
62370
62714
|
load() {
|
|
62371
|
-
return import("./index-
|
|
62715
|
+
return import("./index-DHoL-esa.js").then((m3) => m3.less());
|
|
62372
62716
|
}
|
|
62373
62717
|
}),
|
|
62374
62718
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62375
62719
|
name: "Liquid",
|
|
62376
62720
|
extensions: ["liquid"],
|
|
62377
62721
|
load() {
|
|
62378
|
-
return import("./index-
|
|
62722
|
+
return import("./index-Dj4Q-D3m.js").then((m3) => m3.liquid());
|
|
62379
62723
|
}
|
|
62380
62724
|
}),
|
|
62381
62725
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62407,7 +62751,7 @@ const languages = [
|
|
|
62407
62751
|
name: "PHP",
|
|
62408
62752
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
62409
62753
|
load() {
|
|
62410
|
-
return import("./index-
|
|
62754
|
+
return import("./index-BijIiC2T.js").then((m3) => m3.php());
|
|
62411
62755
|
}
|
|
62412
62756
|
}),
|
|
62413
62757
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62428,28 +62772,28 @@ const languages = [
|
|
|
62428
62772
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
62429
62773
|
filename: /^(BUCK|BUILD)$/,
|
|
62430
62774
|
load() {
|
|
62431
|
-
return import("./index-
|
|
62775
|
+
return import("./index-BQ3COoTI.js").then((m3) => m3.python());
|
|
62432
62776
|
}
|
|
62433
62777
|
}),
|
|
62434
62778
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62435
62779
|
name: "Rust",
|
|
62436
62780
|
extensions: ["rs"],
|
|
62437
62781
|
load() {
|
|
62438
|
-
return import("./index-
|
|
62782
|
+
return import("./index-WBoaW8wN.js").then((m3) => m3.rust());
|
|
62439
62783
|
}
|
|
62440
62784
|
}),
|
|
62441
62785
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62442
62786
|
name: "Sass",
|
|
62443
62787
|
extensions: ["sass"],
|
|
62444
62788
|
load() {
|
|
62445
|
-
return import("./index-
|
|
62789
|
+
return import("./index-BcJD4K9H.js").then((m3) => m3.sass({ indented: true }));
|
|
62446
62790
|
}
|
|
62447
62791
|
}),
|
|
62448
62792
|
/* @__PURE__ */ LanguageDescription.of({
|
|
62449
62793
|
name: "SCSS",
|
|
62450
62794
|
extensions: ["scss"],
|
|
62451
62795
|
load() {
|
|
62452
|
-
return import("./index-
|
|
62796
|
+
return import("./index-BcJD4K9H.js").then((m3) => m3.sass());
|
|
62453
62797
|
}
|
|
62454
62798
|
}),
|
|
62455
62799
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62484,7 +62828,7 @@ const languages = [
|
|
|
62484
62828
|
name: "WebAssembly",
|
|
62485
62829
|
extensions: ["wat", "wast"],
|
|
62486
62830
|
load() {
|
|
62487
|
-
return import("./index-
|
|
62831
|
+
return import("./index-Bn3GS5JS.js").then((m3) => m3.wast());
|
|
62488
62832
|
}
|
|
62489
62833
|
}),
|
|
62490
62834
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62492,7 +62836,7 @@ const languages = [
|
|
|
62492
62836
|
alias: ["rss", "wsdl", "xsd"],
|
|
62493
62837
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
62494
62838
|
load() {
|
|
62495
|
-
return import("./index-
|
|
62839
|
+
return import("./index-D4652IGg.js").then((m3) => m3.xml());
|
|
62496
62840
|
}
|
|
62497
62841
|
}),
|
|
62498
62842
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -62500,7 +62844,7 @@ const languages = [
|
|
|
62500
62844
|
alias: ["yml"],
|
|
62501
62845
|
extensions: ["yaml", "yml"],
|
|
62502
62846
|
load() {
|
|
62503
|
-
return import("./index
|
|
62847
|
+
return import("./index-D_58AKji.js").then((m3) => m3.yaml());
|
|
62504
62848
|
}
|
|
62505
62849
|
}),
|
|
62506
62850
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -63289,13 +63633,13 @@ const languages = [
|
|
|
63289
63633
|
name: "Vue",
|
|
63290
63634
|
extensions: ["vue"],
|
|
63291
63635
|
load() {
|
|
63292
|
-
return import("./index-
|
|
63636
|
+
return import("./index-B2rZhF0Y.js").then((m3) => m3.vue());
|
|
63293
63637
|
}
|
|
63294
63638
|
}),
|
|
63295
63639
|
/* @__PURE__ */ LanguageDescription.of({
|
|
63296
63640
|
name: "Angular Template",
|
|
63297
63641
|
load() {
|
|
63298
|
-
return import("./index-
|
|
63642
|
+
return import("./index-c05jkXcr.js").then((m3) => m3.angular());
|
|
63299
63643
|
}
|
|
63300
63644
|
})
|
|
63301
63645
|
];
|
|
@@ -66948,7 +67292,7 @@ const CodeMirrorEditor = ({ language: language2, nodeKey, code, focusEmitter })
|
|
|
66948
67292
|
try {
|
|
66949
67293
|
const languageSupport = await languageData2.load();
|
|
66950
67294
|
extensions.push(languageSupport.extension);
|
|
66951
|
-
} catch (
|
|
67295
|
+
} catch (_e2) {
|
|
66952
67296
|
console.warn("failed to load language support for", language2);
|
|
66953
67297
|
}
|
|
66954
67298
|
}
|
|
@@ -67050,7 +67394,7 @@ const codeMirrorPlugin = realmPlugin({
|
|
|
67050
67394
|
function buildCodeBlockDescriptor(codeBlockLanguages) {
|
|
67051
67395
|
return {
|
|
67052
67396
|
match(language2, meta2) {
|
|
67053
|
-
return
|
|
67397
|
+
return Object.hasOwn(codeBlockLanguages, language2 ?? "") && !meta2;
|
|
67054
67398
|
},
|
|
67055
67399
|
priority: 1,
|
|
67056
67400
|
Editor: CodeMirrorEditor
|
|
@@ -67310,7 +67654,7 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67310
67654
|
});
|
|
67311
67655
|
r2.pub(createActiveEditorSubscription$, (editor) => {
|
|
67312
67656
|
return editor.registerCommand(
|
|
67313
|
-
|
|
67657
|
+
Se,
|
|
67314
67658
|
(event) => {
|
|
67315
67659
|
if (event.key === "k" && (IS_APPLE ? event.metaKey : event.ctrlKey) && !r2.getValue(readOnly$)) {
|
|
67316
67660
|
const selection2 = wr();
|
|
@@ -67368,9 +67712,16 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67368
67712
|
Lr([node2]);
|
|
67369
67713
|
node2.select();
|
|
67370
67714
|
} else {
|
|
67371
|
-
linkNode
|
|
67372
|
-
|
|
67373
|
-
|
|
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
|
+
}
|
|
67374
67725
|
}
|
|
67375
67726
|
},
|
|
67376
67727
|
{ discrete: true }
|
|
@@ -67430,6 +67781,8 @@ const linkDialogState$ = $$4({ type: "inactive" }, (r2) => {
|
|
|
67430
67781
|
_$3(([[selection2], activeEditor, _2, readOnly2]) => {
|
|
67431
67782
|
if (ar(selection2) && activeEditor && !readOnly2) {
|
|
67432
67783
|
const node2 = getLinkNodeInSelection(selection2);
|
|
67784
|
+
if (!selection2.isCollapsed())
|
|
67785
|
+
return { type: "inactive" };
|
|
67433
67786
|
if (node2) {
|
|
67434
67787
|
const rect = getSelectionRectangle(activeEditor);
|
|
67435
67788
|
if (!rect) {
|
|
@@ -75329,641 +75682,6 @@ const UndoRedo = () => {
|
|
|
75329
75682
|
}
|
|
75330
75683
|
);
|
|
75331
75684
|
};
|
|
75332
|
-
(function() {
|
|
75333
|
-
if (typeof document === "undefined") return;
|
|
75334
|
-
var id2 = "mdxeditor-base-styles-L1VzZXJz";
|
|
75335
|
-
if (document.getElementById(id2)) return;
|
|
75336
|
-
var style = document.createElement("style");
|
|
75337
|
-
style.id = id2;
|
|
75338
|
-
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";
|
|
75339
|
-
document.head.appendChild(style);
|
|
75340
|
-
})();
|
|
75341
|
-
(function() {
|
|
75342
|
-
if (typeof document === "undefined") return;
|
|
75343
|
-
var id2 = "industry-mdx-editor-styles-L1VzZXJz";
|
|
75344
|
-
if (document.getElementById(id2)) return;
|
|
75345
|
-
var style = document.createElement("style");
|
|
75346
|
-
style.id = id2;
|
|
75347
|
-
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";
|
|
75348
|
-
document.head.appendChild(style);
|
|
75349
|
-
})();
|
|
75350
|
-
var defaultPreprocessRules = [
|
|
75351
|
-
{
|
|
75352
|
-
name: "normalize-code-block-language",
|
|
75353
|
-
description: "Normalize unknown or missing code block language identifiers",
|
|
75354
|
-
pattern: /^(\s*)```([^\n`]*?)\n/gim,
|
|
75355
|
-
replacement: (_match, indent2, lang) => {
|
|
75356
|
-
const trimmedLang = lang.trim();
|
|
75357
|
-
const knownLanguages = [
|
|
75358
|
-
"javascript",
|
|
75359
|
-
"js",
|
|
75360
|
-
"typescript",
|
|
75361
|
-
"ts",
|
|
75362
|
-
"jsx",
|
|
75363
|
-
"tsx",
|
|
75364
|
-
"python",
|
|
75365
|
-
"py",
|
|
75366
|
-
"java",
|
|
75367
|
-
"c",
|
|
75368
|
-
"cpp",
|
|
75369
|
-
"csharp",
|
|
75370
|
-
"cs",
|
|
75371
|
-
"html",
|
|
75372
|
-
"css",
|
|
75373
|
-
"scss",
|
|
75374
|
-
"sass",
|
|
75375
|
-
"less",
|
|
75376
|
-
"json",
|
|
75377
|
-
"yaml",
|
|
75378
|
-
"yml",
|
|
75379
|
-
"xml",
|
|
75380
|
-
"toml",
|
|
75381
|
-
"bash",
|
|
75382
|
-
"sh",
|
|
75383
|
-
"shell",
|
|
75384
|
-
"powershell",
|
|
75385
|
-
"sql",
|
|
75386
|
-
"graphql",
|
|
75387
|
-
"markdown",
|
|
75388
|
-
"md",
|
|
75389
|
-
"rust",
|
|
75390
|
-
"go",
|
|
75391
|
-
"ruby",
|
|
75392
|
-
"php",
|
|
75393
|
-
"swift",
|
|
75394
|
-
"kotlin",
|
|
75395
|
-
"dart",
|
|
75396
|
-
"r",
|
|
75397
|
-
"matlab",
|
|
75398
|
-
"diff",
|
|
75399
|
-
"text",
|
|
75400
|
-
"plaintext"
|
|
75401
|
-
];
|
|
75402
|
-
if (knownLanguages.includes(trimmedLang.toLowerCase())) {
|
|
75403
|
-
return _match;
|
|
75404
|
-
}
|
|
75405
|
-
if (!trimmedLang || trimmedLang === "") {
|
|
75406
|
-
return `${indent2}\`\`\`markdown
|
|
75407
|
-
`;
|
|
75408
|
-
}
|
|
75409
|
-
const langLower = trimmedLang.toLowerCase();
|
|
75410
|
-
if (langLower === "n/a") {
|
|
75411
|
-
return `${indent2}\`\`\`markdown
|
|
75412
|
-
`;
|
|
75413
|
-
}
|
|
75414
|
-
if (langLower === "argdown") {
|
|
75415
|
-
return `${indent2}\`\`\`markdown
|
|
75416
|
-
`;
|
|
75417
|
-
}
|
|
75418
|
-
return _match;
|
|
75419
|
-
}
|
|
75420
|
-
},
|
|
75421
|
-
{
|
|
75422
|
-
name: "less-than-digit",
|
|
75423
|
-
description: "Escape < followed by digit",
|
|
75424
|
-
pattern: /<(?=\d)/g,
|
|
75425
|
-
replacement: "<"
|
|
75426
|
-
},
|
|
75427
|
-
{
|
|
75428
|
-
name: "less-than-space-digit",
|
|
75429
|
-
description: "Escape < followed by space and digit",
|
|
75430
|
-
pattern: /<(\s+)(?=\d)/g,
|
|
75431
|
-
replacement: (_match, spaces2) => `<${spaces2}`
|
|
75432
|
-
},
|
|
75433
|
-
{
|
|
75434
|
-
name: "greater-than-digit",
|
|
75435
|
-
description: "Escape > followed by digit",
|
|
75436
|
-
pattern: new RegExp("(?<![-\\w])>(?=\\s?\\d)", "g"),
|
|
75437
|
-
replacement: ">"
|
|
75438
|
-
},
|
|
75439
|
-
{
|
|
75440
|
-
name: "invalid-tag-opening",
|
|
75441
|
-
description: "Escape invalid opening tags starting with digit",
|
|
75442
|
-
pattern: /<(\/?(?:\d[^>\s]*))/g,
|
|
75443
|
-
replacement: (_match, tagContent) => `<${tagContent}`
|
|
75444
|
-
},
|
|
75445
|
-
{
|
|
75446
|
-
name: "numeric-only-tag",
|
|
75447
|
-
description: "Escape tags that are only numbers",
|
|
75448
|
-
pattern: /<(\d+)>/g,
|
|
75449
|
-
replacement: (_match, number2) => `<${number2}>`
|
|
75450
|
-
}
|
|
75451
|
-
];
|
|
75452
|
-
function preserveCode(markdown2, transform) {
|
|
75453
|
-
const parts = [];
|
|
75454
|
-
const codeRegex = /(```[\s\S]*?```|`[^`\n]+`)/g;
|
|
75455
|
-
let lastIndex = 0;
|
|
75456
|
-
let match;
|
|
75457
|
-
while ((match = codeRegex.exec(markdown2)) !== null) {
|
|
75458
|
-
if (match.index > lastIndex) {
|
|
75459
|
-
parts.push({
|
|
75460
|
-
type: "text",
|
|
75461
|
-
content: markdown2.slice(lastIndex, match.index)
|
|
75462
|
-
});
|
|
75463
|
-
}
|
|
75464
|
-
parts.push({
|
|
75465
|
-
type: "code",
|
|
75466
|
-
content: match[0]
|
|
75467
|
-
});
|
|
75468
|
-
lastIndex = match.index + match[0].length;
|
|
75469
|
-
}
|
|
75470
|
-
if (lastIndex < markdown2.length) {
|
|
75471
|
-
parts.push({
|
|
75472
|
-
type: "text",
|
|
75473
|
-
content: markdown2.slice(lastIndex)
|
|
75474
|
-
});
|
|
75475
|
-
}
|
|
75476
|
-
return parts.map((part) => part.type === "code" ? part.content : transform(part.content)).join("");
|
|
75477
|
-
}
|
|
75478
|
-
function preprocessMDX(markdown2, options = {}) {
|
|
75479
|
-
const {
|
|
75480
|
-
rules = defaultPreprocessRules,
|
|
75481
|
-
enable,
|
|
75482
|
-
disable: disable2,
|
|
75483
|
-
preserveCodeBlocks = true,
|
|
75484
|
-
onStats,
|
|
75485
|
-
debug = false
|
|
75486
|
-
} = options;
|
|
75487
|
-
let activeRules = rules;
|
|
75488
|
-
if (Array.isArray(enable) && enable.length > 0) {
|
|
75489
|
-
activeRules = rules.filter((r2) => enable.includes(r2.name));
|
|
75490
|
-
}
|
|
75491
|
-
if (Array.isArray(disable2) && disable2.length > 0) {
|
|
75492
|
-
activeRules = activeRules.filter((r2) => !disable2.includes(r2.name));
|
|
75493
|
-
}
|
|
75494
|
-
if (debug) {
|
|
75495
|
-
console.log("[mdx-auto-fix] Active preprocessing rules:", activeRules.map((r2) => r2.name));
|
|
75496
|
-
}
|
|
75497
|
-
const stats = {
|
|
75498
|
-
totalFixes: 0,
|
|
75499
|
-
byTransformer: {}
|
|
75500
|
-
};
|
|
75501
|
-
let result = markdown2;
|
|
75502
|
-
const codeBlockLangRule = activeRules.find((r2) => r2.name === "normalize-code-block-language");
|
|
75503
|
-
if (codeBlockLangRule) {
|
|
75504
|
-
let fixCount = 0;
|
|
75505
|
-
let insideCodeBlock = false;
|
|
75506
|
-
if (typeof codeBlockLangRule.replacement === "function") {
|
|
75507
|
-
result = result.replace(codeBlockLangRule.pattern, (...args) => {
|
|
75508
|
-
if (insideCodeBlock) {
|
|
75509
|
-
insideCodeBlock = false;
|
|
75510
|
-
return args[0];
|
|
75511
|
-
}
|
|
75512
|
-
insideCodeBlock = true;
|
|
75513
|
-
const originalMatch = args[0];
|
|
75514
|
-
const replacement = codeBlockLangRule.replacement(...args);
|
|
75515
|
-
if (replacement !== originalMatch) {
|
|
75516
|
-
fixCount++;
|
|
75517
|
-
}
|
|
75518
|
-
return replacement;
|
|
75519
|
-
});
|
|
75520
|
-
} else {
|
|
75521
|
-
result = result.replace(codeBlockLangRule.pattern, (match) => {
|
|
75522
|
-
if (insideCodeBlock) {
|
|
75523
|
-
insideCodeBlock = false;
|
|
75524
|
-
return match;
|
|
75525
|
-
}
|
|
75526
|
-
insideCodeBlock = true;
|
|
75527
|
-
const replacement = codeBlockLangRule.replacement;
|
|
75528
|
-
if (replacement !== match) {
|
|
75529
|
-
fixCount++;
|
|
75530
|
-
}
|
|
75531
|
-
return replacement;
|
|
75532
|
-
});
|
|
75533
|
-
}
|
|
75534
|
-
if (fixCount > 0) {
|
|
75535
|
-
stats.byTransformer[codeBlockLangRule.name] = fixCount;
|
|
75536
|
-
stats.totalFixes += fixCount;
|
|
75537
|
-
if (debug) {
|
|
75538
|
-
console.log(`[mdx-auto-fix] ${codeBlockLangRule.name}: ${fixCount} fixes`);
|
|
75539
|
-
}
|
|
75540
|
-
}
|
|
75541
|
-
}
|
|
75542
|
-
const otherRules = activeRules.filter((r2) => r2.name !== "normalize-code-block-language");
|
|
75543
|
-
const transform = (text2) => {
|
|
75544
|
-
let transformed = text2;
|
|
75545
|
-
for (const rule of otherRules) {
|
|
75546
|
-
let fixCount = 0;
|
|
75547
|
-
if (typeof rule.replacement === "function") {
|
|
75548
|
-
transformed = transformed.replace(rule.pattern, (...args) => {
|
|
75549
|
-
fixCount++;
|
|
75550
|
-
return rule.replacement(...args);
|
|
75551
|
-
});
|
|
75552
|
-
} else {
|
|
75553
|
-
transformed = transformed.replace(rule.pattern, () => {
|
|
75554
|
-
fixCount++;
|
|
75555
|
-
return rule.replacement;
|
|
75556
|
-
});
|
|
75557
|
-
}
|
|
75558
|
-
if (fixCount > 0) {
|
|
75559
|
-
stats.byTransformer[rule.name] = (stats.byTransformer[rule.name] || 0) + fixCount;
|
|
75560
|
-
stats.totalFixes += fixCount;
|
|
75561
|
-
if (debug) {
|
|
75562
|
-
console.log(`[mdx-auto-fix] ${rule.name}: ${fixCount} fixes`);
|
|
75563
|
-
}
|
|
75564
|
-
}
|
|
75565
|
-
}
|
|
75566
|
-
return transformed;
|
|
75567
|
-
};
|
|
75568
|
-
result = preserveCodeBlocks ? preserveCode(result, transform) : transform(result);
|
|
75569
|
-
if (onStats && stats.totalFixes > 0) {
|
|
75570
|
-
onStats(stats);
|
|
75571
|
-
}
|
|
75572
|
-
if (debug && stats.totalFixes > 0) {
|
|
75573
|
-
console.log(`[mdx-auto-fix] Total preprocessing fixes: ${stats.totalFixes}`);
|
|
75574
|
-
}
|
|
75575
|
-
return result;
|
|
75576
|
-
}
|
|
75577
|
-
function getPaddingStyles(padding) {
|
|
75578
|
-
if (!padding) {
|
|
75579
|
-
return {};
|
|
75580
|
-
}
|
|
75581
|
-
const presets = {
|
|
75582
|
-
none: "0",
|
|
75583
|
-
narrow: "0.5in",
|
|
75584
|
-
moderate: "0.75in",
|
|
75585
|
-
normal: "1in",
|
|
75586
|
-
wide: "2in"
|
|
75587
|
-
};
|
|
75588
|
-
if (typeof padding === "string" && padding in presets) {
|
|
75589
|
-
const value2 = presets[padding];
|
|
75590
|
-
return {
|
|
75591
|
-
paddingTop: value2,
|
|
75592
|
-
paddingRight: value2,
|
|
75593
|
-
paddingBottom: value2,
|
|
75594
|
-
paddingLeft: value2
|
|
75595
|
-
};
|
|
75596
|
-
}
|
|
75597
|
-
if (typeof padding === "number") {
|
|
75598
|
-
return { padding: `${padding}px` };
|
|
75599
|
-
}
|
|
75600
|
-
if (typeof padding === "string") {
|
|
75601
|
-
return { padding };
|
|
75602
|
-
}
|
|
75603
|
-
const styles2 = {};
|
|
75604
|
-
if (padding.top !== void 0) {
|
|
75605
|
-
styles2.paddingTop = typeof padding.top === "number" ? `${padding.top}px` : padding.top;
|
|
75606
|
-
}
|
|
75607
|
-
if (padding.right !== void 0) {
|
|
75608
|
-
styles2.paddingRight = typeof padding.right === "number" ? `${padding.right}px` : padding.right;
|
|
75609
|
-
}
|
|
75610
|
-
if (padding.bottom !== void 0) {
|
|
75611
|
-
styles2.paddingBottom = typeof padding.bottom === "number" ? `${padding.bottom}px` : padding.bottom;
|
|
75612
|
-
}
|
|
75613
|
-
if (padding.left !== void 0) {
|
|
75614
|
-
styles2.paddingLeft = typeof padding.left === "number" ? `${padding.left}px` : padding.left;
|
|
75615
|
-
}
|
|
75616
|
-
return styles2;
|
|
75617
|
-
}
|
|
75618
|
-
function validateTheme(theme2) {
|
|
75619
|
-
const requiredColors = [
|
|
75620
|
-
"primary",
|
|
75621
|
-
"text",
|
|
75622
|
-
"background",
|
|
75623
|
-
"backgroundSecondary",
|
|
75624
|
-
"border"
|
|
75625
|
-
];
|
|
75626
|
-
const missingColors = [];
|
|
75627
|
-
for (const colorKey of requiredColors) {
|
|
75628
|
-
if (!theme2.colors[colorKey]) {
|
|
75629
|
-
missingColors.push(`theme.colors.${colorKey}`);
|
|
75630
|
-
}
|
|
75631
|
-
}
|
|
75632
|
-
if (missingColors.length > 0) {
|
|
75633
|
-
throw new Error(
|
|
75634
|
-
`ThemedMDXEditor: Missing required theme properties:
|
|
75635
|
-
- ${missingColors.join("\n - ")}
|
|
75636
|
-
|
|
75637
|
-
Please ensure your theme object includes all required color properties.`
|
|
75638
|
-
);
|
|
75639
|
-
}
|
|
75640
|
-
}
|
|
75641
|
-
var ThemedMDXEditor = forwardRef((props, ref) => {
|
|
75642
|
-
var _a2, _b, _c, _d, _e2, _f;
|
|
75643
|
-
const {
|
|
75644
|
-
theme: theme2,
|
|
75645
|
-
loadingComponent,
|
|
75646
|
-
initialValue,
|
|
75647
|
-
onSave,
|
|
75648
|
-
filePath,
|
|
75649
|
-
enableSaveShortcut = true,
|
|
75650
|
-
onDirtyChange,
|
|
75651
|
-
hideStatusBar = false,
|
|
75652
|
-
containerClassName = "",
|
|
75653
|
-
containerStyle = {},
|
|
75654
|
-
showLoadingState = false,
|
|
75655
|
-
documentPadding = { top: "0.25in", right: "0.5in", bottom: "0.5in", left: "0.5in" },
|
|
75656
|
-
autoFixMDX = true,
|
|
75657
|
-
markdown: controlledMarkdown,
|
|
75658
|
-
onChange: externalOnChange,
|
|
75659
|
-
...restEditorProps
|
|
75660
|
-
} = props;
|
|
75661
|
-
const editorRef = useRef(null);
|
|
75662
|
-
const [isMounted, setIsMounted] = useState(false);
|
|
75663
|
-
const [isLoading, setIsLoading] = useState(showLoadingState);
|
|
75664
|
-
const prevFilePathRef = useRef(filePath);
|
|
75665
|
-
const prevInitialValueRef = useRef(initialValue);
|
|
75666
|
-
const isControlled = controlledMarkdown !== void 0;
|
|
75667
|
-
const computeInitialValue = useCallback(() => {
|
|
75668
|
-
if (initialValue !== void 0) return initialValue;
|
|
75669
|
-
if (typeof controlledMarkdown === "string") return controlledMarkdown;
|
|
75670
|
-
return "";
|
|
75671
|
-
}, [controlledMarkdown, initialValue]);
|
|
75672
|
-
const [internalValue, setInternalValue] = useState(() => computeInitialValue());
|
|
75673
|
-
const [savedValue, setSavedValue] = useState(() => computeInitialValue());
|
|
75674
|
-
const [isDirty, setIsDirty] = useState(false);
|
|
75675
|
-
const currentValue = isControlled ? controlledMarkdown ?? "" : internalValue;
|
|
75676
|
-
const processedMarkdown = useMemo(() => {
|
|
75677
|
-
if (!autoFixMDX) {
|
|
75678
|
-
return currentValue;
|
|
75679
|
-
}
|
|
75680
|
-
return preprocessMDX(currentValue, {
|
|
75681
|
-
preserveCodeBlocks: true
|
|
75682
|
-
});
|
|
75683
|
-
}, [currentValue, autoFixMDX]);
|
|
75684
|
-
useEffect(() => {
|
|
75685
|
-
setIsMounted(true);
|
|
75686
|
-
if (showLoadingState) {
|
|
75687
|
-
setIsLoading(false);
|
|
75688
|
-
}
|
|
75689
|
-
}, [showLoadingState]);
|
|
75690
|
-
useImperativeHandle(ref, () => editorRef.current);
|
|
75691
|
-
useEffect(() => {
|
|
75692
|
-
if (!isControlled && initialValue !== void 0 && initialValue !== prevInitialValueRef.current) {
|
|
75693
|
-
setInternalValue(initialValue);
|
|
75694
|
-
setSavedValue(initialValue);
|
|
75695
|
-
setIsDirty(false);
|
|
75696
|
-
prevInitialValueRef.current = initialValue;
|
|
75697
|
-
}
|
|
75698
|
-
}, [initialValue, isControlled]);
|
|
75699
|
-
useEffect(() => {
|
|
75700
|
-
if (filePath !== prevFilePathRef.current) {
|
|
75701
|
-
const baseline = initialValue ?? currentValue;
|
|
75702
|
-
if (!isControlled && initialValue !== void 0) {
|
|
75703
|
-
setInternalValue(initialValue);
|
|
75704
|
-
}
|
|
75705
|
-
setSavedValue(baseline);
|
|
75706
|
-
setIsDirty(false);
|
|
75707
|
-
prevFilePathRef.current = filePath;
|
|
75708
|
-
}
|
|
75709
|
-
}, [currentValue, filePath, initialValue, isControlled]);
|
|
75710
|
-
useEffect(() => {
|
|
75711
|
-
const dirty = currentValue !== savedValue;
|
|
75712
|
-
setIsDirty((prev) => prev === dirty ? prev : dirty);
|
|
75713
|
-
}, [currentValue, savedValue]);
|
|
75714
|
-
useEffect(() => {
|
|
75715
|
-
onDirtyChange == null ? void 0 : onDirtyChange(isDirty);
|
|
75716
|
-
}, [isDirty, onDirtyChange]);
|
|
75717
|
-
const updateSavedState = useCallback(
|
|
75718
|
-
(nextSavedValue) => {
|
|
75719
|
-
setSavedValue(nextSavedValue);
|
|
75720
|
-
setIsDirty(false);
|
|
75721
|
-
},
|
|
75722
|
-
[]
|
|
75723
|
-
);
|
|
75724
|
-
const handleChange = useCallback(
|
|
75725
|
-
(value2, initialMarkdownNormalize) => {
|
|
75726
|
-
const nextValue = value2 ?? "";
|
|
75727
|
-
if (!isControlled) {
|
|
75728
|
-
setInternalValue(nextValue);
|
|
75729
|
-
}
|
|
75730
|
-
const dirty = nextValue !== savedValue;
|
|
75731
|
-
setIsDirty((prev) => prev === dirty ? prev : dirty);
|
|
75732
|
-
externalOnChange == null ? void 0 : externalOnChange(value2, initialMarkdownNormalize);
|
|
75733
|
-
},
|
|
75734
|
-
[externalOnChange, isControlled, savedValue]
|
|
75735
|
-
);
|
|
75736
|
-
const handleSave = useCallback(async () => {
|
|
75737
|
-
var _a3;
|
|
75738
|
-
if (onSave) {
|
|
75739
|
-
try {
|
|
75740
|
-
const latestValue = ((_a3 = editorRef.current) == null ? void 0 : _a3.getMarkdown()) ?? currentValue;
|
|
75741
|
-
const result = onSave(latestValue, { filePath });
|
|
75742
|
-
if (result && typeof result.then === "function") {
|
|
75743
|
-
await result;
|
|
75744
|
-
}
|
|
75745
|
-
updateSavedState(latestValue);
|
|
75746
|
-
} catch (error) {
|
|
75747
|
-
console.error("Failed to save editor contents", error);
|
|
75748
|
-
}
|
|
75749
|
-
}
|
|
75750
|
-
}, [onSave, currentValue, filePath, updateSavedState]);
|
|
75751
|
-
useEffect(() => {
|
|
75752
|
-
if (!enableSaveShortcut || !onSave) return;
|
|
75753
|
-
const handleKeyDown = (e2) => {
|
|
75754
|
-
if ((e2.metaKey || e2.ctrlKey) && e2.key === "s") {
|
|
75755
|
-
e2.preventDefault();
|
|
75756
|
-
handleSave();
|
|
75757
|
-
}
|
|
75758
|
-
};
|
|
75759
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
75760
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
75761
|
-
}, [enableSaveShortcut, handleSave, onSave]);
|
|
75762
|
-
const editorStyles = useMemo(() => {
|
|
75763
|
-
var _a3, _b2, _c2, _d2, _e3, _f2, _g;
|
|
75764
|
-
validateTheme(theme2);
|
|
75765
|
-
const hexToRgba = (hex, alpha) => {
|
|
75766
|
-
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
75767
|
-
if (result) {
|
|
75768
|
-
const r2 = parseInt(result[1], 16);
|
|
75769
|
-
const g2 = parseInt(result[2], 16);
|
|
75770
|
-
const b2 = parseInt(result[3], 16);
|
|
75771
|
-
return `rgba(${r2}, ${g2}, ${b2}, ${alpha})`;
|
|
75772
|
-
}
|
|
75773
|
-
return hex;
|
|
75774
|
-
};
|
|
75775
|
-
const primaryColor = theme2.colors.primary;
|
|
75776
|
-
const textColor = theme2.colors.text;
|
|
75777
|
-
const background2 = theme2.colors.background;
|
|
75778
|
-
const backgroundSecondary = theme2.colors.backgroundSecondary;
|
|
75779
|
-
const border = theme2.colors.border;
|
|
75780
|
-
const backgroundTertiary = theme2.colors.backgroundTertiary || backgroundSecondary;
|
|
75781
|
-
const accentColor = theme2.colors.accent || textColor;
|
|
75782
|
-
const paddingStyles = getPaddingStyles(documentPadding);
|
|
75783
|
-
return {
|
|
75784
|
-
// Radix Accent Colors (computed from primary color with different opacities)
|
|
75785
|
-
// These are used by MDXEditor's internal UI components (toolbar, dialogs, etc.)
|
|
75786
|
-
"--accentBase": primaryColor,
|
|
75787
|
-
"--accentBgSubtle": hexToRgba(primaryColor, 0.05),
|
|
75788
|
-
"--accentBg": hexToRgba(primaryColor, 0.1),
|
|
75789
|
-
"--accentBgHover": hexToRgba(primaryColor, 0.15),
|
|
75790
|
-
"--accentBgActive": hexToRgba(primaryColor, 0.2),
|
|
75791
|
-
"--accentLine": hexToRgba(primaryColor, 0.3),
|
|
75792
|
-
"--accentBorder": hexToRgba(primaryColor, 0.4),
|
|
75793
|
-
"--accentBorderHover": hexToRgba(primaryColor, 0.5),
|
|
75794
|
-
"--accentSolid": primaryColor,
|
|
75795
|
-
"--accentSolidHover": primaryColor,
|
|
75796
|
-
"--accentText": primaryColor,
|
|
75797
|
-
"--accentTextContrast": background2,
|
|
75798
|
-
// Radix Base Colors (computed from background/text colors)
|
|
75799
|
-
// These are used by MDXEditor's internal UI components (toolbar, dialogs, etc.)
|
|
75800
|
-
"--baseBase": background2,
|
|
75801
|
-
"--baseBgSubtle": backgroundSecondary,
|
|
75802
|
-
"--baseBg": background2,
|
|
75803
|
-
"--baseBgHover": backgroundSecondary,
|
|
75804
|
-
"--baseBgActive": backgroundTertiary,
|
|
75805
|
-
"--baseLine": hexToRgba(textColor, 0.15),
|
|
75806
|
-
"--baseBorder": border,
|
|
75807
|
-
"--baseBorderHover": hexToRgba(textColor, 0.3),
|
|
75808
|
-
"--baseSolid": textColor,
|
|
75809
|
-
"--baseSolidHover": textColor,
|
|
75810
|
-
"--baseText": textColor,
|
|
75811
|
-
"--baseTextContrast": background2,
|
|
75812
|
-
// Spacing scale - maps to theme.space array or uses defaults
|
|
75813
|
-
"--spacing-0": "0px",
|
|
75814
|
-
"--spacing-px": "1px",
|
|
75815
|
-
"--spacing-0_5": "0.125rem",
|
|
75816
|
-
"--spacing-1": `${((_a3 = theme2.space) == null ? void 0 : _a3[1]) || 4}px`,
|
|
75817
|
-
"--spacing-1_5": "0.375rem",
|
|
75818
|
-
"--spacing-2": `${((_b2 = theme2.space) == null ? void 0 : _b2[2]) || 8}px`,
|
|
75819
|
-
"--spacing-2_5": "0.625rem",
|
|
75820
|
-
"--spacing-3": "0.75rem",
|
|
75821
|
-
"--spacing-3_5": "0.875rem",
|
|
75822
|
-
"--spacing-4": `${((_c2 = theme2.space) == null ? void 0 : _c2[3]) || 16}px`,
|
|
75823
|
-
"--spacing-5": "1.25rem",
|
|
75824
|
-
"--spacing-6": "1.5rem",
|
|
75825
|
-
"--spacing-7": "1.75rem",
|
|
75826
|
-
"--spacing-8": `${((_d2 = theme2.space) == null ? void 0 : _d2[4]) || 32}px`,
|
|
75827
|
-
"--spacing-9": "2.25rem",
|
|
75828
|
-
"--spacing-10": "2.5rem",
|
|
75829
|
-
"--spacing-11": "2.75rem",
|
|
75830
|
-
"--spacing-12": "3rem",
|
|
75831
|
-
"--spacing-14": "3.5rem",
|
|
75832
|
-
"--spacing-16": `${((_e3 = theme2.space) == null ? void 0 : _e3[5]) || 64}px`,
|
|
75833
|
-
// Our custom variables for content styling (used in mdx-editor-theme.css)
|
|
75834
|
-
"--mdx-editor-bg": background2,
|
|
75835
|
-
"--mdx-editor-fg": textColor,
|
|
75836
|
-
"--mdx-editor-border": border,
|
|
75837
|
-
"--mdx-editor-table-border": accentColor,
|
|
75838
|
-
"--mdx-editor-toolbar-bg": backgroundSecondary,
|
|
75839
|
-
"--mdx-editor-code-bg": backgroundTertiary,
|
|
75840
|
-
"--mdx-editor-selection-bg": hexToRgba(primaryColor, 0.2),
|
|
75841
|
-
"--mdx-editor-link-color": primaryColor,
|
|
75842
|
-
"--mdx-editor-heading-color": textColor,
|
|
75843
|
-
"--mdx-editor-font-family": ((_f2 = theme2.fonts) == null ? void 0 : _f2.monospace) || "monospace",
|
|
75844
|
-
"--mdx-editor-font-size": `${((_g = theme2.fontSizes) == null ? void 0 : _g[2]) || 14}px`,
|
|
75845
|
-
// Document padding CSS variables
|
|
75846
|
-
"--mdx-editor-padding-top": paddingStyles.paddingTop || paddingStyles.padding || "0",
|
|
75847
|
-
"--mdx-editor-padding-right": paddingStyles.paddingRight || paddingStyles.padding || "0",
|
|
75848
|
-
"--mdx-editor-padding-bottom": paddingStyles.paddingBottom || paddingStyles.padding || "0",
|
|
75849
|
-
"--mdx-editor-padding-left": paddingStyles.paddingLeft || paddingStyles.padding || "0",
|
|
75850
|
-
...containerStyle
|
|
75851
|
-
};
|
|
75852
|
-
}, [theme2, containerStyle, documentPadding]);
|
|
75853
|
-
useEffect(() => {
|
|
75854
|
-
const root2 = document.documentElement;
|
|
75855
|
-
const styles2 = editorStyles;
|
|
75856
|
-
const originalValues = {};
|
|
75857
|
-
Object.entries(styles2).forEach(([key, value2]) => {
|
|
75858
|
-
if (key.startsWith("--")) {
|
|
75859
|
-
originalValues[key] = root2.style.getPropertyValue(key);
|
|
75860
|
-
root2.style.setProperty(key, String(value2));
|
|
75861
|
-
}
|
|
75862
|
-
});
|
|
75863
|
-
return () => {
|
|
75864
|
-
Object.entries(originalValues).forEach(([key, value2]) => {
|
|
75865
|
-
if (value2) {
|
|
75866
|
-
root2.style.setProperty(key, value2);
|
|
75867
|
-
} else {
|
|
75868
|
-
root2.style.removeProperty(key);
|
|
75869
|
-
}
|
|
75870
|
-
});
|
|
75871
|
-
};
|
|
75872
|
-
}, [editorStyles]);
|
|
75873
|
-
if (!isMounted || isLoading) {
|
|
75874
|
-
const loading = loadingComponent || /* @__PURE__ */ jsx$1(
|
|
75875
|
-
"div",
|
|
75876
|
-
{
|
|
75877
|
-
style: {
|
|
75878
|
-
display: "flex",
|
|
75879
|
-
alignItems: "center",
|
|
75880
|
-
justifyContent: "center",
|
|
75881
|
-
height: "100%",
|
|
75882
|
-
color: theme2.colors.textSecondary,
|
|
75883
|
-
fontFamily: ((_a2 = theme2.fonts) == null ? void 0 : _a2.body) || "system-ui"
|
|
75884
|
-
},
|
|
75885
|
-
children: "Loading editor..."
|
|
75886
|
-
}
|
|
75887
|
-
);
|
|
75888
|
-
return /* @__PURE__ */ jsx$1("div", { style: { height: "100%", ...containerStyle }, children: loading });
|
|
75889
|
-
}
|
|
75890
|
-
return /* @__PURE__ */ jsxs(
|
|
75891
|
-
"div",
|
|
75892
|
-
{
|
|
75893
|
-
className: `themed-mdx-editor ${containerClassName}`.trim(),
|
|
75894
|
-
style: {
|
|
75895
|
-
display: "flex",
|
|
75896
|
-
flexDirection: "column",
|
|
75897
|
-
height: "100%",
|
|
75898
|
-
backgroundColor: theme2.colors.background,
|
|
75899
|
-
color: theme2.colors.text,
|
|
75900
|
-
fontFamily: ((_b = theme2.fonts) == null ? void 0 : _b.body) || "system-ui",
|
|
75901
|
-
...editorStyles
|
|
75902
|
-
},
|
|
75903
|
-
children: [
|
|
75904
|
-
/* @__PURE__ */ jsx$1("div", { style: { flex: 1, overflow: "auto" }, children: /* @__PURE__ */ jsx$1(
|
|
75905
|
-
MDXEditor,
|
|
75906
|
-
{
|
|
75907
|
-
ref: editorRef,
|
|
75908
|
-
markdown: processedMarkdown,
|
|
75909
|
-
onChange: handleChange,
|
|
75910
|
-
contentEditableClassName: "mdx-editor-content",
|
|
75911
|
-
...restEditorProps
|
|
75912
|
-
}
|
|
75913
|
-
) }),
|
|
75914
|
-
!hideStatusBar && /* @__PURE__ */ jsxs(
|
|
75915
|
-
"div",
|
|
75916
|
-
{
|
|
75917
|
-
style: {
|
|
75918
|
-
display: "flex",
|
|
75919
|
-
alignItems: "center",
|
|
75920
|
-
gap: "8px",
|
|
75921
|
-
padding: "4px 12px",
|
|
75922
|
-
backgroundColor: theme2.colors.backgroundSecondary,
|
|
75923
|
-
color: theme2.colors.text,
|
|
75924
|
-
fontFamily: ((_c = theme2.fonts) == null ? void 0 : _c.monospace) || "monospace",
|
|
75925
|
-
fontSize: ((_d = theme2.fontSizes) == null ? void 0 : _d[1]) || 12,
|
|
75926
|
-
borderTop: `1px solid ${theme2.colors.border}`
|
|
75927
|
-
},
|
|
75928
|
-
children: [
|
|
75929
|
-
/* @__PURE__ */ jsx$1("div", { style: { flex: 1 }, children: filePath && /* @__PURE__ */ jsx$1(
|
|
75930
|
-
"span",
|
|
75931
|
-
{
|
|
75932
|
-
style: {
|
|
75933
|
-
color: theme2.colors.textSecondary,
|
|
75934
|
-
fontSize: ((_e2 = theme2.fontSizes) == null ? void 0 : _e2[0]) || 11
|
|
75935
|
-
},
|
|
75936
|
-
children: filePath
|
|
75937
|
-
}
|
|
75938
|
-
) }),
|
|
75939
|
-
/* @__PURE__ */ jsx$1(
|
|
75940
|
-
"div",
|
|
75941
|
-
{
|
|
75942
|
-
style: {
|
|
75943
|
-
padding: "2px 8px",
|
|
75944
|
-
borderRadius: 4,
|
|
75945
|
-
border: `1px solid ${isDirty ? theme2.colors.warning : theme2.colors.border}`,
|
|
75946
|
-
backgroundColor: isDirty ? theme2.colors.backgroundTertiary || theme2.colors.backgroundSecondary : theme2.colors.background,
|
|
75947
|
-
color: isDirty ? theme2.colors.warning : theme2.colors.textSecondary,
|
|
75948
|
-
fontWeight: 600,
|
|
75949
|
-
fontSize: ((_f = theme2.fontSizes) == null ? void 0 : _f[0]) || 11
|
|
75950
|
-
},
|
|
75951
|
-
children: isDirty ? "Modified" : "Saved"
|
|
75952
|
-
}
|
|
75953
|
-
)
|
|
75954
|
-
]
|
|
75955
|
-
}
|
|
75956
|
-
)
|
|
75957
|
-
]
|
|
75958
|
-
}
|
|
75959
|
-
);
|
|
75960
|
-
});
|
|
75961
|
-
ThemedMDXEditor.displayName = "ThemedMDXEditor";
|
|
75962
|
-
var ThemedMDXEditorWithProvider = React__default__default.forwardRef((props, ref) => {
|
|
75963
|
-
const { theme: theme2 } = useTheme();
|
|
75964
|
-
return /* @__PURE__ */ jsx$1(ThemedMDXEditor, { ref, theme: theme2, ...props });
|
|
75965
|
-
});
|
|
75966
|
-
ThemedMDXEditorWithProvider.displayName = "ThemedMDXEditorWithProvider";
|
|
75967
75685
|
const MDXEditorPanelContent = ({
|
|
75968
75686
|
context,
|
|
75969
75687
|
actions: _actions,
|
|
@@ -76062,6 +75780,31 @@ const MDXEditorPanelContent = ({
|
|
|
76062
75780
|
});
|
|
76063
75781
|
return unsubscribe;
|
|
76064
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
|
+
);
|
|
76065
75808
|
useEffect(() => {
|
|
76066
75809
|
const loadFileContent = async () => {
|
|
76067
75810
|
if (!filePath || !(fileSystem == null ? void 0 : fileSystem.readFile)) {
|
|
@@ -76090,30 +75833,17 @@ const MDXEditorPanelContent = ({
|
|
|
76090
75833
|
};
|
|
76091
75834
|
loadFileContent();
|
|
76092
75835
|
}, [filePath, fileSystem]);
|
|
76093
|
-
|
|
76094
|
-
|
|
76095
|
-
|
|
76096
|
-
|
|
76097
|
-
|
|
76098
|
-
|
|
76099
|
-
const contentToSave = content2 || markdown2;
|
|
76100
|
-
if (filePath && (fileSystem == null ? void 0 : fileSystem.writeFile)) {
|
|
76101
|
-
try {
|
|
76102
|
-
await fileSystem.writeFile(filePath, contentToSave);
|
|
76103
|
-
setIsDirty(false);
|
|
76104
|
-
events.emit({
|
|
76105
|
-
type: "file:save",
|
|
76106
|
-
source: "industry-theme.mdx-editor",
|
|
76107
|
-
timestamp: Date.now(),
|
|
76108
|
-
payload: { path: filePath }
|
|
76109
|
-
});
|
|
76110
|
-
} catch (error) {
|
|
76111
|
-
console.error("Error saving file:", error);
|
|
76112
|
-
}
|
|
75836
|
+
useEffect(() => {
|
|
75837
|
+
if (!isEditable) return;
|
|
75838
|
+
const handleKeyDown = (e2) => {
|
|
75839
|
+
if ((e2.metaKey || e2.ctrlKey) && e2.key === "s") {
|
|
75840
|
+
e2.preventDefault();
|
|
75841
|
+
handleSave();
|
|
76113
75842
|
}
|
|
76114
|
-
}
|
|
76115
|
-
|
|
76116
|
-
|
|
75843
|
+
};
|
|
75844
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
75845
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
75846
|
+
}, [isEditable, handleSave]);
|
|
76117
75847
|
if (!isMounted) {
|
|
76118
75848
|
return /* @__PURE__ */ jsx$1(
|
|
76119
75849
|
"div",
|
|
@@ -76221,29 +75951,12 @@ const MDXEditorPanelContent = ({
|
|
|
76221
75951
|
width: "100%"
|
|
76222
75952
|
},
|
|
76223
75953
|
children: /* @__PURE__ */ jsx$1(
|
|
76224
|
-
|
|
75954
|
+
ThemedMDXEditor,
|
|
76225
75955
|
{
|
|
76226
75956
|
markdown: safeMarkdown,
|
|
76227
|
-
onSave: async (content2) => {
|
|
76228
|
-
await handleSave(content2);
|
|
76229
|
-
},
|
|
76230
75957
|
onChange: handleChange,
|
|
76231
|
-
onDirtyChange: setIsDirty,
|
|
76232
75958
|
readOnly: !isEditable,
|
|
76233
|
-
|
|
76234
|
-
enableSaveShortcut: isEditable,
|
|
76235
|
-
hideStatusBar: false,
|
|
76236
|
-
documentPadding: { left: 32, right: 32, top: 0, bottom: 32 },
|
|
76237
|
-
onError: (error) => {
|
|
76238
|
-
console.error("MDXEditor parsing error:", error);
|
|
76239
|
-
setTimeout(() => {
|
|
76240
|
-
if (error && typeof error === "object" && "message" in error) {
|
|
76241
|
-
setParseError(String(error.message));
|
|
76242
|
-
} else {
|
|
76243
|
-
setParseError("Markdown parsing error");
|
|
76244
|
-
}
|
|
76245
|
-
}, 0);
|
|
76246
|
-
},
|
|
75959
|
+
contentEditableClassName: "prose",
|
|
76247
75960
|
plugins
|
|
76248
75961
|
},
|
|
76249
75962
|
filePath || "default"
|
|
@@ -76561,4 +76274,4 @@ export {
|
|
|
76561
76274
|
onPackageUnload as y,
|
|
76562
76275
|
fileEditingPanelTools as z
|
|
76563
76276
|
};
|
|
76564
|
-
//# sourceMappingURL=index-
|
|
76277
|
+
//# sourceMappingURL=index-TGeUE9Er.js.map
|