From fc3d7ade112ab7bebac422510879bd3ea6488200 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 26 Jan 2025 23:05:17 +0100 Subject: [PATCH] remove uiw codemirror themes to fix site + todo: refactor themes to not use uiw package --- packages/codemirror/codemirror.mjs | 2 +- packages/codemirror/index.mjs | 2 +- packages/codemirror/package.json | 2 - packages/codemirror/themes-vanilla.mjs | 116 +++++ .../themes/strudel-theme-vanilla.mjs | 82 ++++ pnpm-lock.yaml | 450 ------------------ 6 files changed, 200 insertions(+), 454 deletions(-) create mode 100644 packages/codemirror/themes-vanilla.mjs create mode 100644 packages/codemirror/themes/strudel-theme-vanilla.mjs diff --git a/packages/codemirror/codemirror.mjs b/packages/codemirror/codemirror.mjs index 5886c476..aab231d2 100644 --- a/packages/codemirror/codemirror.mjs +++ b/packages/codemirror/codemirror.mjs @@ -20,7 +20,7 @@ import { isTooltipEnabled } from './tooltip.mjs'; import { flash, isFlashEnabled } from './flash.mjs'; import { highlightMiniLocations, isPatternHighlightingEnabled, updateMiniLocations } from './highlight.mjs'; import { keybindings } from './keybindings.mjs'; -import { initTheme, activateTheme, theme } from './themes.mjs'; +import { initTheme, activateTheme, theme } from './themes-vanilla.mjs'; import { sliderPlugin, updateSliderWidgets } from './slider.mjs'; import { widgetPlugin, updateWidgets } from './widget.mjs'; import { persistentAtom } from '@nanostores/persistent'; diff --git a/packages/codemirror/index.mjs b/packages/codemirror/index.mjs index 3a5f2a23..b4bb5673 100644 --- a/packages/codemirror/index.mjs +++ b/packages/codemirror/index.mjs @@ -2,5 +2,5 @@ export * from './codemirror.mjs'; export * from './highlight.mjs'; export * from './flash.mjs'; export * from './slider.mjs'; -export * from './themes.mjs'; +export * from './themes-vanilla.mjs'; export * from './widget.mjs'; diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 816f091a..44326b7c 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -47,8 +47,6 @@ "@strudel/core": "workspace:*", "@strudel/draw": "workspace:*", "@strudel/transpiler": "workspace:*", - "@uiw/codemirror-themes": "^4.23.7", - "@uiw/codemirror-themes-all": "^4.23.7", "nanostores": "^0.11.3" }, "devDependencies": { diff --git a/packages/codemirror/themes-vanilla.mjs b/packages/codemirror/themes-vanilla.mjs new file mode 100644 index 00000000..96606443 --- /dev/null +++ b/packages/codemirror/themes-vanilla.mjs @@ -0,0 +1,116 @@ +import strudelTheme from './themes/strudel-theme-vanilla.mjs'; +import { setTheme } from '@strudel/draw'; + +export const themes = { + strudelTheme, +}; + +// lineBackground is background with 50% opacity, to make sure the selection below is visible + +export const settings = { + strudelTheme: { + background: '#222', + lineBackground: '#22222299', + foreground: '#fff', + // foreground: '#75baff', + caret: '#ffcc00', + selection: 'rgba(128, 203, 196, 0.5)', + selectionMatch: '#036dd626', + // lineHighlight: '#8a91991a', // original + lineHighlight: '#00000050', + gutterBackground: 'transparent', + // gutterForeground: '#8a919966', + gutterForeground: '#8a919966', + }, +}; + +function getColors(str) { + const colorRegex = /#([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})/g; + const colors = []; + + let match; + while ((match = colorRegex.exec(str)) !== null) { + const color = match[0]; + if (!colors.includes(color)) { + colors.push(color); + } + } + + return colors; +} + +// TODO: remove +export function themeColors(theme) { + return getColors(stringifySafe(theme)); +} + +function getCircularReplacer() { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === 'object' && value !== null) { + if (seen.has(value)) { + return; + } + seen.add(value); + } + return value; + }; +} + +function stringifySafe(json) { + return JSON.stringify(json, getCircularReplacer()); +} + +export const theme = (theme) => themes[theme] || themes.strudelTheme; + +// css style injection helpers +export function injectStyle(rule) { + const newStyle = document.createElement('style'); + document.head.appendChild(newStyle); + const styleSheet = newStyle.sheet; + const ruleIndex = styleSheet.insertRule(rule, 0); + return () => styleSheet.deleteRule(ruleIndex); +} + +let currentTheme, + resetThemeStyle, + themeStyle, + styleID = 'strudel-theme-vars'; +export function initTheme(theme) { + if (!document.getElementById(styleID)) { + themeStyle = document.createElement('style'); + themeStyle.id = styleID; + document.head.append(themeStyle); + } + activateTheme(theme); +} + +export function activateTheme(name) { + if (currentTheme === name) { + return; + } + currentTheme = name; + if (!settings[name]) { + console.warn('theme', name, 'has no settings.. defaulting to strudelTheme settings'); + } + const themeSettings = settings[name] || settings.strudelTheme; + // set css variables + themeStyle.innerHTML = `:root { + ${Object.entries(themeSettings) + // important to override fallback + .map(([key, value]) => `--${key}: ${value} !important;`) + .join('\n')} + }`; + setTheme(themeSettings); + // tailwind dark mode + if (themeSettings.light) { + document.documentElement.classList.remove('dark'); + } else { + document.documentElement.classList.add('dark'); + } + resetThemeStyle?.(); + resetThemeStyle = undefined; + if (themeSettings.customStyle) { + resetThemeStyle = injectStyle(themeSettings.customStyle); + } +} diff --git a/packages/codemirror/themes/strudel-theme-vanilla.mjs b/packages/codemirror/themes/strudel-theme-vanilla.mjs new file mode 100644 index 00000000..2fb63834 --- /dev/null +++ b/packages/codemirror/themes/strudel-theme-vanilla.mjs @@ -0,0 +1,82 @@ +import { EditorView } from '@codemirror/view'; +import { tags } from '@lezer/highlight'; +import { HighlightStyle } from '@codemirror/language'; +import { syntaxHighlighting } from '@codemirror/language'; + +let colors = { + teal600: '#c084fc', // text + teal400: '#2dd4bf', + amber: '#d97706', + violet400: '#a78bfa', + violet300: '#c4b5fd', + indigo300: '#a5b4fc', + indigo400: '#818cf8', + fuchsia400: '#e879f9', + fuchsia300: '#78716c', // brackets + fuchsia200: '#f5d0fe', + whitish: '#d9f99d', // text + stone400: '#a8a29e', + stone500: '#78716c', +}; + +let theme = EditorView.theme( + { + '&': { + color: colors.teal600, + overflow: 'hidden', + backgroundColor: 'transparent', + fontSize: '16px', + height: '100%', + }, + '.cm-gutters': { + 'background-color': 'transparent', + color: colors.stone500, + }, + '.cm-cursor': { + 'border-left-color': 'transparent', + // the regular cursor is hidden, because we're showing a nametag.. + // the cursor is part of https://github.com/felixroos/y-codemirror.next + // i had to fork again because the scrollIntoView was messing with the global scroll + }, + /* '.cm-activeLine, .cm-activeLineGutter, .cm-line': { + 'background-color': 'rgba(0,0,0,.7) !important', + }, */ + /* '.cm-line': { + 'background-color': 'transparent', + }, */ + '.cm-selectionBackground': { + 'background-color': 'rgba(255,255,255,.7) !important', + }, + '.cm-cursorLayer': { + 'animation-name': 'inherit !important;', // disables blinking + }, + '.cm-matchingBracket': { + 'text-decoration': 'underline 0.12rem', + 'text-underline-offset': '0.24rem', + 'text-decoration-color': colors.fuchsia300, + }, + '.cm-ySelectionInfo': { + opacity: '1', + fontFamily: 'monospace', + color: 'black', + padding: '2px 2px', + fontSize: '0.8rem', + //"font-weight": "bold", + top: '1.45em', + 'z-index': '1000', + }, + }, + { dark: true }, +); + +const highlightStyle = HighlightStyle.define([ + { tag: tags.labelName, color: '#7dd3fc' }, + { tag: tags.keyword, color: colors.teal600 }, + { tag: tags.literal, color: colors.whitish }, + { tag: tags.squareBracket, color: colors.amber }, + { tag: tags.punctuation, color: colors.fuchsia300 }, + { tag: tags.operator, color: colors.fuchsia300 }, + { tag: tags.comment, color: colors.stone500, fontStyle: 'italic' }, +]); + +export default [theme, syntaxHighlighting(highlightStyle)]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87b6f8ce..f85e3ab6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,12 +209,6 @@ importers: '@strudel/transpiler': specifier: workspace:* version: link:../transpiler - '@uiw/codemirror-themes': - specifier: ^4.23.7 - version: 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-themes-all': - specifier: ^4.23.7 - version: 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) nanostores: specifier: ^0.11.3 version: 0.11.3 @@ -2792,121 +2786,6 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@uiw/codemirror-theme-abcdef@4.23.7': - resolution: {integrity: sha512-KXTtbIJX00lyKs1ukVo73cHItgoufKbVYqgv3SSHxw1Z5bjcAnBQc7RUGE8eMy5uDBjasKYGYFlJeRCVu8L2wg==} - - '@uiw/codemirror-theme-abyss@4.23.7': - resolution: {integrity: sha512-HKx9u6sc59BQ0aENugDZ7uFJ2PPq3qMhpTrUSOog6LUAbc1Pm5AlyEBLSf8Otrb0R8R8zonek+oUFivWuVp9Cg==} - - '@uiw/codemirror-theme-androidstudio@4.23.7': - resolution: {integrity: sha512-3rhMmDHgYhtMkrdrI/miC2VzeCuwhIDj+QO7JETsaseqHa4xCd7EcZ08g4zSWE2xMl4TtXWeJhPYea6JY5wg1A==} - - '@uiw/codemirror-theme-andromeda@4.23.7': - resolution: {integrity: sha512-2p5JJB2fKnPMaiFjmcMjMyxKYVPjYhiIoyae9TK5rUNrmdV/sbaUqEYECqEXllS+Yx7WSpv86tpRwvnjZDdl7g==} - - '@uiw/codemirror-theme-atomone@4.23.7': - resolution: {integrity: sha512-Un3mvQqUREoUDDQ2o0CzuRRubSmTYrqC6qmj9Jt5zXFbBYgpC1qpIzXLPb2sKx4Mt/L4KnbaNmoXYZd57nOOIg==} - - '@uiw/codemirror-theme-aura@4.23.7': - resolution: {integrity: sha512-NN2FLYjTxhRfpvhwaFU3bZl+mFePvpR/VQkHFu3uTUsXoHe2fBbYumuZ73ZvWozEcbfnXipmD7wDIcONV1SeYg==} - - '@uiw/codemirror-theme-basic@4.23.7': - resolution: {integrity: sha512-jutMIBSJuwr5OIMHugt7mA+y8vUcgojoKEcpDuqCykDdYPjmVTdK1rJcQnRygsbRQCJ8fSSzGm9c59Rnio0yHw==} - - '@uiw/codemirror-theme-bbedit@4.23.7': - resolution: {integrity: sha512-o5KJLUEmjZScRmVJQT7k6ojqzf5U5Q348FGu+xgGeQdQeeAlkQ55fe6D7lJCyQnu8Et5kZhTmvJsks1xT6b0rQ==} - - '@uiw/codemirror-theme-bespin@4.23.7': - resolution: {integrity: sha512-SXnkIuCXbjJJfj0tn2rGMEQYjHFK79K+bCWBKKLOj3s/Kixec/A2KnziVYUYDXqX/JKuC0XGsGkbhuq/4fSgQQ==} - - '@uiw/codemirror-theme-console@4.23.7': - resolution: {integrity: sha512-5o23Pxer0DsuSTbzToUw73Y3b9sBI06e7e9c4SeBqI+tiYWdRefYu3M+hZZYi7L67b5bKlakMitCKvDNo3TqyQ==} - - '@uiw/codemirror-theme-copilot@4.23.7': - resolution: {integrity: sha512-TqFUD43SjXaNLUSU5E+jB0ZvhA/S7QATZBRR3SH+MR7CZwYBPKmOgHQRWmvKQMWpxGpZdGXl47GlZImJQ0ElgQ==} - - '@uiw/codemirror-theme-darcula@4.23.7': - resolution: {integrity: sha512-vnzgAe9s2vxpaleH9/H4E1FazlI90JQp6LbIdXpSix9VRY8F4r/4JUMsAZwnjoPYBFdauGypii+SysnictuXpQ==} - - '@uiw/codemirror-theme-dracula@4.23.7': - resolution: {integrity: sha512-Q+N3OQV9jiUxCcT4ihOQKzjmDrh//KvMnjGZPlgurWft1+328G6qBZu4peqiykKlAEQRbZVxOMaxOXfTLItNAw==} - - '@uiw/codemirror-theme-duotone@4.23.7': - resolution: {integrity: sha512-8Wg7rNdqxoruvy7ADVikchINAvjq7Tm64z8ZoULjztwukEXhjyD02H+vf+pLzYYTltvvREXrAe4G49L6MhX/7Q==} - - '@uiw/codemirror-theme-eclipse@4.23.7': - resolution: {integrity: sha512-KYqTUELhhuwFUpThJ2mvR6bgg0o1DEtGbMIm0RcjaL73Vs4ftefdduUmEwSD81fk9CkFIzKqpnK3QEWhgszIOA==} - - '@uiw/codemirror-theme-github@4.23.7': - resolution: {integrity: sha512-r9SstBZD7Ow1sQ8F0EpsRGx9b11K552M2FayvyLWTkal64YJmQMKW0S2KcWykgCMKLWhmDFi7LX+h8cg6nek8g==} - - '@uiw/codemirror-theme-gruvbox-dark@4.23.7': - resolution: {integrity: sha512-Qt6gGDJ7NaUEUr/0dcJpmz5+XZFaMZPYVXV4t0WEcu8I2qekqKmo0zvlmOielQHurJz2Q1o7jEW7JhLtm3QaJw==} - - '@uiw/codemirror-theme-kimbie@4.23.7': - resolution: {integrity: sha512-Ni8WtZ+VchnHgsMlskjpa3ZSma3HK2Xzv++RRjnKaOxpCwAsiKZM2eBqeb7yGZlO0/5y0BnUKi0e2YDqOwXICQ==} - - '@uiw/codemirror-theme-material@4.23.7': - resolution: {integrity: sha512-PSuPTPMA4/a6tiBmeAPLlxl98Ehk9D7WYab419PW664eHdzziTU6v9uqZ+nEtJvAwb7E5m2la+DhTndvttdiQA==} - - '@uiw/codemirror-theme-monokai-dimmed@4.23.7': - resolution: {integrity: sha512-gV7wYZ6AGZdT+1CU5VS1sOYs9c5K7NCOvxrngmMpLb3MOLH/OmmfpFAPDP5QCn3lopmk05B61qRXAW/nvKkaug==} - - '@uiw/codemirror-theme-monokai@4.23.7': - resolution: {integrity: sha512-IkflZncpj0rmQCXdDOn3O2wD516Isx12BQA/xkCfMQtgIQ7QgsqKKCPV83MiOiQFizioBNswjvXns7i5jlaJ7g==} - - '@uiw/codemirror-theme-noctis-lilac@4.23.7': - resolution: {integrity: sha512-2js5RB4Xit19EqXTmQayp8ITZJbYnu86wBzxcVT94FBW65GkROx28NUal01YBrKAi0V4U6TZ9O1x223ZsZMiFA==} - - '@uiw/codemirror-theme-nord@4.23.7': - resolution: {integrity: sha512-37NneY2Cw3vnXkeMbtOKibktuStpvRFFQYkm2y5SGRWPLWsRVB2B3hIbJuB8a1r+3dE1ShIECEDC8mRBVAlS0Q==} - - '@uiw/codemirror-theme-okaidia@4.23.7': - resolution: {integrity: sha512-ON8SBOF6FuruVzwdsnxT57hQTJIA2fCV1m7b/htSL6qmqCxmTCVhkGcGAMx9cC9W/Cnm8susQCDDEGOiG/vuww==} - - '@uiw/codemirror-theme-quietlight@4.23.7': - resolution: {integrity: sha512-C8C2vjk5uTkSvrqGdhwzGJN4a9vNai4YQrrRpJ3MscNi3KwLu4akE67U8kE5ZcThki9aHL9K2NXoP0SWt70Fag==} - - '@uiw/codemirror-theme-red@4.23.7': - resolution: {integrity: sha512-kd5v9gmj0ePtd3cfWQz5oNBCxP6Q4e2XGHqX9Psqvb70W9GsMpx6f460lCcnIORK/fC5Nl+2EY5OFSJeRIsIGA==} - - '@uiw/codemirror-theme-solarized@4.23.7': - resolution: {integrity: sha512-SuGLu8u2yXqL6Xl4/GQzuNVH3wLtPCMgLZ6e7XxV+QK8bMA0XiLKFMD+SCUutGoys88tUnQdWbmSF2Aawuztqw==} - - '@uiw/codemirror-theme-sublime@4.23.7': - resolution: {integrity: sha512-edXHyjOB4EimTym6bXAOQ41/ZmkKME8GZnoWo5wAXKOJ4ixHSSblD1Y74vbR+vYH425UFrVGU2GaH88+HTUVpg==} - - '@uiw/codemirror-theme-tokyo-night-day@4.23.7': - resolution: {integrity: sha512-EmhEyrm+MdNs+dVDhyITXGV9MN6P2Fk3TMdqAnIrPXZ4wBD7JzRdSJ547E8hBaOpfLKwhnF2kfaN00TSqXxHSQ==} - - '@uiw/codemirror-theme-tokyo-night-storm@4.23.7': - resolution: {integrity: sha512-iCx2BHj2ORw/hBUea4JQqoAwf5TZRJ2LvD/pTWf4vFunOPoQ7/GDfhiLkXuvwQOjMiTGL33Uzy4RtZ/dVfJEuA==} - - '@uiw/codemirror-theme-tokyo-night@4.23.7': - resolution: {integrity: sha512-ovyI+t9PR+a0gO4JXrH480aDW180aBgTO73SGpY71WQCMExUXWd0SMFMw+dfMpXvuaX+yyITqKOVVavrdMVB1A==} - - '@uiw/codemirror-theme-tomorrow-night-blue@4.23.7': - resolution: {integrity: sha512-eRFvFs8Dr0lIUnuxGjY4Ah7VZ90LThyambfe50KRYvcwKCLXsC6WlCDFI0nBOCTQ9Jutfg2JrYETPAJRPsmkfw==} - - '@uiw/codemirror-theme-vscode@4.23.7': - resolution: {integrity: sha512-KDTeBWsLY9L0jBXFZXovuNJeDxR2B7qR5jKDptGT0M4sLCq8XG6jYGZbWDCgR8cq0CUvmrw+26xeTKcnA1BJOA==} - - '@uiw/codemirror-theme-white@4.23.7': - resolution: {integrity: sha512-YI9sGL0D7mbgrZmoDZQYb2SuqIkFAufZNsR+/Bd80dZUhPEPU/kGrsv3Lngw2bqFbVOA3/jIoDg0akpHq6i79Q==} - - '@uiw/codemirror-theme-xcode@4.23.7': - resolution: {integrity: sha512-5MfeRwpdKQlxDgXUiZ8pMTOPUp+tMvCjwMVBUqyEZwgNmOo+Ug2jSYeqeHtEV6SMcGY2ULuMYY/HGp2IFt/1fQ==} - - '@uiw/codemirror-themes-all@4.23.7': - resolution: {integrity: sha512-UrF4QJ0C856w6VMsT60D1S/jFf2XltL6oKCbsiuCK6nFZ6ze04Mdg8DXY3poutYXBDthAfTIULFIGI6bE0LWBw==} - - '@uiw/codemirror-themes@4.23.7': - resolution: {integrity: sha512-UNf1XOx1hG9OmJnrtT86PxKcdcwhaNhbrcD+nsk8WxRJ3n5c8nH6euDvgVPdVLPwbizsaQcZTILACgA/FjRpVg==} - peerDependencies: - '@codemirror/language': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -10277,335 +10156,6 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@uiw/codemirror-theme-abcdef@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-abyss@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-androidstudio@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-andromeda@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-atomone@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-aura@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-basic@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-bbedit@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-bespin@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-console@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-copilot@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-darcula@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-dracula@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-duotone@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-eclipse@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-github@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-gruvbox-dark@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-kimbie@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-material@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-monokai-dimmed@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-monokai@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-noctis-lilac@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-nord@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-okaidia@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-quietlight@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-red@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-solarized@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-sublime@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-tokyo-night-day@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-tokyo-night-storm@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-tokyo-night@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-tomorrow-night-blue@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-vscode@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-white@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-theme-xcode@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-themes-all@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@uiw/codemirror-theme-abcdef': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-abyss': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-androidstudio': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-andromeda': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-atomone': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-aura': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-basic': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-bbedit': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-bespin': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-console': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-copilot': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-darcula': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-dracula': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-duotone': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-eclipse': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-github': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-gruvbox-dark': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-kimbie': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-material': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-monokai': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-monokai-dimmed': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-noctis-lilac': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-nord': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-okaidia': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-quietlight': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-red': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-solarized': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-sublime': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-tokyo-night': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-tokyo-night-day': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-tokyo-night-storm': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-tomorrow-night-blue': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-vscode': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-white': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-theme-xcode': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2) - transitivePeerDependencies: - - '@codemirror/language' - - '@codemirror/state' - - '@codemirror/view' - - '@uiw/codemirror-themes@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.1)(@codemirror/view@6.36.2)': - dependencies: - '@codemirror/language': 6.10.8 - '@codemirror/state': 6.5.1 - '@codemirror/view': 6.36.2 - '@ungap/structured-clone@1.3.0': {} '@vite-pwa/astro@0.5.0(astro@5.1.9(@types/node@22.10.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@2.79.2)(terser@5.37.0)(typescript@5.7.3)(yaml@2.7.0))(vite-plugin-pwa@0.21.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(yaml@2.7.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.3.0))':