{"version":3,"file":"theme.cjs","sources":["../../../app/extensions/theme.ts"],"sourcesContent":["import { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\"\nimport { tags } from \"@lezer/highlight\"\nimport { EditorView } from \"@codemirror/view\"\n\ninterface ThemeSettings {\n  isReadOnly?: boolean\n  maxHeight?: string\n  minHeight?: string\n  rows?: number\n}\n\nconst createSyntaxHighlighting = () => {\n  return syntaxHighlighting(\n    HighlightStyle.define([\n      // 🔑 关键字和控制流\n      { tag: tags.keyword, color: \"var(--code-syntax-keyword)\" },\n\n      // 📝 字面量\n      { tag: [tags.string, tags.special(tags.string)], color: \"var(--code-syntax-string)\" },\n      { tag: [tags.number], color: \"var(--code-syntax-number)\" },\n      { tag: [tags.bool], color: \"var(--code-syntax-boolean)\" },\n\n      // 🔧 函数和方法\n      {\n        tag: [tags.function(tags.variableName), tags.function(tags.propertyName)],\n        color: \"var(--code-syntax-function)\",\n      },\n\n      // 🏷️ 变量和属性\n      {\n        tag: [tags.variableName, tags.definition(tags.variableName)],\n        color: \"var(--code-syntax-variable)\",\n      },\n      {\n        tag: [tags.propertyName, tags.definition(tags.propertyName)],\n        color: \"var(--code-syntax-property)\",\n      },\n\n      // ⚡ 操作符\n      { tag: [tags.operator, tags.operatorKeyword], color: \"var(--code-syntax-operator)\" },\n\n      // 💬 注释\n      {\n        tag: [tags.comment, tags.lineComment, tags.blockComment],\n        color: \"var(--code-syntax-comment)\",\n      },\n\n      // 🎯 JSX 标签 - 映射到属性颜色（包括自定义组件）\n      { tag: [tags.tagName], color: \"var(--code-syntax-property)\" }, // HTML 标签 <div>\n      { tag: [tags.className, tags.typeName], color: \"var(--code-syntax-property)\" }, // 自定义组件 <MyComponent>\n      { tag: [tags.name], color: \"var(--code-syntax-property)\" }, // 通用名称\n\n      // 🎯 特殊标记\n      { tag: [tags.atom, tags.null], color: \"var(--code-syntax-boolean)\" },\n\n      // 🔗 链接和引用\n      { tag: [tags.url, tags.link], color: \"var(--code-syntax-string)\" },\n\n      // ❌ 错误和无效\n      { tag: tags.invalid, color: \"var(--foreground-danger)\" },\n\n      // 📊 格式化\n      { tag: tags.strong, fontWeight: \"bold\" },\n      { tag: tags.emphasis, fontStyle: \"italic\" },\n      { tag: tags.strikethrough, textDecoration: \"line-through\" },\n      { tag: tags.heading, fontWeight: \"bold\", color: \"var(--code-syntax-keyword)\" },\n    ]),\n  )\n}\n\nexport const codeEditorTheme = ({ isReadOnly, minHeight, maxHeight, rows }: ThemeSettings) => {\n  const computedMinHeight =\n    rows && rows !== -1 ? `${Number(rows + 1) * 1.3}em` : (minHeight ?? \"200px\")\n\n  const computedMaxHeight = maxHeight ?? \"100%\"\n\n  const customTheme = EditorView.theme({\n    \"&\": {\n      \"--editor-max-height\": computedMaxHeight,\n      \"--editor-min-height\": computedMinHeight,\n      \"--editor-is-readonly\": isReadOnly ? \"true\" : \"false\",\n      \"--editor-rows\": rows?.toString() ?? \"auto\",\n    } as { [key: string]: string },\n    \".cm-gutters\": {\n      backgroundColor: \"transparent\",\n    },\n    \".cm-activeLineGutter\": {\n      backgroundColor: \"transparent\",\n    },\n  })\n\n  return [customTheme, createSyntaxHighlighting()]\n}\n"],"names":["syntaxHighlighting","HighlightStyle","tags","EditorView"],"mappings":";;;;;AAWA,MAAM,2BAA2B,MAAM;AACrC,SAAOA,QAAAA;AAAAA,IACLC,QAAAA,eAAe,OAAO;AAAA;AAAA,MAEpB,EAAE,KAAKC,QAAAA,KAAK,SAAS,OAAO,6BAAA;AAAA;AAAA,MAG5B,EAAE,KAAK,CAACA,aAAK,QAAQA,QAAAA,KAAK,QAAQA,QAAAA,KAAK,MAAM,CAAC,GAAG,OAAO,4BAAA;AAAA,MACxD,EAAE,KAAK,CAACA,QAAAA,KAAK,MAAM,GAAG,OAAO,4BAAA;AAAA,MAC7B,EAAE,KAAK,CAACA,QAAAA,KAAK,IAAI,GAAG,OAAO,6BAAA;AAAA;AAAA,MAG3B;AAAA,QACE,KAAK,CAACA,QAAAA,KAAK,SAASA,aAAK,YAAY,GAAGA,QAAAA,KAAK,SAASA,aAAK,YAAY,CAAC;AAAA,QACxE,OAAO;AAAA,MAAA;AAAA;AAAA,MAIT;AAAA,QACE,KAAK,CAACA,QAAAA,KAAK,cAAcA,QAAAA,KAAK,WAAWA,QAAAA,KAAK,YAAY,CAAC;AAAA,QAC3D,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,KAAK,CAACA,QAAAA,KAAK,cAAcA,QAAAA,KAAK,WAAWA,QAAAA,KAAK,YAAY,CAAC;AAAA,QAC3D,OAAO;AAAA,MAAA;AAAA;AAAA,MAIT,EAAE,KAAK,CAACA,QAAAA,KAAK,UAAUA,QAAAA,KAAK,eAAe,GAAG,OAAO,8BAAA;AAAA;AAAA,MAGrD;AAAA,QACE,KAAK,CAACA,QAAAA,KAAK,SAASA,QAAAA,KAAK,aAAaA,QAAAA,KAAK,YAAY;AAAA,QACvD,OAAO;AAAA,MAAA;AAAA;AAAA,MAIT,EAAE,KAAK,CAACA,QAAAA,KAAK,OAAO,GAAG,OAAO,8BAAA;AAAA;AAAA,MAC9B,EAAE,KAAK,CAACA,QAAAA,KAAK,WAAWA,QAAAA,KAAK,QAAQ,GAAG,OAAO,8BAAA;AAAA;AAAA,MAC/C,EAAE,KAAK,CAACA,QAAAA,KAAK,IAAI,GAAG,OAAO,8BAAA;AAAA;AAAA;AAAA,MAG3B,EAAE,KAAK,CAACA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,IAAI,GAAG,OAAO,6BAAA;AAAA;AAAA,MAGtC,EAAE,KAAK,CAACA,QAAAA,KAAK,KAAKA,QAAAA,KAAK,IAAI,GAAG,OAAO,4BAAA;AAAA;AAAA,MAGrC,EAAE,KAAKA,QAAAA,KAAK,SAAS,OAAO,2BAAA;AAAA;AAAA,MAG5B,EAAE,KAAKA,QAAAA,KAAK,QAAQ,YAAY,OAAA;AAAA,MAChC,EAAE,KAAKA,QAAAA,KAAK,UAAU,WAAW,SAAA;AAAA,MACjC,EAAE,KAAKA,QAAAA,KAAK,eAAe,gBAAgB,eAAA;AAAA,MAC3C,EAAE,KAAKA,QAAAA,KAAK,SAAS,YAAY,QAAQ,OAAO,6BAAA;AAAA,IAA6B,CAC9E;AAAA,EAAA;AAEL;AAEO,MAAM,kBAAkB,CAAC,EAAE,YAAY,WAAW,WAAW,WAA0B;AAC5F,QAAM,oBACJ,QAAQ,SAAS,KAAK,GAAG,OAAO,OAAO,CAAC,IAAI,GAAG,OAAQ,aAAa;AAEtE,QAAM,oBAAoB,aAAa;AAEvC,QAAM,cAAcC,MAAAA,WAAW,MAAM;AAAA,IACnC,KAAK;AAAA,MACH,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,wBAAwB,aAAa,SAAS;AAAA,MAC9C,kBAAiB,6BAAM,eAAc;AAAA,IAAA;AAAA,IAEvC,eAAe;AAAA,MACb,iBAAiB;AAAA,IAAA;AAAA,IAEnB,wBAAwB;AAAA,MACtB,iBAAiB;AAAA,IAAA;AAAA,EACnB,CACD;AAED,SAAO,CAAC,aAAa,0BAA0B;AACjD;;"}