@alauda/react-code-editor 0.1.0-next.20260903.1788425608 → 0.1.0-next.20261021.1792553055

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeEditor-DhYaoBaC.js","names":[],"sources":["../../../src/icons/CodeEditorIcon.tsx","../../../src/monacoEnvironment.ts","../../../src/runtime/runtimeState.ts","../../../src/runtime/loadMonaco.ts","../../../src/runtime/modelOwnership.ts","../../../src/themeAppearance.ts","../../../src/CodeEditor.tsx"],"sourcesContent":["import type { SvgIconProps } from '@mui/material';\nimport { SvgIcon } from '@mui/material';\nimport type { ReactElement } from 'react';\n\n/**\n * Minimal AUI icon subset used by the Angular-compatible Code Editor toolbar.\n *\n * AUI paths are extracted from @alauda/ui@10.0.1 (MIT), source commit\n * 7453f1274bb2f4e7f9ca34481ba788b1ec84d8c7. The rollback path is extracted\n * from Angular Console's prod-icons.js at pinned source commit\n * 46ec7ae9f48d95db84d7d1207c2d8199ff18a7cb.\n * This module intentionally has no Angular runtime dependency.\n */\nexport const codeEditorIconPaths = {\n file_import: {\n source: \"aui:file_import\",\n paths: [\n \"M723.2 64h1.92a76.8 76.8 0 0 1 74.88 74.88V307.2h-76.8V140.8H384V384H140.8v499.2h582.4v-64h76.8v65.92A76.8 76.8 0 0 1 725.12 960H138.88a76.8 76.8 0 0 1-73.472-62.08L65.088 896H64V307.2L307.2 64h416zM640 384l54.336 54.336L607.808 524.8H960v76.8H607.808l86.528 86.528L640 742.4 460.8 563.2 640 384zM313.6 172.608L172.608 313.6H313.6V172.608z\",\n ],\n },\n file_export: {\n source: \"aui:file_export\",\n paths: [\n \"M723.2 64h1.92a76.8 76.8 0 0 1 74.88 74.88V307.2h-76.8V140.8H384V384H140.8v499.2h582.4v-64h76.8v65.92A76.8 76.8 0 0 1 725.12 960H138.88a76.8 76.8 0 0 1-73.472-62.08L65.088 896H64V307.2L307.2 64h416z m57.6 320L960 563.2l-179.2 179.2-54.336-54.272L812.992 601.6H460.8V524.8h352.192L726.4 438.4 780.8 384zM313.6 172.608L172.608 313.6H313.6V172.608z\",\n ],\n },\n xmark_circle: {\n source: \"aui:xmark_circle\",\n paths: [\n \"M512 0a512 512 0 1 1 0 1024A512 512 0 0 1 512 0z m0 71.424a440.576 440.576 0 1 0 0 881.152A440.576 440.576 0 0 0 512 71.424z m134.72 238.528l67.328 67.328L579.328 512l134.72 134.72-67.328 67.328L512 579.328l-134.72 134.72-67.328-67.328L444.672 512 309.952 377.28l67.328-67.328L512 444.672l134.72-134.72z\",\n ],\n },\n magnifier: {\n source: \"aui:magnifier\",\n paths: [\n \"M499.2 70.4a428.8 428.8 0 0 1 335.296 696.128L1011.2 943.36 943.36 1011.2l-176.832-176.704A428.8 428.8 0 1 1 499.2 70.4z m0 96a332.8 332.8 0 1 0 0 665.6 332.8 332.8 0 0 0 0-665.6z\",\n ],\n },\n copy: {\n source: \"aui:copy\",\n paths: [\n \"M524.8 192L768 435.2v512a76.8 76.8 0 0 1-74.88 76.8H140.8A76.8 76.8 0 0 1 64 947.2V266.88A76.8 76.8 0 0 1 138.88 192H524.8zM448 435.2V268.8H140.8v678.4h550.4V512H524.8A76.8 76.8 0 0 1 448 435.2zM716.8 0L960 243.2v513.92A76.8 76.8 0 0 1 885.12 832h-40.32v-76.8h38.4V275.008L684.992 76.8H332.8v38.4H256v-40.32A76.8 76.8 0 0 1 330.88 0h385.92z m-192 300.608V435.2h134.592L524.8 300.608z\",\n ],\n },\n computer: {\n source: \"aui:computer\",\n paths: [\n \"M883.2 102.4A76.8 76.8 0 0 1 960 179.2v486.4a76.8 76.8 0 0 1-76.8 76.8H550.4v102.4H473.6v-102.4H140.8A76.8 76.8 0 0 1 64 665.6V179.2a76.8 76.8 0 0 1 76.8-76.8h742.4z m0 76.8H140.8v486.4h742.4V179.2zM256 844.8h512v76.8H256v-76.8z\",\n ],\n },\n sun: {\n source: \"aui:sun\",\n paths: [\n \"M556.8 870.4V1024H467.2v-153.6h89.6z m-329.92-136.64l63.36 63.36-108.608 108.608-63.36-63.36 108.608-108.608z m570.24 0l108.608 108.608-63.36 63.36-108.608-108.608 63.36-63.36zM512 230.4a281.6 281.6 0 1 1 0 563.2 281.6 281.6 0 0 1 0-563.2z m0 96a185.6 185.6 0 1 0 0 371.2 185.6 185.6 0 0 0 0-371.2z m512 140.8v89.6h-153.6V467.2H1024z m-870.4 0v89.6H0V467.2h153.6z m688.768-348.928l63.36 63.36-108.608 108.608-63.36-63.36 108.608-108.608z m-660.736 0l108.608 108.608-63.36 63.36-108.608-108.608 63.36-63.36zM556.8 0v153.6H467.2V0h89.6z\",\n ],\n },\n moon: {\n source: \"aui:moon\",\n paths: [\n \"M470.4 64a60.16 60.16 0 0 1 25.216 5.76c8.448 3.904 14.72 9.344 18.944 16.384 4.928 9.152 6.528 17.92 4.736 26.432a74.24 74.24 0 0 1-8.96 23.168 268.096 268.096 0 0 0-46.336 98.176 272.64 272.64 0 0 0 31.616 200.512c18.24 30.272 42.496 56.64 72.64 79.168a262.528 262.528 0 0 0 160.064 54.848c28.096 0 55.808-4.544 83.2-13.696a248.768 248.768 0 0 0 75.84-41.152 38.592 38.592 0 0 1 25.28-10.048 41.152 41.152 0 0 1 22.784 4.928l1.408 0.896c7.04 4.224 12.608 10.368 16.832 18.432 4.224 8.128 6.336 15.36 6.336 21.632a508.224 508.224 0 0 1-17.92 88.704c-8.384 28.8-19.456 56.064-33.152 81.792a496.128 496.128 0 0 1-47.936 73.344 448.256 448.256 0 0 1-63.168 63.296 451.2 451.2 0 0 1-281.92 103.36L510.336 960H470.4a427.136 427.136 0 0 1-170.56-51.712 458.048 458.048 0 0 1-132.672-109.76 454.592 454.592 0 0 1-82.176-152 438.784 438.784 0 0 1-19.392-171.648l0.448-5.632a427.008 427.008 0 0 1 40-151.936 442.24 442.24 0 0 1 87.424-125.632A441.152 441.152 0 0 1 318.72 104.128 424.576 424.576 0 0 1 470.4 64zM389.504 171.648l-1.92 0.64a330.176 330.176 0 0 0-30.72 12.8 351.616 351.616 0 0 0-100.096 69.888A353.536 353.536 0 0 0 186.88 355.84a336.256 336.256 0 0 0-31.168 115.392l-0.512 6.144c-4.48 49.984 0.512 96.896 15.04 141.824a365.12 365.12 0 0 0 65.984 122.368 368.512 368.512 0 0 0 107.008 88.384 336.384 336.384 0 0 0 130.304 40.32l1.216 0.128h35.584c40 0 78.912-6.464 117.184-19.456l4.992-1.728a353.28 353.28 0 0 0 108.288-61.76c17.856-14.72 33.6-30.208 47.232-46.528l2.944-3.584 3.328-4.288c12.16-16 23.104-32.64 32.704-50.048l2.88-5.248c6.592-12.416 12.48-25.408 17.6-39.04l0.704-1.92-3.648 1.28-4.608 1.664a350.528 350.528 0 0 1-321.984-51.84l-7.296-5.568a366.08 366.08 0 0 1-89.216-97.472l-2.56-4.16-0.448-0.768a362.24 362.24 0 0 1-42.88-260.544l1.024-5.12 0.32-1.28c3.072-12.928 6.912-25.664 11.456-38.144l1.216-3.2z\",\n ],\n },\n expand: {\n source: \"aui:expand\",\n paths: [\n \"M960 640v243.2a76.8 76.8 0 0 1-74.88 76.8H640v-76.8h243.2V640H960zM387.264 576l54.336 54.336-250.624 250.624h195.264v76.8h-320v-320h76.8v182.464L387.264 576zM960 64v320h-76.8V201.472L638.976 445.76l-54.336-54.336L835.264 140.8H640V64h320zM384 64v76.8H140.8V384H64V140.8A76.8 76.8 0 0 1 138.88 64H384z\",\n ],\n },\n compress: {\n source: \"aui:compress\",\n paths: [\n \"M960 640v243.2a76.8 76.8 0 0 1-74.88 76.8H640v-76.8h243.2V640H960zM460.8 563.2v320H384v-179.84l-243.2 243.2-63.36-63.36 243.2-243.2H140.8V563.2h320z m422.4-485.76l63.36 63.36-243.2 243.2h179.84v76.8h-320v-320H640v179.84l243.2-243.2zM384 64v76.8H140.8V384H64V140.8A76.8 76.8 0 0 1 138.88 64H384z\",\n ],\n },\n rollback: {\n source: \"prod:rollback\",\n paths: [\n \"M505.728 25.6C777.728 25.6 998.4 243.2 998.4 512c0 268.8-220.672 486.4-492.672 486.4-192.256 0-364.416-109.76-445.312-278.08l-2.432-5.12 69.568-32.448C194.88 827.072 341.504 921.6 505.728 921.6c229.76 0 415.872-183.488 415.872-409.6 0-226.112-186.048-409.6-415.872-409.6a417.6 417.6 0 0 0-354.816 195.712L268.8 416H0V147.2l95.36 95.36A494.656 494.656 0 0 1 505.728 25.6zM588.8 268.8v332.8h-192V524.8H512v-256h76.8z\",\n ],\n },\n} as const;\n\nexport type CodeEditorIconName = keyof typeof codeEditorIconPaths;\n\nexport interface CodeEditorIconProps extends Omit<SvgIconProps, 'children' | 'viewBox'> {\n readonly name: CodeEditorIconName;\n}\n\nexport function CodeEditorIcon({ name, ...props }: CodeEditorIconProps): ReactElement {\n const icon = codeEditorIconPaths[name];\n return (\n <SvgIcon\n {...props}\n sx={{ width: 14, height: 14, ...props.sx }}\n viewBox=\"0 0 1024 1024\"\n data-aui-icon={icon.source}\n >\n {icon.paths.map(path => <path key={path} d={path} />)}\n </SvgIcon>\n );\n}\n","declare global {\n interface Window {\n MonacoEnvironment: {\n getWorker: (_moduleId: string, label: string) => Worker;\n };\n }\n}\n\nexport function configureMonacoEnvironment(): void {\n if (typeof window === 'undefined') return;\n const existing = Reflect.get(window, 'MonacoEnvironment') as\n | { readonly getWorker?: unknown }\n | undefined;\n if (typeof existing?.getWorker === 'function') return;\n\n window.MonacoEnvironment = {\n getWorker: (_moduleId, label) => {\n if (label === 'yaml') {\n return new Worker(\n new URL('./yaml/yaml.worker.js', import.meta.url),\n { type: 'module' },\n );\n }\n if (label === 'json') {\n return new Worker(new URL(\n 'monaco-editor/esm/vs/language/json/json.worker.js',\n import.meta.url,\n ), { type: 'module' });\n }\n return new Worker(new URL(\n 'monaco-editor/esm/vs/editor/editor.worker.js',\n import.meta.url,\n ), { type: 'module' });\n },\n };\n}\n","import type * as Monaco from 'monaco-editor/esm/vs/editor/editor.main.js';\n\nexport interface SharedCodeEditorRuntimeState {\n monaco?: typeof Monaco;\n monacoPromise?: Promise<typeof Monaco>;\n models?: Map<string, unknown>;\n yaml?: unknown;\n}\n\nconst runtimeKey = Symbol.for('alauda.react-code-editor.runtime');\n\nexport function getSharedRuntimeState(): SharedCodeEditorRuntimeState {\n const target = globalThis as typeof globalThis & {\n [runtimeKey]?: SharedCodeEditorRuntimeState;\n };\n target[runtimeKey] ??= {};\n return target[runtimeKey];\n}\n","import { loader } from '@monaco-editor/react';\nimport type * as Monaco from 'monaco-editor/esm/vs/editor/editor.main.js';\n\nimport { configureMonacoEnvironment } from '../monacoEnvironment';\nimport { getSharedRuntimeState } from './runtimeState';\n\nexport function loadMonacoRuntime(): Promise<typeof Monaco> {\n const runtime = getSharedRuntimeState();\n if (runtime.monacoPromise) return runtime.monacoPromise;\n const promise = (async () => {\n configureMonacoEnvironment();\n const monaco = await import(\n 'monaco-editor/esm/vs/editor/editor.main.js'\n );\n loader.config({ monaco });\n runtime.monaco = monaco;\n return monaco;\n })();\n runtime.monacoPromise = promise;\n void promise.catch(() => {\n if (runtime.monacoPromise === promise) runtime.monacoPromise = undefined;\n });\n return promise;\n}\n","import type * as Monaco from 'monaco-editor/esm/vs/editor/editor.main.js';\n\nimport { getSharedRuntimeState } from './runtimeState';\n\ninterface ModelOwnership {\n readonly language: string;\n readonly owners: Set<string>;\n readonly uri: Monaco.Uri;\n readonly ownedByPackage: boolean;\n}\n\nfunction ownershipRegistry(): Map<string, ModelOwnership> {\n const runtime = getSharedRuntimeState();\n runtime.models ??= new Map();\n return runtime.models as Map<string, ModelOwnership>;\n}\n\nexport function acquireModelOwnership(\n monaco: typeof Monaco,\n ownerId: string,\n modelPath: string,\n language: string,\n): () => void {\n const registry = ownershipRegistry();\n const existing = registry.get(modelPath);\n if (existing && existing.language !== language) {\n throw new Error(\n `Conflicting editor languages for ${modelPath}: `\n + `${existing.language} and ${language}`,\n );\n }\n\n const ownership = existing ?? (() => {\n const uri = monaco.Uri.parse(modelPath);\n return {\n language,\n owners: new Set<string>(),\n uri,\n ownedByPackage: !monaco.editor.getModel(uri),\n } satisfies ModelOwnership;\n })();\n ownership.owners.add(ownerId);\n registry.set(modelPath, ownership);\n\n let active = true;\n return () => {\n if (!active) return;\n active = false;\n ownership.owners.delete(ownerId);\n if (ownership.owners.size > 0) return;\n registry.delete(modelPath);\n if (ownership.ownedByPackage) {\n monaco.editor.getModel(ownership.uri)?.dispose();\n }\n };\n}\n","import { useSyncExternalStore } from 'react';\nimport { useTheme, type PaletteMode } from '@mui/material/styles';\n\nexport type CodeEditorThemeMode = PaletteMode;\nexport type HostThemeSelection = 'light' | 'dark' | 'system';\n\nconst systemDarkQuery = '(prefers-color-scheme: dark)';\n\nfunction hostThemeSelection(): HostThemeSelection | undefined {\n if (typeof document === 'undefined') return undefined;\n const value = document.documentElement.dataset.auiThemeMode;\n return value === 'light' || value === 'dark' || value === 'system'\n ? value\n : undefined;\n}\n\nfunction prefersDark(): boolean {\n return typeof window !== 'undefined'\n && typeof window.matchMedia === 'function'\n && window.matchMedia(systemDarkQuery).matches;\n}\n\nexport function resolveCodeEditorThemeMode(\n selection: HostThemeSelection | undefined,\n fallback: PaletteMode,\n systemPrefersDark: boolean,\n): CodeEditorThemeMode {\n if (selection === 'dark') return 'dark';\n if (selection === 'light') return 'light';\n if (selection === 'system') return systemPrefersDark ? 'dark' : 'light';\n return fallback;\n}\n\nfunction readEffectiveThemeMode(fallback: PaletteMode): CodeEditorThemeMode {\n return resolveCodeEditorThemeMode(hostThemeSelection(), fallback, prefersDark());\n}\n\nfunction subscribeToThemeAppearance(listener: () => void): () => void {\n if (typeof document === 'undefined') return () => undefined;\n\n const root = document.documentElement;\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(records => {\n if (records.some(record => record.attributeName === 'data-aui-theme-mode')) {\n listener();\n }\n });\n observer?.observe(root, { attributes: true, attributeFilter: ['data-aui-theme-mode'] });\n\n const mediaQuery = typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n ? window.matchMedia(systemDarkQuery)\n : undefined;\n const mediaListener = () => listener();\n mediaQuery?.addEventListener('change', mediaListener);\n\n return () => {\n observer?.disconnect();\n mediaQuery?.removeEventListener('change', mediaListener);\n };\n}\n\n/**\n * Reads the Host's CSS-backed appearance while retaining MUI compatibility for\n * standalone consumers that do not publish data-aui-theme-mode.\n */\nexport function useCodeEditorThemeMode(): CodeEditorThemeMode {\n const theme = useTheme();\n const fallback = theme.palette.mode;\n return useSyncExternalStore(\n subscribeToThemeAppearance,\n () => readEffectiveThemeMode(fallback),\n () => fallback,\n );\n}\n","import Editor, { DiffEditor, type OnMount } from '@monaco-editor/react';\nimport Alert from '@mui/material/Alert';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Tooltip from '@mui/material/Tooltip';\nimport FormatAlignLeftRoundedIcon from '@mui/icons-material/FormatAlignLeftRounded';\nimport RedoRoundedIcon from '@mui/icons-material/RedoRounded';\nimport UndoRoundedIcon from '@mui/icons-material/UndoRounded';\nimport { CodeEditorIcon } from './icons/CodeEditorIcon';\nimport { useTheme } from '@mui/material/styles';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from 'react';\nimport type * as Monaco from 'monaco-editor/esm/vs/editor/editor.main.js';\n\nimport { loadMonacoRuntime } from './runtime/loadMonaco';\nimport { acquireModelOwnership } from './runtime/modelOwnership';\nimport { useCodeEditorThemeMode } from './themeAppearance';\n\nexport type CodeEditorLanguage =\n | 'json'\n | 'markdown'\n | 'plaintext'\n | 'yaml';\n\nexport type CodeEditorAction =\n | 'copy'\n | 'clear'\n | 'export'\n | 'find'\n | 'format'\n | 'fullscreen'\n | 'import'\n | 'recover'\n | 'redo'\n | 'theme'\n | 'undo';\n\nexport type CodeEditorThemeMode = 'system' | 'light' | 'dark';\nexport type CodeEditorActionPreset = 'create' | 'view' | 'update' | 'logs';\n\nexport const codeEditorActionPresets: Record<CodeEditorActionPreset, readonly CodeEditorAction[]> = {\n create: ['import', 'export', 'clear', 'find', 'copy', 'theme', 'fullscreen'],\n view: ['export', 'find', 'copy', 'theme', 'fullscreen'],\n update: ['import', 'export', 'recover', 'clear', 'find', 'copy', 'theme', 'fullscreen'],\n logs: ['export', 'find', 'copy', 'theme', 'fullscreen'],\n};\n\nexport type CodeEditorDiagnosticSeverity =\n | 'error'\n | 'warning'\n | 'info'\n | 'hint';\n\nexport interface CodeEditorDiagnostic {\n readonly severity: CodeEditorDiagnosticSeverity;\n readonly message: string;\n readonly line: number;\n readonly column: number;\n readonly endLine: number;\n readonly endColumn: number;\n readonly code?: string;\n}\n\nexport interface CodeEditorLabels {\n readonly copy: string;\n readonly copied: string;\n readonly copyFailed: string;\n readonly clear?: string;\n readonly export?: string;\n readonly find: string;\n readonly format: string;\n readonly fullscreen: string;\n readonly exitFullscreen: string;\n readonly import?: string;\n readonly importFailed?: string;\n readonly recover?: string;\n readonly theme?: string;\n readonly themeSystem?: string;\n readonly themeLight?: string;\n readonly themeDark?: string;\n readonly undo: string;\n readonly redo: string;\n readonly loading: string;\n readonly valid: string;\n readonly errors: (count: number) => string;\n readonly lineColumn: (line: number, column: number) => string;\n}\n\nexport interface CodeEditorHandle {\n focus(): void;\n find(): Promise<void>;\n format(): Promise<void>;\n undo(): void;\n redo(): void;\n validate(): Promise<readonly CodeEditorDiagnostic[]>;\n}\n\nexport interface CodeEditorProps {\n readonly value: string;\n readonly onChange: (value: string) => void;\n readonly onBlur?: () => void;\n readonly language: CodeEditorLanguage;\n readonly modelPath: string;\n readonly ariaLabel: string;\n readonly readOnly?: boolean;\n readonly disabled?: boolean;\n readonly height?: number | string;\n /** Show Monaco's code overview without changing the default for existing consumers. */\n readonly minimap?: boolean;\n readonly actions?: readonly CodeEditorAction[];\n readonly labels?: Partial<CodeEditorLabels>;\n readonly error?: string | null;\n readonly onDiagnostics?: (\n diagnostics: readonly CodeEditorDiagnostic[],\n ) => void;\n readonly originalValue?: string;\n /** Controlled comparison view; originalValue remains the consumer's baseline. */\n readonly diffMode?: boolean;\n readonly importAccept?: string;\n readonly exportFileName?: string;\n readonly onImportText?: (text: string, file: File) => void;\n readonly onExport?: (value: string) => void;\n readonly onRecover?: (originalValue: string) => void;\n readonly onClear?: () => void;\n readonly themeMode?: CodeEditorThemeMode;\n readonly onThemeModeChange?: (mode: CodeEditorThemeMode) => void;\n /** Reports package-owned fullscreen state changes to feature consumers. */\n readonly onFullscreenChange?: (fullscreen: boolean) => void;\n /** Feature-owned side panel rendered inside the editor surface. */\n readonly sidebar?: ReactNode;\n readonly toolbarStart?: ReactNode;\n /** Additional feature-owned controls rendered inside the editor toolbar. */\n readonly toolbarActions?: ReactNode;\n readonly toolbarEnd?: ReactNode;\n}\n\nconst defaultLabels: CodeEditorLabels = {\n copy: 'Copy',\n copied: 'Copied',\n copyFailed: 'Copy failed',\n clear: 'Clear',\n export: 'Export',\n find: 'Find',\n format: 'Format',\n fullscreen: 'Full Screen',\n exitFullscreen: 'Exit',\n import: 'Import',\n importFailed: 'Unable to read file',\n recover: 'Recover',\n theme: 'Theme',\n themeSystem: 'Auto',\n themeLight: 'Light',\n themeDark: 'Dark',\n undo: 'Undo',\n redo: 'Redo',\n loading: 'Loading editor',\n valid: 'Validation passed',\n errors: count => `${count} validation error${count === 1 ? '' : 's'}`,\n lineColumn: (line, column) => `Ln ${line}, Col ${column}`,\n};\n\nconst defaultActions: readonly CodeEditorAction[] = [\n 'find',\n 'copy',\n 'format',\n 'undo',\n 'redo',\n 'fullscreen',\n];\n\nconst exportFormats: Record<CodeEditorLanguage, { readonly mime: string; readonly extension: string }> = {\n json: { mime: 'application/json', extension: 'json' },\n markdown: { mime: 'text/markdown', extension: 'md' },\n plaintext: { mime: 'text/plain', extension: 'txt' },\n yaml: { mime: 'text/yaml', extension: 'yaml' },\n};\n\nfunction markerSeverity(\n marker: Monaco.editor.IMarker,\n monaco: typeof Monaco,\n): CodeEditorDiagnosticSeverity {\n if (marker.severity === monaco.MarkerSeverity.Error) return 'error';\n if (marker.severity === monaco.MarkerSeverity.Warning) return 'warning';\n if (marker.severity === monaco.MarkerSeverity.Info) return 'info';\n return 'hint';\n}\n\nfunction mapDiagnostics(\n markers: readonly Monaco.editor.IMarker[],\n monaco: typeof Monaco,\n): readonly CodeEditorDiagnostic[] {\n return markers.map(marker => ({\n severity: markerSeverity(marker, monaco),\n message: marker.message,\n line: marker.startLineNumber,\n column: marker.startColumn,\n endLine: marker.endLineNumber,\n endColumn: marker.endColumn,\n ...(marker.code === undefined ? {} : { code: String(marker.code) }),\n }));\n}\n\nexport const CodeEditor = forwardRef<CodeEditorHandle, CodeEditorProps>(\n function CodeEditor({\n value,\n onChange,\n onBlur,\n language,\n modelPath,\n ariaLabel,\n readOnly = false,\n disabled = false,\n height = 400,\n minimap = false,\n actions = defaultActions,\n labels: labelOverrides,\n error,\n onDiagnostics,\n originalValue,\n diffMode = false,\n importAccept,\n exportFileName,\n onImportText,\n onExport,\n onRecover,\n onClear,\n themeMode: controlledThemeMode,\n onThemeModeChange,\n onFullscreenChange,\n sidebar,\n toolbarStart,\n toolbarActions,\n toolbarEnd,\n }, ref) {\n const theme = useTheme();\n const appearanceMode = useCodeEditorThemeMode();\n const ownerId = useId();\n const editorRef = useRef<Monaco.editor.IStandaloneCodeEditor | null>(null);\n const disposablesRef = useRef<Monaco.IDisposable[]>([]);\n const diagnosticsRef = useRef<readonly CodeEditorDiagnostic[]>([]);\n const externalValueSyncRef = useRef(false);\n const pendingLocalValuesRef = useRef<string[]>([]);\n const modelPathRef = useRef(modelPath);\n const valueRef = useRef(value);\n const [monaco, setMonaco] = useState<typeof Monaco | null>(null);\n const [runtimeError, setRuntimeError] = useState<string>();\n const [copyState, setCopyState] = useState<'idle' | 'copied' | 'failed'>('idle');\n const [fullscreen, setFullscreen] = useState(false);\n const importRevision = useRef(0);\n const importTarget = useRef({ readOnly, disabled, modelPath, onImportText, onChange });\n importTarget.current = { readOnly, disabled, modelPath, onImportText, onChange };\n const [importError, setImportError] = useState(false);\n useEffect(() => {\n importRevision.current += 1;\n return () => { importRevision.current += 1; };\n }, [modelPath, readOnly, disabled, value]);\n const [themeMenuAnchor, setThemeMenuAnchor] = useState<HTMLElement | null>(null);\n const [localThemeMode, setLocalThemeMode] = useState<CodeEditorThemeMode>('system');\n const importInputRef = useRef<HTMLInputElement | null>(null);\n const themeButtonRef = useRef<HTMLButtonElement | null>(null);\n const selectedThemeMode = controlledThemeMode ?? localThemeMode;\n const resolvedTheme = selectedThemeMode === 'system' ? appearanceMode : selectedThemeMode;\n // Renderer-owned colors: scope local editor appearance to the code surface;\n // the consumer's sidebar continues to inherit the Host appearance.\n const editorColors = resolvedTheme === 'dark'\n ? { surface: '#181B27', content: '#242733', text: '#EEEFF3', secondary: '#C8C9CD', border: '#5C5F6B', hover: 'rgba(238,239,243,0.08)' }\n : { surface: '#F7F9FC', content: '#FFFFFF', text: '#323437', secondary: '#646669', border: '#D4D6D9', hover: 'rgba(50,52,55,0.04)' };\n const labels = { ...defaultLabels, ...labelOverrides };\n valueRef.current = value;\n\n const synchronizeExternalValue = useCallback((\n editor: Monaco.editor.IStandaloneCodeEditor,\n nextValue: string,\n ): void => {\n const model = editor.getModel();\n if (!model) return;\n\n const pending = pendingLocalValuesRef.current;\n const acknowledgedIndex = pending.lastIndexOf(nextValue);\n if (acknowledgedIndex >= 0) {\n pending.splice(0, acknowledgedIndex + 1);\n return;\n }\n if (model.getValue() === nextValue) return;\n\n pending.length = 0;\n const selections = editor.getSelections();\n const scrollPosition = {\n scrollLeft: editor.getScrollLeft(),\n scrollTop: editor.getScrollTop(),\n };\n externalValueSyncRef.current = true;\n try {\n editor.pushUndoStop();\n const applied = editor.executeEdits(\n 'alauda.react-code-editor.external-value',\n [{\n range: model.getFullModelRange(),\n text: nextValue,\n forceMoveMarkers: true,\n }],\n selections ?? undefined,\n );\n if (!applied) model.setValue(nextValue);\n editor.pushUndoStop();\n if (selections) editor.setSelections(selections);\n editor.setScrollPosition(scrollPosition);\n } finally {\n externalValueSyncRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n let active = true;\n let release: (() => void) | undefined;\n setMonaco(null);\n setRuntimeError(undefined);\n void loadMonacoRuntime()\n .then(instance => {\n if (!active) return;\n instance.editor.defineTheme('alauda-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: [],\n colors: { 'editor.background': '#242733', 'minimap.background': '#242733' },\n });\n release = acquireModelOwnership(\n instance,\n ownerId,\n modelPath,\n language,\n );\n if (active) setMonaco(instance);\n else release();\n })\n .catch(errorValue => {\n if (active) {\n setRuntimeError(\n errorValue instanceof Error\n ? errorValue.message\n : String(errorValue),\n );\n }\n });\n return () => {\n active = false;\n release?.();\n };\n }, [language, modelPath, ownerId]);\n\n useEffect(() => () => {\n disposablesRef.current.forEach(disposable => disposable.dispose());\n disposablesRef.current = [];\n editorRef.current = null;\n }, []);\n\n useEffect(() => {\n if (!monaco || !diffMode) return;\n return acquireModelOwnership(monaco, `${ownerId}:original`, `${modelPath}.original`, language);\n }, [diffMode, language, modelPath, monaco, ownerId]);\n\n useEffect(() => {\n if (modelPathRef.current !== modelPath) {\n modelPathRef.current = modelPath;\n pendingLocalValuesRef.current = [];\n }\n const editor = editorRef.current;\n if (editor) synchronizeExternalValue(editor, value);\n }, [modelPath, synchronizeExternalValue, value]);\n\n const find = async (): Promise<void> => {\n editorRef.current?.focus();\n await editorRef.current?.getAction('actions.find')?.run();\n };\n const format = async (): Promise<void> => {\n editorRef.current?.focus();\n await editorRef.current?.getAction('editor.action.formatDocument')?.run();\n };\n\n useImperativeHandle(ref, () => ({\n focus: () => editorRef.current?.focus(),\n find,\n format,\n undo: () => editorRef.current?.trigger('code-editor', 'undo', null),\n redo: () => editorRef.current?.trigger('code-editor', 'redo', null),\n validate: async () => diagnosticsRef.current,\n }));\n\n const onMount: OnMount = (editor, instance) => {\n editorRef.current = editor;\n synchronizeExternalValue(editor, valueRef.current);\n disposablesRef.current.forEach(disposable => disposable.dispose());\n disposablesRef.current = [\n editor.onDidBlurEditorText(() => onBlur?.()),\n ];\n // DiffEditor has no onValidate prop. Observe the modified model's markers\n // through the same diagnostics contract used by the single editor.\n if (instance.editor?.onDidChangeMarkers) {\n const publish = () => {\n const model = editor.getModel();\n if (!model) return;\n const diagnostics = mapDiagnostics(instance.editor.getModelMarkers({ resource: model.uri }), instance);\n diagnosticsRef.current = diagnostics;\n onDiagnostics?.(diagnostics);\n };\n disposablesRef.current.push(instance.editor.onDidChangeMarkers(uris => {\n const uri = editor.getModel()?.uri.toString();\n if (uris.some(changed => changed.toString() === uri)) publish();\n }));\n publish();\n }\n };\n\n const copy = async (): Promise<void> => {\n try {\n await navigator.clipboard.writeText(\n editorRef.current?.getModel()?.getValue() ?? valueRef.current,\n );\n setCopyState('copied');\n } catch {\n setCopyState('failed');\n }\n };\n\n const exportValue = (): void => {\n if (onExport) {\n onExport(valueRef.current);\n return;\n }\n const format = exportFormats[language];\n const basename = modelPath.split(/[?#]/)[0]?.split('/').at(-1) || 'document';\n const filename = exportFileName ?? (/\\.[^./]+$/.test(basename)\n ? basename\n : `${basename}.${format.extension}`);\n const blob = new Blob([valueRef.current], { type: `${format.mime};charset=utf-8` });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n link.click();\n URL.revokeObjectURL(url);\n };\n\n const importFile = (event: ChangeEvent<HTMLInputElement>): void => {\n const file = event.target.files?.[0];\n event.target.value = '';\n if (!file || readOnly || disabled) return;\n const revision = ++importRevision.current;\n const owner = modelPath;\n setImportError(false);\n void file.text().then(text => {\n const target = importTarget.current;\n if (revision !== importRevision.current || target.modelPath !== owner || target.readOnly || target.disabled) return;\n if (target.onImportText) target.onImportText(text, file);\n else target.onChange(text);\n }).catch(() => {\n if (revision === importRevision.current) setImportError(true);\n });\n };\n\n const runAction = (action: CodeEditorAction): void => {\n if (action === 'find') void find();\n if (action === 'copy') void copy();\n if (action === 'clear') {\n if (onClear) onClear();\n else onChange('');\n }\n if (action === 'export') exportValue();\n if (action === 'format') void format();\n if (action === 'undo') {\n editorRef.current?.trigger('code-editor', 'undo', null);\n }\n if (action === 'redo') {\n editorRef.current?.trigger('code-editor', 'redo', null);\n }\n if (action === 'fullscreen') {\n const next = !fullscreen;\n setFullscreen(next);\n onFullscreenChange?.(next);\n }\n if (action === 'import') importInputRef.current?.click();\n if (action === 'recover') {\n const nextValue = originalValue ?? '';\n if (onRecover) onRecover(nextValue);\n else onChange(nextValue);\n }\n if (action === 'theme') setThemeMenuAnchor(themeButtonRef.current);\n };\n\n const actionLabel = (action: CodeEditorAction): string => {\n if (action === 'copy' && copyState === 'copied') return labels.copied;\n if (action === 'copy' && copyState === 'failed') return labels.copyFailed;\n if (action === 'fullscreen' && fullscreen) return labels.exitFullscreen;\n return labels[action] ?? action;\n };\n\n const chooseTheme = (mode: CodeEditorThemeMode): void => {\n setLocalThemeMode(mode);\n onThemeModeChange?.(mode);\n setThemeMenuAnchor(null);\n };\n\n const actionIcon = (action: CodeEditorAction): ReactNode => {\n const size = { width: 14, height: 14 };\n if (action === 'clear') return <CodeEditorIcon name=\"xmark_circle\" sx={size} />;\n if (action === 'copy') return <CodeEditorIcon name=\"copy\" sx={size} />;\n if (action === 'export') return <CodeEditorIcon name=\"file_export\" sx={size} />;\n if (action === 'find') return <CodeEditorIcon name=\"magnifier\" sx={size} />;\n if (action === 'format') return <FormatAlignLeftRoundedIcon sx={size} />;\n if (action === 'fullscreen') return <CodeEditorIcon name={fullscreen ? 'compress' : 'expand'} sx={size} />;\n if (action === 'import') return <CodeEditorIcon name=\"file_import\" sx={size} />;\n if (action === 'recover') return <CodeEditorIcon name=\"rollback\" sx={size} />;\n if (action === 'redo') return <RedoRoundedIcon sx={size} />;\n if (action === 'theme') {\n if (selectedThemeMode === 'dark') return <CodeEditorIcon name=\"moon\" sx={size} />;\n if (selectedThemeMode === 'light') return <CodeEditorIcon name=\"sun\" sx={size} />;\n return <CodeEditorIcon name=\"computer\" sx={size} />;\n }\n return <UndoRoundedIcon sx={size} />;\n };\n\n if (runtimeError) {\n return <Alert severity=\"error\" role=\"alert\">{runtimeError}</Alert>;\n }\n\n if (!monaco) {\n return (\n <Box\n role=\"status\"\n aria-label={labels.loading}\n sx={{ display: 'grid', height, minHeight: 160, placeItems: 'center' }}\n >\n <CircularProgress aria-hidden=\"true\" />\n </Box>\n );\n }\n\n return (\n <Box\n role=\"region\"\n aria-label={`${ariaLabel} editor`}\n sx={{\n position: fullscreen ? 'fixed' : 'relative',\n inset: fullscreen ? 0 : undefined,\n zIndex: fullscreen ? theme.zIndex.modal : undefined,\n display: 'flex',\n flexDirection: sidebar ? 'row' : 'column',\n height: fullscreen ? '100dvh' : height,\n minHeight: 160,\n overflow: 'hidden',\n bgcolor: 'transparent',\n }}\n >\n <Box\n data-code-editor-appearance={resolvedTheme}\n sx={{\n display: 'flex',\n flex: sidebar ? '2 1 0%' : '1 1 auto',\n flexDirection: 'column',\n minWidth: 0,\n minHeight: 0,\n bgcolor: editorColors.surface,\n color: editorColors.text,\n padding: '0 12px 12px',\n border: 0,\n borderRadius: fullscreen ? 0 : 1,\n overflow: 'hidden',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexWrap: 'wrap',\n minHeight: 22,\n flexShrink: 0,\n px: 2,\n py: 3,\n '& .MuiIconButton-root, & .MuiCheckbox-root': { color: editorColors.secondary },\n '& .MuiCheckbox-root': { padding: '5px' },\n '& .MuiIconButton-root:hover': { bgcolor: editorColors.hover },\n '& .MuiFormControlLabel-root': { color: editorColors.text },\n }}\n >\n {toolbarStart}\n <Box sx={{ flex: 1 }} />\n {actions.filter(action => {\n if (readOnly && ['import', 'recover', 'clear', 'format', 'undo', 'redo'].includes(action)) return false;\n if (action === 'recover' && originalValue === undefined) return false;\n if (['export', 'find', 'copy', 'clear'].includes(action)) return Boolean(value);\n return true;\n }).map(action => (\n <Tooltip key={action} title={actionLabel(action)}>\n <span>\n <IconButton\n ref={action === 'theme' ? themeButtonRef : undefined}\n aria-label={actionLabel(action)}\n aria-pressed={action === 'fullscreen' ? fullscreen : undefined}\n disabled={disabled || (\n readOnly && ['format', 'undo', 'redo', 'clear', 'recover', 'import'].includes(action)\n )}\n size=\"small\"\n sx={{ width: 28, height: 28 }}\n onClick={() => runAction(action)}\n >\n {actionIcon(action)}\n </IconButton>\n </span>\n </Tooltip>\n ))}\n {toolbarEnd}\n {toolbarActions}\n </Box>\n {importError ? <Alert severity=\"error\" role=\"alert\">{labels.importFailed}</Alert> : null}\n <input\n ref={importInputRef}\n hidden\n type=\"file\"\n accept={importAccept}\n onChange={importFile}\n />\n <Menu\n anchorEl={themeMenuAnchor}\n open={Boolean(themeMenuAnchor)}\n onClose={() => setThemeMenuAnchor(null)}\n slotProps={{ paper: { sx: { bgcolor: editorColors.surface, color: editorColors.text } } }}\n >\n <MenuItem selected={selectedThemeMode === 'system'} onClick={() => chooseTheme('system')}><CodeEditorIcon name=\"computer\" sx={{ width: 14, height: 14, mr: 1 }} />{labels.themeSystem}</MenuItem>\n <MenuItem selected={selectedThemeMode === 'light'} onClick={() => chooseTheme('light')}><CodeEditorIcon name=\"sun\" sx={{ width: 14, height: 14, mr: 1 }} />{labels.themeLight}</MenuItem>\n <MenuItem selected={selectedThemeMode === 'dark'} onClick={() => chooseTheme('dark')}><CodeEditorIcon name=\"moon\" sx={{ width: 14, height: 14, mr: 1 }} />{labels.themeDark}</MenuItem>\n </Menu>\n {error ? <Alert severity=\"error\" role=\"alert\">{error}</Alert> : null}\n <Box sx={{ display: 'flex', flex: '1 1 auto', minHeight: 0, overflow: 'hidden', px: 0, pb: 0 }}>\n <Box sx={{ flex: '1 1 auto', minWidth: 0, minHeight: 0, overflow: 'hidden', border: 1, borderColor: error ? 'error.main' : editorColors.border, borderRadius: 1 }}>\n {diffMode ? <DiffEditor\n height=\"100%\"\n language={language}\n original={originalValue ?? ''}\n modified={value}\n originalModelPath={`${modelPath}.original`}\n modifiedModelPath={modelPath}\n theme={resolvedTheme === 'dark' ? 'alauda-dark' : 'vs'}\n keepCurrentOriginalModel\n keepCurrentModifiedModel\n onMount={(diffEditor, instance) => {\n const modified = diffEditor.getModifiedEditor();\n onMount(modified, instance);\n disposablesRef.current.push(modified.onDidChangeModelContent(() => {\n if (!externalValueSyncRef.current) onChange(modified.getValue());\n }));\n }}\n options={{\n ariaLabel,\n automaticLayout: true,\n originalEditable: false,\n readOnly: readOnly || disabled,\n renderSideBySide: true,\n scrollBeyondLastLine: false,\n minimap: { enabled: minimap },\n }}\n /> : <Editor\n height=\"100%\"\n language={language}\n path={modelPath}\n theme={resolvedTheme === 'dark' ? 'alauda-dark' : 'vs'}\n defaultValue={value}\n keepCurrentModel\n onMount={onMount}\n onChange={nextValue => {\n if (externalValueSyncRef.current) return;\n const normalized = nextValue ?? '';\n const pending = pendingLocalValuesRef.current;\n if (pending.at(-1) !== normalized) {\n pending.push(normalized);\n if (pending.length > 64) {\n pending.splice(0, pending.length - 64);\n }\n }\n onChange(normalized);\n }}\n onValidate={markers => {\n const diagnostics = mapDiagnostics(markers, monaco);\n diagnosticsRef.current = diagnostics;\n onDiagnostics?.(diagnostics);\n }}\n options={{\n ariaLabel,\n automaticLayout: true,\n bracketPairColorization: { enabled: true },\n folding: true,\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',\n fontSize: 13,\n formatOnPaste: true,\n insertSpaces: true,\n lineHeight: 22,\n minimap: { enabled: minimap },\n padding: { top: 12, bottom: 12 },\n readOnly: readOnly || disabled,\n renderValidationDecorations: 'on',\n scrollBeyondLastLine: false,\n tabSize: 2,\n }}\n />}\n </Box>\n </Box>\n </Box>\n {sidebar}\n </Box>\n );\n },\n);\n"],"mappings":"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"}