@industry-theme/file-editing-panels 0.2.4 → 0.3.0

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