autosnippet 1.3.2 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/bin/asnip.js +31 -0
- package/dashboard/dist/assets/index-BMOWqHnK.js +33 -0
- package/dashboard/dist/assets/index-DeK7dG-V.css +1 -0
- package/dashboard/dist/assets/markdown-CBiIpHBr.js +5 -0
- package/dashboard/dist/assets/vendor-CAT0H0kn.js +271 -0
- package/dashboard/{index.html → dist/index.html} +4 -1
- package/lib/injection/importWriter.js +0 -1
- package/package.json +16 -1
- package/scripts/ensure-parse-package.js +38 -8
- package/.editorconfig +0 -13
- package/.env.example +0 -124
- package/dashboard/package-lock.json +0 -4064
- package/dashboard/package.json +0 -36
- package/dashboard/postcss.config.js +0 -5
- package/dashboard/scripts/build.mjs +0 -13
- package/dashboard/src/App.tsx +0 -706
- package/dashboard/src/components/Layout/Header.tsx +0 -144
- package/dashboard/src/components/Layout/Sidebar.tsx +0 -38
- package/dashboard/src/components/Modals/CreateModal.tsx +0 -55
- package/dashboard/src/components/Modals/RecipeEditor.tsx +0 -145
- package/dashboard/src/components/Modals/SearchModal.tsx +0 -97
- package/dashboard/src/components/Modals/SnippetEditor.tsx +0 -146
- package/dashboard/src/components/Shared/CategoryBar.tsx +0 -35
- package/dashboard/src/components/Shared/CodeBlock.tsx +0 -52
- package/dashboard/src/components/Shared/MarkdownWithHighlight.tsx +0 -63
- package/dashboard/src/components/Views/AiChatView.tsx +0 -44
- package/dashboard/src/components/Views/CandidatesView.tsx +0 -116
- package/dashboard/src/components/Views/DepGraphView.tsx +0 -408
- package/dashboard/src/components/Views/HelpView.tsx +0 -51
- package/dashboard/src/components/Views/RecipesView.tsx +0 -49
- package/dashboard/src/components/Views/SPMExplorerView.tsx +0 -250
- package/dashboard/src/components/Views/SnippetsView.tsx +0 -54
- package/dashboard/src/constants/index.ts +0 -18
- package/dashboard/src/index.css +0 -10
- package/dashboard/src/main.tsx +0 -10
- package/dashboard/src/types.ts +0 -71
- package/dashboard/src/utils/index.ts +0 -13
- package/dashboard/tailwind.config.js +0 -11
- package/dashboard/tsconfig.json +0 -22
- package/dashboard/tsconfig.node.json +0 -9
- package/dashboard/vite.config.ts +0 -28
- package/images/20260131014718_38_167.png +0 -0
- package/images/20260131014812_40_167.png +0 -0
- package/images/20260131014843_41_167.png +0 -0
- package/test/README.md +0 -78
- package/test/runner.js +0 -563
package/README.md
CHANGED
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
npm install -g autosnippet
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
安装时默认不构建 Swift 解析器(ParsePackage),安装更快;未构建时 SPM 解析会回退到系统 `swift package dump-package` 或 AST-lite。若需优先使用 Swift 解析器,**在任意目录**执行:`asd build-parser`(或在安装时设置 `ASD_BUILD_SWIFT_PARSER=1 npm install -g autosnippet`)。
|
|
20
|
+
|
|
19
21
|
---
|
|
20
22
|
|
|
21
23
|
## 快速开始
|
|
@@ -52,7 +54,7 @@ asd ui
|
|
|
52
54
|
2. **组建依赖关系**:在项目根执行 **`asd spm-map`**(或 Dashboard 内刷新依赖关系图),生成 `Knowledge/AutoSnippet.spmmap.json`,供后续查阅「谁依赖谁」、模块边界。
|
|
53
55
|
3. **可选:语义索引**:执行 **`asd embed`**,为 Recipes 构建语义向量索引,便于 **as:guard** 语义检索、**as:search** 与 Dashboard 内语义搜索。
|
|
54
56
|
4. **配合 Cursor**:在项目根执行 **`asd install:cursor-skill`**,将 AutoSnippet 的 skills 安装到项目的 `.cursor/skills/`。Cursor Agent 即可获得「项目 Recipe 上下文」「依赖结构」「创建流程」等说明,按项目规范回答与改代码。
|
|
55
|
-
5. **闭环**:日常开发中,用 Cursor 或其他 AI 基于知识库与依赖结构写代码;写完的模块使用代码通过 **`// as:create`** 或 Dashboard **New Recipe** 提交到 web、加入知识库;用 **`// as:guard`**
|
|
57
|
+
5. **闭环**:日常开发中,用 Cursor 或其他 AI 基于知识库与依赖结构写代码;写完的模块使用代码通过 **`// as:create`** 或 Dashboard **New Recipe** 提交到 web、加入知识库;用 **`// as:guard`** 按知识库做合规审查;用 **`// as:search`** 从知识库检索并插入标准代码。知识库与依赖随人工审核和提交持续更新,AI 始终基于最新上下文,形成「扫描 → 审核 → 沉淀 → Cursor/AI 使用 → 再沉淀」的闭环。
|
|
56
58
|
|
|
57
59
|
---
|
|
58
60
|
|
package/bin/asnip.js
CHANGED
|
@@ -967,11 +967,42 @@ commander
|
|
|
967
967
|
require(path.join(__dirname, '..', 'scripts', 'install-cursor-skill.js'));
|
|
968
968
|
});
|
|
969
969
|
|
|
970
|
+
commander
|
|
971
|
+
.command('build-parser')
|
|
972
|
+
.description('build Swift parser (ParsePackage) in AutoSnippet installation dir (run from any dir)')
|
|
973
|
+
.action(() => {
|
|
974
|
+
const pkgRoot = path.resolve(__dirname, '..');
|
|
975
|
+
const parsePackageDir = path.join(pkgRoot, 'tools', 'parse-package');
|
|
976
|
+
const manifestPath = path.join(parsePackageDir, 'Package.swift');
|
|
977
|
+
const binaryPath = path.join(parsePackageDir, '.build', 'release', 'ParsePackage');
|
|
978
|
+
if (!fs.existsSync(manifestPath)) {
|
|
979
|
+
console.error('未找到 ParsePackage(Package.swift)。');
|
|
980
|
+
process.exit(1);
|
|
981
|
+
}
|
|
982
|
+
if (fs.existsSync(binaryPath)) {
|
|
983
|
+
console.log('Swift 解析器已存在,无需重新构建。');
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
console.log('正在构建 Swift 解析器(ParsePackage)...');
|
|
987
|
+
const { spawnSync } = require('child_process');
|
|
988
|
+
const result = spawnSync('swift', ['build', '-c', 'release'], {
|
|
989
|
+
cwd: parsePackageDir,
|
|
990
|
+
stdio: 'inherit',
|
|
991
|
+
shell: false,
|
|
992
|
+
});
|
|
993
|
+
if (result.status === 0 && fs.existsSync(binaryPath)) {
|
|
994
|
+
console.log('✅ Swift 解析器安装完成。');
|
|
995
|
+
} else {
|
|
996
|
+
process.exit(result.status || 1);
|
|
997
|
+
}
|
|
998
|
+
});
|
|
999
|
+
|
|
970
1000
|
commander.addHelpText('after', `
|
|
971
1001
|
|
|
972
1002
|
Examples:
|
|
973
1003
|
asd setup # 初始化 + 标记项目根目录
|
|
974
1004
|
asd install:cursor-skill # 将 skills 安装到项目 .cursor/skills/
|
|
1005
|
+
asd build-parser # 在 AutoSnippet 安装目录构建 Swift 解析器(任意目录可执行)
|
|
975
1006
|
asd install # 等价于 asd i
|
|
976
1007
|
asd create # 等价于 asd c
|
|
977
1008
|
asd share # 等价于 asd s
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import{L as ge,B as ae,H as dt,W as xt,D as mt,Z as re,C as ne,P as ut,G as pt,j as e,h as ht,T as bt,i as ft,M as gt,k as Re,l as je,m as h,n as S,S as Ge,o as jt,p as yt,q as Nt,s as De,w as Y,x as ye,F as He,E as wt,y as Ne,z as Oe,A as vt,I as Ct,X as pe,J as kt,K as _e,N as St,O as $t,R as At}from"./vendor-CAT0H0kn.js";import{h as It,o as zt,M as Pt}from"./markdown-CBiIpHBr.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))a(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const x of o.addedNodes)x.tagName==="LINK"&&x.rel==="modulepreload"&&a(x)}).observe(document,{childList:!0,subtree:!0});function p(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function a(r){if(r.ep)return;r.ep=!0;const o=p(r);fetch(r.href,o)}})();const T={All:{icon:pt,color:"text-slate-600",bg:"bg-slate-100",border:"border-slate-200"},View:{icon:ut,color:"text-pink-600",bg:"bg-pink-50",border:"border-pink-100"},Service:{icon:ne,color:"text-indigo-600",bg:"bg-indigo-50",border:"border-indigo-100"},Tool:{icon:re,color:"text-amber-600",bg:"bg-amber-50",border:"border-amber-100"},Model:{icon:mt,color:"text-emerald-600",bg:"bg-emerald-50",border:"border-emerald-100"},Network:{icon:xt,color:"text-blue-600",bg:"bg-blue-50",border:"border-blue-100"},Storage:{icon:dt,color:"text-purple-600",bg:"bg-purple-50",border:"border-purple-100"},UI:{icon:ae,color:"text-cyan-600",bg:"bg-cyan-50",border:"border-cyan-100"},Utility:{icon:ge,color:"text-orange-600",bg:"bg-orange-50",border:"border-orange-100"}},Te=["All","View","Service","Tool","Model","Network","Storage","UI","Utility"],Et=["snippets","recipes","ai","spm","candidates","depgraph","help"],de=t=>["Example","Demo","Sample","Tests","Spec","Mock","Runner"].some(p=>t.endsWith(p)||t.includes(p)),Mt=({activeTab:t,navigateToTab:n,handleRefreshProject:p,candidateCount:a})=>e.jsxs("aside",{className:"w-64 bg-white border-r border-slate-200 flex flex-col shrink-0",children:[e.jsxs("div",{className:"p-6 border-b border-slate-100 flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-blue-600 rounded-lg flex items-center justify-center text-white",children:e.jsx(ht,{size:20})}),e.jsx("h1",{className:"font-bold text-lg",children:"AutoSnippet"})]}),e.jsxs("nav",{className:"flex-1 p-4 space-y-2 overflow-y-auto",children:[e.jsxs("button",{type:"button",onClick:()=>n("snippets"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="snippets"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(bt,{size:20}),e.jsx("span",{children:"Snippets"})]}),e.jsxs("button",{type:"button",onClick:()=>n("recipes"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="recipes"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(ne,{size:20}),e.jsx("span",{children:"Recipes"})]}),e.jsxs("button",{type:"button",onClick:()=>n("spm"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="spm"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(ae,{size:20}),e.jsx("span",{children:"SPM Explorer"})]}),e.jsxs("button",{type:"button",onClick:()=>n("candidates"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="candidates"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(re,{size:20}),e.jsxs("span",{children:["Candidates (",a,")"]})]}),e.jsxs("button",{type:"button",onClick:()=>n("depgraph"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="depgraph"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(ft,{size:20}),e.jsx("span",{children:"依赖关系图"})]}),e.jsxs("button",{type:"button",onClick:()=>n("ai"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="ai"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(gt,{size:20}),e.jsx("span",{children:"AI Assistant"})]}),e.jsxs("button",{type:"button",onClick:()=>n("help"),className:`w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-colors ${t==="help"?"bg-blue-50 text-blue-700 font-medium":"text-slate-600 hover:bg-slate-50"}`,children:[e.jsx(Re,{size:20}),e.jsx("span",{children:"使用说明"})]})]}),e.jsx("div",{className:"p-4 border-t border-slate-100",children:e.jsxs("button",{onClick:p,className:"w-full flex items-center justify-center gap-2 text-[10px] font-bold text-slate-400 uppercase hover:text-blue-600 transition-colors",children:[e.jsx(je,{size:12})," Refresh Project"]})})]}),Lt=({searchQuery:t,setSearchQuery:n,setShowCreateModal:p,handleSyncToXcode:a,aiConfig:r,onSemanticSearchResults:o,onBeforeAiSwitch:x,onAiConfigChange:m})=>{const[d,l]=h.useState(!1),[g,w]=h.useState(!1),[k,I]=h.useState([]),[c,j]=h.useState(!1),y=h.useRef(null);h.useEffect(()=>{g&&k.length===0&&S.get("/api/ai/providers").then(v=>I(v.data)).catch(()=>{})},[g,k.length]),h.useEffect(()=>{const v=L=>{y.current&&!y.current.contains(L.target)&&w(!1)};return document.addEventListener("click",v),()=>document.removeEventListener("click",v)},[]);const E=async()=>{if(t){l(!0);try{const v=await S.post("/api/search/semantic",{keyword:t});o&&o(v.data)}catch(v){console.error("Semantic search failed",v),alert("语义搜索失败。请确保已运行 asd embed 构建索引。")}finally{l(!1)}}},H=async v=>{j(!0);try{x==null||x(),await S.post("/api/ai/config",{provider:v.id,model:v.defaultModel}),w(!1),m&&m()}catch(L){console.error("AI config update failed",L),alert("切换 AI 失败,请检查项目根目录是否可写。")}finally{j(!1)}};return e.jsxs("header",{className:"h-16 bg-white border-b border-slate-200 flex items-center justify-between px-8 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"relative w-96",children:[e.jsx(Ge,{className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400",size:16}),e.jsx("input",{type:"text",placeholder:"Search knowledge...",className:"w-full pl-10 pr-4 py-2 bg-slate-100 border-transparent rounded-lg text-sm outline-none focus:ring-2 focus:ring-blue-500/20 transition-all",value:t,onChange:v=>n(v.target.value),onKeyDown:v=>v.key==="Enter"&&E()})]}),e.jsxs("button",{onClick:E,disabled:!t||d,className:`flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-bold transition-all ${d?"bg-blue-50 text-blue-400":"bg-blue-50 text-blue-600 hover:bg-blue-100"}`,title:"Semantic Search (Brain AI)",children:[d?e.jsx(jt,{size:14,className:"animate-spin"}):e.jsx(yt,{size:14}),"Semantic"]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[r&&e.jsxs("div",{className:"relative",ref:y,children:[e.jsxs("button",{type:"button",onClick:v=>{v.stopPropagation(),w(L=>!L)},className:"flex items-center gap-2 px-3 py-1.5 rounded-lg bg-slate-100 text-slate-600 text-xs font-medium hover:bg-slate-200 transition-colors",title:"点击切换 AI 提供商",children:[e.jsx(ne,{size:14}),r.provider," / ",r.model,e.jsx(Nt,{size:12,className:g?"rotate-180":""})]}),g&&e.jsxs("div",{className:"absolute top-full right-0 mt-1 py-1 rounded-lg border border-slate-200 bg-white shadow-lg z-50 min-w-[200px]",children:[e.jsx("div",{className:"px-3 py-2 text-xs text-slate-500 border-b border-slate-100",children:"切换 AI"}),e.jsx("div",{className:"px-3 py-1.5 text-[11px] text-slate-400 border-b border-slate-100",children:"API Key 仍从 .env 读取"}),k.length===0?e.jsx("div",{className:"px-3 py-2 text-xs text-slate-400",children:"加载中..."}):k.map(v=>e.jsxs("button",{type:"button",disabled:c,onClick:()=>H(v),className:`w-full text-left px-3 py-2 text-sm hover:bg-slate-50 flex items-center justify-between ${r.provider===v.id?"bg-blue-50 text-blue-700 font-medium":"text-slate-700"}`,children:[e.jsx("span",{children:v.label}),r.provider===v.id&&e.jsx("span",{className:"text-xs",children:"✓"})]},v.id))]})]}),e.jsxs("button",{onClick:()=>p(!0),className:"flex items-center gap-2 px-4 py-2 bg-slate-900 text-white rounded-lg text-sm font-medium hover:bg-slate-800 transition-colors",children:[e.jsx(De,{size:16})," New Recipe"]}),e.jsxs("button",{onClick:a,className:"flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg text-sm font-medium hover:bg-blue-700 transition-colors shadow-sm",children:[e.jsx(je,{size:16})," Sync to Xcode"]})]})]})},Rt=({selectedCategory:t,setSelectedCategory:n})=>e.jsx("div",{className:"bg-white border-b border-slate-100 shrink-0 overflow-hidden",children:e.jsx("div",{className:"flex items-center gap-2 overflow-x-auto no-scrollbar px-8 py-3",children:Object.entries(T).map(([p,a])=>{const r=a.icon,o=t===p;return e.jsxs("button",{onClick:()=>n(p),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[10px] font-bold transition-all border whitespace-nowrap
|
|
2
|
+
${o?`${a.bg} ${a.color} ${a.border} shadow-sm scale-105`:"bg-white text-slate-400 border-slate-100 hover:border-slate-200 hover:text-slate-600"}`,children:[e.jsx(r,{size:12}),p]},p)})})}),Gt=({snippets:t,openSnippetEdit:n,handleDeleteSnippet:p})=>e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:t.map(a=>e.jsxs("div",{className:"bg-white p-6 rounded-xl border border-slate-200 shadow-sm hover:shadow-md transition-all group relative",children:[e.jsxs("div",{className:"absolute top-4 right-4 flex gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{onClick:r=>{r.stopPropagation(),n(a)},className:"p-1.5 bg-slate-50 text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors",children:e.jsx(Y,{size:14})}),e.jsx("button",{onClick:r=>{r.stopPropagation(),p(a.identifier,a.title)},className:"p-1.5 bg-slate-50 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded-md transition-colors",children:e.jsx(ye,{size:14})})]}),e.jsxs("div",{onClick:()=>n(a),className:"cursor-pointer",children:[e.jsxs("div",{className:"flex justify-between items-start mb-4 pr-12",children:[e.jsx("h3",{className:"font-bold text-slate-900",children:a.title}),e.jsxs("div",{className:"flex flex-col items-end gap-1",children:[a.completionKey&&e.jsx("span",{className:"text-[10px] bg-blue-50 text-blue-700 font-bold px-2 py-1 rounded uppercase tracking-wider",children:a.completionKey}),(()=>{const r=a.category||"Utility",o=T[r]||T.Utility,x=o.icon;return e.jsxs("span",{className:`text-[8px] font-bold px-1.5 py-0.5 rounded uppercase flex items-center gap-1 border ${o.bg} ${o.color} ${o.border}`,children:[e.jsx(x,{size:10}),r]})})()]})]}),e.jsx("p",{className:"text-sm text-slate-600 line-clamp-2 mb-4",children:a.summary}),e.jsx("div",{className:"flex items-center gap-2",children:a.language&&e.jsx("span",{className:"text-xs font-medium text-slate-400 bg-slate-100 px-2 py-1 rounded",children:a.language})})]})]},a.identifier))}),Dt=({recipes:t,openRecipeEdit:n,handleDeleteRecipe:p})=>e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:t.map(a=>e.jsxs("div",{className:"bg-white p-6 rounded-xl border border-slate-200 shadow-sm hover:shadow-md transition-all group relative",children:[e.jsxs("div",{className:"absolute top-4 right-4 flex gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{onClick:r=>{r.stopPropagation(),n(a)},className:"p-1.5 bg-slate-50 text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors",children:e.jsx(Y,{size:14})}),e.jsx("button",{onClick:r=>{r.stopPropagation(),p(a.name)},className:"p-1.5 bg-slate-50 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded-md transition-colors",children:e.jsx(ye,{size:14})})]}),e.jsxs("div",{onClick:()=>n(a),className:"cursor-pointer",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2 pr-12",children:[e.jsx("h3",{className:"font-bold text-slate-900",children:a.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[(()=>{var m,d;const r=((d=(m=a.content.match(/category:\s*(.*)/))==null?void 0:m[1])==null?void 0:d.trim())||"Utility",o=T[r]||T.Utility,x=o.icon;return e.jsxs("span",{className:`text-[8px] font-bold px-1.5 py-0.5 rounded uppercase flex items-center gap-1 border ${o.bg} ${o.color} ${o.border}`,children:[e.jsx(x,{size:10}),r]})})(),a.content.includes("type: preview")&&e.jsx("span",{className:"text-[10px] bg-amber-50 text-amber-700 border border-amber-200 px-1.5 py-0.5 rounded font-bold uppercase",children:"Preview Only"})]})]}),e.jsx("div",{className:"text-xs text-slate-500 bg-slate-50 p-4 rounded-lg overflow-hidden line-clamp-6 font-mono whitespace-pre-wrap",children:a.content})]})]},a.name))}),Ht=()=>e.jsxs("div",{className:"max-w-3xl mx-auto py-8",children:[e.jsxs("h1",{className:"text-2xl font-bold text-slate-900 mb-8 flex items-center gap-2",children:[e.jsx(Re,{size:28,className:"text-blue-600"})," 使用说明"]}),e.jsxs("div",{className:"prose prose-slate max-w-none space-y-8 text-sm",children:[e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800 mb-3",children:"页面说明"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 text-slate-600",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Snippets"}),":查看、编辑、删除代码片段;点击「Sync to Xcode」同步到 Xcode CodeSnippets。"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Recipes"}),":管理配方(Recipes)文档,与 Snippet 关联。"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"SPM Explorer"}),":按 Target 扫描源码,AI 提取候选;或从路径/剪贴板创建 Recipe。"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Candidates"}),":审核由 CLI ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd ais"})," 批量扫描产生的候选,通过入库或忽略。"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"AI Assistant"}),":基于本地 Snippets/Recipes 的 RAG 问答。"]})]})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800 mb-3",children:"新建 Recipe"}),e.jsx("p",{className:"text-slate-600 mb-2",children:"点击顶部「New Recipe」打开弹窗:"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 text-slate-600",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"按路径"}),":输入相对路径(如 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"Sources/MyMod/Foo.m"}),"),点击「Scan File」→ AI 提取标题/摘要/触发键/头文件,在 SPM Explorer 审核后保存。"]}),e.jsxs("li",{children:[e.jsx("strong",{children:"按剪贴板"}),":复制代码后点击「Use Copied Code」→ AI 分析并填充。若由 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"// as:create"})," 打开,会带当前文件路径自动解析头文件。"]})]})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800 mb-3",children:"头文件与 watch"}),e.jsxs("p",{className:"text-slate-600 mb-2",children:["保存时可勾选「引入头文件」,会写入 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded text-xs",children:"// as:include <TargetName/Header.h> path"}),"。在项目目录运行 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd watch"})," 后,在 Xcode 中选中 Snippet 的 headerVersion 并保存,会自动在文件头部注入对应 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"#import"}),"。"]})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800 mb-3",children:"// as:create 流程"}),e.jsxs("p",{className:"text-slate-600 mb-2",children:["在源码中写一行 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"// as:create"}),",把要提炼的代码复制到剪贴板并保存文件。watch 检测到后会打开本页并带当前文件路径;若剪贴板有内容会自动走「按剪贴板」创建,并按路径解析头文件。"]})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800 mb-3",children:"命令行速查"}),e.jsxs("ul",{className:"list-disc pl-6 space-y-2 text-slate-600",children:[e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd ui"}),":启动本 Dashboard"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd create"}),":从含 ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"// as:code"})," 的文件用 AI 创建 Snippet"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd create --clipboard [--path 相对路径]"}),":从剪贴板用 AI 创建"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd install"}),":同步 Snippets 到 Xcode"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd ais [Target]"})," / ",e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd ais --all"}),":AI 扫描,结果在 Candidates 审核"]}),e.jsxs("li",{children:[e.jsx("code",{className:"bg-slate-100 px-1 rounded",children:"asd watch"}),":监听头文件注入、ALink、// as:create"]})]})]})]})]}),Ot={objectivec:"objectivec",objc:"objectivec",swift:"swift",markdown:"markdown",md:"markdown"},he=({code:t,language:n="text",className:p="",showLineNumbers:a=!1})=>{const r=Ot[n==null?void 0:n.toLowerCase()]||(n==null?void 0:n.toLowerCase())||"text";return e.jsx("div",{className:`rounded-xl overflow-hidden text-sm ${p}`,children:e.jsx(It,{language:r,style:zt,showLineNumbers:a,customStyle:{margin:0,padding:"1rem 1.25rem",fontSize:"0.8125rem",lineHeight:1.5,borderRadius:"0.75rem"},codeTagProps:{style:{fontFamily:"ui-monospace, monospace"}},PreTag:"div",children:t})})},Ue=({content:t,className:n="",showLineNumbers:p=!1})=>e.jsx("div",{className:`markdown-body text-slate-700 ${n}`,children:e.jsx(Pt,{components:{code({node:a,className:r,children:o,...x}){const m=/language-(\w+)/.exec(r||"");return String(o).includes(`
|
|
3
|
+
`)&&m?e.jsx(he,{code:String(o).replace(/\n$/,""),language:m[1],showLineNumbers:p}):e.jsx("code",{className:"px-1.5 py-0.5 bg-slate-100 text-slate-800 rounded text-sm font-mono",...x,children:o})},p:({children:a})=>e.jsx("p",{className:"mb-3 last:mb-0",children:a}),h1:({children:a})=>e.jsx("h1",{className:"text-xl font-bold mb-2 mt-4 first:mt-0",children:a}),h2:({children:a})=>e.jsx("h2",{className:"text-lg font-bold mb-2 mt-4",children:a}),h3:({children:a})=>e.jsx("h3",{className:"text-base font-bold mb-1 mt-3",children:a}),ul:({children:a})=>e.jsx("ul",{className:"list-disc list-inside mb-3 space-y-1",children:a}),ol:({children:a})=>e.jsx("ol",{className:"list-decimal list-inside mb-3 space-y-1",children:a}),blockquote:({children:a})=>e.jsx("blockquote",{className:"border-l-4 border-slate-200 pl-4 my-3 text-slate-600 italic",children:a}),a:({href:a,children:r})=>e.jsx("a",{href:a,className:"text-blue-600 hover:underline",target:"_blank",rel:"noopener noreferrer",children:r})},children:t})}),_t=({data:t,isShellTarget:n,handleDeleteCandidate:p,onAuditCandidate:a})=>{const[r,o]=h.useState(null);return e.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"mb-6 flex justify-between items-center",children:[e.jsxs("h2",{className:"text-xl font-bold flex items-center gap-2",children:[e.jsx(re,{className:"text-amber-500"})," AI Scan Candidates"]}),e.jsx("div",{className:"text-xs text-slate-400 bg-slate-100 px-3 py-1 rounded-full",children:"这些内容由 AI 批量扫描生成,等待您的审核入库。"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto pr-2 space-y-8",children:[(!(t!=null&&t.candidates)||Object.keys(t.candidates).length===0)&&e.jsxs("div",{className:"h-64 flex flex-col items-center justify-center bg-white rounded-2xl border border-dashed border-slate-200 text-slate-400",children:[e.jsx(He,{size:48,className:"mb-4 opacity-20"}),e.jsx("p",{children:"未发现候选内容。请在终端执行 `asd ais --all` 开始扫描。"})]}),t&&Object.entries(t.candidates).sort(([x],[m])=>{const d=n(x),l=n(m);return d&&!l?1:!d&&l?-1:x.localeCompare(m)}).map(([x,m])=>{const d=n(x);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg border border-slate-100 ${d?"bg-slate-50/50":"bg-white"}`,children:[d?e.jsx(ae,{size:18,className:"text-slate-400"}):e.jsx(ae,{size:18,className:"text-blue-600"}),e.jsx("span",{className:`text-lg font-bold ${d?"text-slate-400":"text-slate-800"}`,children:x}),d&&e.jsx("span",{className:"text-[10px] font-bold text-slate-300 border border-slate-200 px-1 rounded ml-2",children:"SHELL MODULE"}),e.jsxs("span",{className:"text-xs text-slate-400 ml-auto",children:["扫描于 ",new Date(m.scanTime).toLocaleString()]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:m.items.map(l=>{var g,w,k;return e.jsxs("div",{className:`bg-white rounded-xl border border-slate-200 p-4 hover:shadow-md transition-shadow flex flex-col group ${d?"opacity-80":""}`,children:[e.jsxs("div",{className:"flex justify-between items-start mb-2",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:`text-[10px] font-bold uppercase mb-0.5 ${d?"text-slate-400":"text-blue-500"}`,children:x}),e.jsx("h3",{className:"font-bold text-sm text-slate-800",children:l.title}),l.category&&e.jsxs("span",{className:`w-fit mt-1 text-[8px] font-bold px-1.5 py-0.5 rounded uppercase flex items-center gap-1 border ${((g=T[l.category])==null?void 0:g.bg)||"bg-slate-50"} ${((w=T[l.category])==null?void 0:w.color)||"text-slate-400"} ${((k=T[l.category])==null?void 0:k.border)||"border-slate-100"}`,children:[(()=>{var c;const I=((c=T[l.category])==null?void 0:c.icon)||ge;return e.jsx(I,{size:10})})(),l.category]})]}),e.jsx("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx("button",{onClick:()=>p(x,l.id),title:"忽略",className:"p-1 hover:bg-red-50 text-slate-400 hover:text-red-500 rounded transition-colors",children:e.jsx(ye,{size:14})})})]}),e.jsx("p",{className:"text-xs text-slate-500 line-clamp-2 mb-4 flex-1 h-8 leading-relaxed",children:l.summary}),r===l.id&&e.jsx("div",{className:"mb-4 rounded-xl overflow-hidden border border-slate-100 bg-slate-50 max-h-60 overflow-y-auto",children:l.code?e.jsx(he,{code:l.code,language:l.language==="objc"?"objectivec":l.language}):e.jsx("div",{className:"p-4",children:e.jsx(Ue,{content:l.usageGuide||""})})}),e.jsxs("div",{className:"flex justify-between items-center mt-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>o(r===l.id?null:l.id),className:`p-1.5 rounded-lg transition-colors ${r===l.id?"bg-blue-100 text-blue-600":"bg-slate-100 text-slate-400 hover:text-blue-600"}`,title:r===l.id?"隐藏预览":"查看代码/指南预览",children:r===l.id?e.jsx(wt,{size:14}):e.jsx(Ne,{size:14})}),e.jsx("span",{className:`text-[10px] font-mono px-2 py-0.5 rounded font-bold ${d?"bg-slate-100 text-slate-500":"bg-blue-50 text-blue-600"}`,children:l.trigger}),e.jsx("span",{className:"text-[10px] text-slate-400 uppercase font-bold",children:l.language})]}),e.jsxs("button",{onClick:()=>a(l),className:"text-[10px] font-bold text-blue-600 hover:underline flex items-center gap-1",children:[e.jsx(Y,{size:12})," 审核并保存"]})]})]},l.id)})})]},x)})]})]})},Tt=({targets:t,filteredTargets:n,selectedTargetName:p,isScanning:a,scanProgress:r,scanFileList:o,scanResults:x,handleScanTarget:m,handleUpdateScanResult:d,handleSaveExtracted:l,isShellTarget:g})=>{const[w,k]=h.useState(null),I=c=>c.language==="objectivec"||c.language==="objc"?"objectivec":c.language||"swift";return e.jsxs("div",{className:"flex gap-8 h-full",children:[e.jsxs("div",{className:"w-80 bg-white rounded-xl border border-slate-200 flex flex-col overflow-hidden shrink-0",children:[e.jsxs("div",{className:"p-4 bg-slate-50 border-b border-slate-200 font-bold text-sm",children:["项目 Target (",t.length,")"]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-2 space-y-1",children:n.map(c=>{const j=g(c.name),y=p===c.name;return e.jsxs("button",{onClick:()=>m(c),disabled:a,className:`w-full text-left p-3 rounded-lg flex items-center justify-between group transition-all border ${a?"opacity-50 cursor-not-allowed":"hover:bg-slate-50"} ${y?"bg-blue-50 border-blue-200 ring-1 ring-blue-200":"bg-white border-transparent"} ${j?"opacity-90":""}`,children:[e.jsxs("div",{className:`flex flex-col max-w-[85%] ${j?"opacity-60":""}`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[!j&&e.jsx("div",{className:"w-1.5 h-1.5 rounded-full shrink-0 bg-blue-600"}),e.jsx("span",{className:`text-sm truncate ${j?"font-medium":"font-bold"} ${y?"text-blue-700":""}`,children:c.name})]}),e.jsx("span",{className:"text-[10px] text-slate-400 truncate pl-3",children:c.packageName})]}),j?e.jsx("span",{className:"text-[9px] font-bold text-slate-300 border border-slate-100 px-1 rounded",children:"SHELL"}):e.jsx(re,{size:14,className:`shrink-0 ${y?"text-blue-500 opacity-100":"text-blue-500 opacity-0 group-hover:opacity-100"} transition-opacity`})]},c.name)})})]}),e.jsxs("div",{className:"flex-1 bg-white rounded-xl border border-slate-200 flex flex-col overflow-hidden relative",children:[e.jsx("div",{className:"p-4 bg-slate-50 border-b border-slate-200 font-bold text-sm flex justify-between items-center",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Y,{size:16,className:"text-slate-400"}),e.jsxs("span",{children:["审核提取结果 ",x.length>0&&e.jsxs("span",{className:"text-blue-600 ml-1",children:["[",x[0].trigger?"Candidate":"New","]"]})]})]})}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-6 space-y-8 relative",children:[a&&e.jsxs("div",{className:"absolute inset-0 bg-white/90 backdrop-blur-[2px] z-10 flex flex-col items-center justify-center text-blue-600 px-8 overflow-y-auto",children:[e.jsxs("div",{className:"relative mb-6",children:[e.jsx("div",{className:"w-16 h-16 border-4 border-blue-100 border-t-blue-600 rounded-full animate-spin"}),e.jsx(ne,{size:32,className:"absolute inset-0 m-auto text-blue-600 animate-pulse"})]}),e.jsx("p",{className:"font-bold text-lg animate-pulse mb-1",children:"文件扫描与识别"}),e.jsx("p",{className:"text-sm text-slate-500 mb-4",children:r.status}),o.length>0&&e.jsxs("div",{className:"w-full max-w-lg mb-4 text-left",children:[e.jsxs("p",{className:"text-[10px] font-bold text-slate-400 uppercase mb-2",children:["本次扫描的文件 (",o.length,")"]}),e.jsx("div",{className:"max-h-32 overflow-y-auto space-y-1 rounded-lg bg-slate-50 border border-slate-200 p-2",children:o.map((c,j)=>e.jsx("div",{className:"text-xs font-mono text-slate-600 truncate",title:c.path,children:c.name},j))})]}),e.jsx("div",{className:"w-full max-w-md bg-slate-100 rounded-full h-2.5 overflow-hidden",children:e.jsx("div",{className:"h-full bg-blue-600 rounded-full transition-all duration-500 ease-out",style:{width:`${Math.min(r.total?r.current/r.total*100:0,98)}%`}})}),e.jsx("p",{className:"text-xs text-slate-400 mt-3",children:r.total?`${Math.round(r.current/r.total*100)}%`:"0%"})]}),!a&&x.length===0&&e.jsxs("div",{className:"h-full flex flex-col items-center justify-center text-slate-400 text-center",children:[e.jsx(ae,{size:48,className:"mb-4 opacity-20"}),e.jsx("p",{className:"font-medium text-slate-600",children:"深度扫描与提取"}),e.jsx("p",{className:"text-xs mt-2",children:"从左侧选择一个模块,让 AI 识别可复用的代码片段和最佳实践。"})]}),!a&&o.length>0&&e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-slate-50 p-4",children:[e.jsxs("p",{className:"text-[10px] font-bold text-slate-400 uppercase mb-2",children:["本次扫描的文件 (",o.length,")"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:o.map((c,j)=>e.jsx("span",{className:"text-xs font-mono bg-white border border-slate-200 text-slate-600 px-2 py-1 rounded",title:c.path,children:c.name},j))})]}),x.map((c,j)=>e.jsxs("div",{className:"bg-slate-50 rounded-2xl border border-slate-200 overflow-hidden shadow-sm",children:[e.jsxs("div",{className:"p-4 bg-white border-b border-slate-100 flex justify-between items-center",children:[e.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e.jsxs("div",{className:"flex flex-col w-[512px]",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Recipe Title"}),e.jsx("input",{className:"font-bold bg-transparent border-b border-transparent hover:border-slate-200 focus:border-blue-500 outline-none px-1 text-base w-full",value:c.title,onChange:y=>d(j,{title:y.target.value})})]}),e.jsxs("div",{className:"flex flex-col w-64",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Triggers"}),e.jsx("input",{className:"font-mono font-bold text-blue-600 bg-blue-50 border border-blue-100 px-3 py-1.5 rounded-lg outline-none text-xs focus:ring-2 focus:ring-blue-500 w-full",value:c.trigger,placeholder:"@cmd",onChange:y=>d(j,{trigger:y.target.value})})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Category"}),e.jsx("select",{className:"font-bold text-blue-600 bg-blue-50 border border-blue-100 px-2 py-1.5 rounded-lg outline-none text-[10px] focus:ring-2 focus:ring-blue-500",value:c.category,onChange:y=>d(j,{category:y.target.value}),children:Te.filter(y=>y!=="All").map(y=>e.jsx("option",{value:y,children:y},y))})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Language"}),e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg",children:[e.jsx("button",{onClick:()=>d(j,{language:"swift"}),className:`px-2 py-1 rounded-md text-[9px] font-bold transition-all ${c.language==="swift"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"Swift"}),e.jsx("button",{onClick:()=>d(j,{language:"objectivec"}),className:`px-2 py-1 rounded-md text-[9px] font-bold transition-all ${c.language==="objectivec"||c.language==="objc"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"ObjC"})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Content Lang"}),e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg",children:[e.jsx("button",{onClick:()=>d(j,{lang:"cn"}),className:`px-2 py-1 rounded-md text-[9px] font-bold transition-all ${c.lang==="cn"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"CN"}),e.jsx("button",{onClick:()=>d(j,{lang:"en"}),className:`px-2 py-1 rounded-md text-[9px] font-bold transition-all ${c.lang==="en"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"EN"})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"Mode"}),e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg",children:[e.jsx("button",{onClick:()=>d(j,{mode:"full"}),className:`px-4 py-1 rounded-md text-[9px] font-bold transition-all ${c.mode==="full"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"SNIPPET + RECIPE"}),e.jsx("button",{onClick:()=>d(j,{mode:"preview"}),className:`px-4 py-1 rounded-md text-[9px] font-bold transition-all ${c.mode==="preview"?"bg-white shadow-sm text-amber-600":"text-slate-400"}`,children:"RECIPE ONLY"})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-[9px] font-bold text-slate-400 uppercase ml-1 mb-0.5",children:"引入头文件"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>d(j,{includeHeaders:c.includeHeaders===!1}),className:`w-8 h-4 rounded-full relative transition-colors ${c.includeHeaders!==!1?"bg-blue-600":"bg-slate-300"}`,title:c.includeHeaders!==!1?"开启:snippet 内写入 // as:include 标记,watch 按标记注入":"关闭:不写入头文件标记",children:e.jsx("div",{className:`absolute top-0.5 w-3 h-3 bg-white rounded-full transition-all ${c.includeHeaders!==!1?"right-0.5":"left-0.5"}`})}),e.jsx("span",{className:"text-[9px] text-slate-500",children:c.includeHeaders!==!1?"按标记注入":"不引入"})]})]})]}),e.jsx("div",{className:"ml-4",children:e.jsxs("button",{onClick:()=>l(c),className:`text-xs px-5 py-2.5 rounded-xl font-bold transition-all shadow-sm flex items-center gap-2 active:scale-95 ${c.mode==="full"?"bg-blue-600 text-white hover:bg-blue-700":"bg-amber-600 text-white hover:bg-amber-700"}`,children:[e.jsx(Oe,{size:18}),"保存为 Recipe"]})})]}),e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsx("div",{className:"flex gap-4",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("label",{className:"block text-[10px] font-bold text-slate-400 uppercase mb-1",children:["Summary (摘要) - ",c.lang==="cn"?"中文":"EN"]}),e.jsx("textarea",{rows:2,className:"w-full text-sm text-slate-600 bg-white border border-slate-200 rounded-xl px-3 py-2 outline-none resize-none leading-relaxed focus:ring-2 focus:ring-blue-500/10",value:c.summary,onChange:y=>d(j,{summary:y.target.value})})]})}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"block text-[10px] font-bold text-slate-400 uppercase mb-1",children:["头文件 Headers ",c.moduleName&&e.jsxs("span",{className:"text-slate-400 font-normal",children:["· ",c.moduleName]})]}),c.headers&&c.headers.length>0?e.jsx("div",{className:"flex flex-wrap gap-2",children:c.headers.map((y,E)=>{var H;return e.jsx("span",{className:"text-[10px] bg-slate-200 text-slate-600 px-2 py-0.5 rounded font-mono",title:(H=c.headerPaths)!=null&&H[E]?`相对路径: ${c.headerPaths[E]}`:void 0,children:y},E)})}):e.jsx("p",{className:"text-[10px] text-slate-400",children:"未解析到头文件(剪贴板需含 #import,且路径在 target 下)"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("label",{className:"text-[10px] font-bold text-slate-400 uppercase",children:"Standardized Usage Example (标准使用示例)"}),w===j?e.jsxs("button",{type:"button",onClick:()=>k(null),className:"flex items-center gap-1 text-[10px] font-bold text-blue-600 hover:text-blue-700 px-2 py-1 rounded bg-blue-50",children:[e.jsx(vt,{size:12})," 完成"]}):e.jsxs("button",{type:"button",onClick:()=>k(j),className:"flex items-center gap-1 text-[10px] font-bold text-slate-500 hover:text-slate-700 px-2 py-1 rounded hover:bg-slate-100",title:"编辑代码",children:[e.jsx(Ct,{size:12})," 编辑"]})]}),w===j?e.jsx("div",{className:"bg-slate-900 rounded-xl p-4 overflow-x-auto",children:e.jsx("textarea",{className:"w-full bg-transparent text-xs text-slate-100 font-mono leading-relaxed outline-none resize-none",rows:Math.min(12,c.code.split(`
|
|
4
|
+
`).length),value:c.code,onChange:y=>d(j,{code:y.target.value})})}):e.jsx(he,{code:c.code,language:I(c),showLineNumbers:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-[10px] font-bold text-slate-400 uppercase mb-1",children:["Usage Guide (使用指南) - ",c.lang==="cn"?"中文":"EN"]}),e.jsx("textarea",{className:"w-full text-xs text-slate-500 bg-blue-50 p-4 rounded-xl border border-blue-100 outline-none min-h-[100px] leading-relaxed",value:c.usageGuide,onChange:y=>d(j,{usageGuide:y.target.value})})]})]})]},j))]})]})]})},xe=72,me=48,X=40,Fe=36,K=140,ue=40;function Ut(t,n){const p=new Set(t.map(m=>m.id)),a=new Map;for(const m of n)!p.has(m.from)||!p.has(m.to)||(a.has(m.from)||a.set(m.from,[]),a.get(m.from).push(m.to));const r=new Map,o=new Set;function x(m){if(r.has(m))return r.get(m);if(o.has(m))return 0;o.add(m);const d=a.get(m);if(!d||d.length===0)return r.set(m,0),o.delete(m),0;const l=1+Math.max(...d.map(x));return r.set(m,l),o.delete(m),l}return t.forEach(m=>x(m.id)),r}function Ft(t,n){const p=Ut(t,n),a=new Map;for(const d of t){const l=p.get(d.id)??0;a.has(l)||a.set(l,[]),a.get(l).push(d.id)}const r=[...new Set(p.values())].sort((d,l)=>d-l),o=[...r].reverse(),x=new Map,m=r.reduce((d,l)=>{const g=a.get(l)??[],w=(g.length-1)*me+g.length*K;return Math.max(d,w)},0);return o.forEach((d,l)=>{const g=a.get(d)??[],w=(g.length-1)*me+g.length*K,k=(m-w)/2;g.forEach((I,c)=>{const j=X+Fe+k+c*(K+me)+K/2,y=X+l*xe+ue/2;x.set(I,{x:j,y})})}),{positions:x,tiers:p,tierOrder:r}}const Wt=()=>{const[t,n]=h.useState(null),[p,a]=h.useState(!0),[r,o]=h.useState(null),[x,m]=h.useState(null),d=async()=>{var b,A;a(!0),o(null);try{const $=(await S.get("/api/dep-graph")).data;n({nodes:Array.isArray($==null?void 0:$.nodes)?$.nodes:[],edges:Array.isArray($==null?void 0:$.edges)?$.edges:[],projectRoot:($==null?void 0:$.projectRoot)??null,generatedAt:$==null?void 0:$.generatedAt})}catch(C){o(((A=(b=C.response)==null?void 0:b.data)==null?void 0:A.error)||C.message||"Failed to load dependency graph")}finally{a(!1)}};h.useEffect(()=>{d()},[]);const l=Array.isArray(t==null?void 0:t.nodes)?t.nodes:[],g=Array.isArray(t==null?void 0:t.edges)?t.edges:[],{positions:w,tiers:k,tierOrder:I}=h.useMemo(()=>Ft(l,g),[l,g]),c=h.useMemo(()=>{const b=new Map;return l.forEach(A=>{const C=k.get(A.id)??0;b.has(C)||b.set(C,[]),b.get(C).push(A.id)}),b},[l,k]),j=h.useMemo(()=>[...I].reverse(),[I]),{dependsOn:y,dependedBy:E}=h.useMemo(()=>{const b=new Map,A=new Map;return g.forEach(C=>{b.has(C.from)||b.set(C.from,[]),b.get(C.from).push(C.to),A.has(C.to)||A.set(C.to,[]),A.get(C.to).push(C.from)}),{dependsOn:b,dependedBy:A}},[g]),H=I.length,v=Math.max(...I.map(b=>(c.get(b)??[]).length),1),oe=(v-1)*me+v*K+Fe*2,Z=Math.max(600,X*2+oe),J=Math.max(420,X*2+H*xe),R=[{bg:"rgb(239 246 255)",border:"rgb(147 197 253)",text:"rgb(30 64 175)"},{bg:"rgb(240 253 244)",border:"rgb(134 239 172)",text:"rgb(22 101 52)"},{bg:"rgb(254 249 195)",border:"rgb(253 224 71)",text:"rgb(113 63 18)"},{bg:"rgb(254 243 199)",border:"rgb(253 186 116)",text:"rgb(154 52 18)"},{bg:"rgb(243 232 255)",border:"rgb(216 180 254)",text:"rgb(91 33 182)"}],U=b=>R[Math.min(b,R.length-1)]??R[0];return p?e.jsx("div",{className:"flex items-center justify-center min-h-[320px]",children:e.jsx("div",{className:"animate-spin rounded-full h-10 w-10 border-2 border-blue-600 border-t-transparent"})}):r?e.jsxs("div",{className:"rounded-xl border border-red-200 bg-red-50 p-6 text-red-700 shadow-sm",children:[e.jsx("p",{children:r}),e.jsx("button",{type:"button",onClick:d,className:"mt-4 px-4 py-2 rounded-lg bg-red-100 hover:bg-red-200 text-red-800 font-medium text-sm transition-colors",children:"重试"})]}):!t||l.length===0?e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-slate-50 p-8 text-slate-600 shadow-sm",children:[e.jsx("p",{className:"font-medium text-slate-700",children:"当前项目内未扫描到 SPM 包依赖关系。"}),e.jsxs("p",{className:"mt-2 text-sm",children:["请确保项目根目录下存在 ",e.jsx("code",{className:"bg-slate-200 px-1.5 py-0.5 rounded text-slate-800",children:"Package.swift"})," 或子目录中的 SPM 包,然后点击「Refresh Project」或执行 ",e.jsx("code",{className:"bg-slate-200 px-1.5 py-0.5 rounded",children:"asd spm-map"})," 刷新。"]})]}):e.jsxs("div",{className:"w-full max-w-[1400px] mx-auto space-y-6",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-xl bg-blue-50 border border-blue-100",children:e.jsx(ge,{size:22,className:"text-blue-600"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-slate-900",children:"项目依赖关系图"}),t.projectRoot&&e.jsxs("p",{className:"text-sm text-slate-500 mt-0.5",children:["项目根: ",e.jsx("code",{className:"bg-slate-100 px-1.5 py-0.5 rounded text-slate-600",children:t.projectRoot}),t.generatedAt&&e.jsxs("span",{className:"ml-2",children:["· 生成于 ",new Date(t.generatedAt).toLocaleString()]})]})]})]}),e.jsxs("button",{type:"button",onClick:d,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 font-medium text-sm shadow-sm transition-colors",children:[e.jsx(je,{size:16})," 刷新"]})]}),e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-slate-50/50 overflow-auto shadow-sm min-h-[480px] flex items-center justify-center relative",children:[e.jsxs("svg",{width:"100%",height:J,viewBox:`0 0 ${Z} ${J}`,className:"block min-h-[480px] w-full",style:{maxHeight:640},children:[e.jsx("defs",{children:e.jsx("filter",{id:"nodeShadow",x:"-20%",y:"-20%",width:"140%",height:"140%",children:e.jsx("feDropShadow",{dx:"0",dy:"2",stdDeviation:"2",floodOpacity:"0.12"})})}),j.map((b,A)=>{const C=U(A),$=X+A*xe;return e.jsx("rect",{x:X,y:$-ue/2-4,width:oe,height:xe+8,rx:8,fill:C.bg,stroke:C.border,strokeWidth:"1",opacity:.6},b)}),l.map(b=>{const A=w.get(b.id);if(!A)return null;const C=k.get(b.id)??0,$=U(j.indexOf(C)),ie=b.label.length>14?b.label.slice(0,13)+"…":b.label,Q=x===b.id,O=x?(y.get(x)??[]).includes(b.id):!1,ee=x?(E.get(x)??[]).includes(b.id):!1,te=x&&!Q&&!O&&!ee,G=x?Q?{fill:"white",stroke:"rgb(59 130 246)",text:"rgb(30 64 175)",strokeWidth:3,opacity:1}:O?{fill:"rgb(240 253 244)",stroke:"rgb(34 197 94)",text:"rgb(22 101 52)",strokeWidth:2,opacity:1}:ee?{fill:"rgb(245 243 255)",stroke:"rgb(139 92 246)",text:"rgb(91 33 182)",strokeWidth:2,opacity:1}:{fill:"rgb(248 250 252)",stroke:"rgb(203 213 225)",text:"rgb(148 163 184)",strokeWidth:1,opacity:.6}:{fill:"white",stroke:$.border,text:$.text,strokeWidth:2,opacity:1};return e.jsxs("g",{style:{cursor:"pointer",opacity:G.opacity},onClick:()=>m(Q?null:b.id),children:[e.jsx("rect",{x:A.x-K/2,y:A.y-ue/2,width:K,height:ue,rx:10,ry:10,fill:G.fill,stroke:G.stroke,strokeWidth:G.strokeWidth,filter:te?void 0:"url(#nodeShadow)"}),e.jsx("text",{x:A.x,y:A.y,textAnchor:"middle",dominantBaseline:"middle",fontSize:"12",fontWeight:"600",fill:G.text,pointerEvents:"none",children:ie})]},b.id)})]}),x&&e.jsxs("div",{className:"absolute top-4 right-4 w-72 rounded-xl border border-slate-200 bg-white shadow-lg z-10 p-4",role:"dialog","aria-label":"依赖关系",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 pb-2 border-b border-slate-100",children:[e.jsx("span",{className:"font-bold text-slate-800",children:x}),e.jsx("button",{type:"button",onClick:()=>m(null),className:"text-slate-400 hover:text-slate-600 text-lg leading-none","aria-label":"关闭",children:"×"})]}),e.jsxs("div",{className:"space-y-3 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-slate-600 mb-1",children:"依赖"}),e.jsx("ul",{className:"text-slate-700 space-y-0.5",children:(y.get(x)??[]).length===0?e.jsx("li",{className:"text-slate-400",children:"无"}):(y.get(x)??[]).map(b=>e.jsxs("li",{children:["→ ",b]},b))})]}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-slate-600 mb-1",children:"被依赖"}),e.jsx("ul",{className:"text-slate-700 space-y-0.5",children:(E.get(x)??[]).length===0?e.jsx("li",{className:"text-slate-400",children:"无"}):(E.get(x)??[]).map(b=>e.jsxs("li",{children:["← ",b]},b))})]})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-5 shadow-sm",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-800 mb-3 pb-2 border-b border-slate-100",children:["包列表 (",l.length,")"]}),e.jsx("ul",{className:"text-sm space-y-3 max-h-[280px] overflow-y-auto pr-1",children:l.map(b=>e.jsxs("li",{className:"pb-3 border-b border-slate-100 last:border-0 last:pb-0",children:[e.jsxs("div",{className:"flex items-baseline gap-2 flex-wrap",children:[e.jsx("span",{className:"font-semibold text-slate-800",children:b.id}),b.packageDir&&e.jsxs("span",{className:"text-slate-500 text-xs",children:["· ",b.packageDir]})]}),b.targets&&b.targets.length>0&&e.jsxs("div",{className:"mt-1.5 text-slate-500 text-xs pl-0",children:["Targets: ",e.jsx("span",{className:"text-slate-600",children:b.targets.join(", ")})]})]},b.id))})]}),e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-5 shadow-sm",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-800 mb-3 pb-2 border-b border-slate-100",children:["依赖关系(小图)(",g.length,")"]}),e.jsx("p",{className:"text-xs text-slate-500 mb-2",children:"主图不显示连线,点击节点可在浮窗查看该包依赖;此处列出全部 From → To。"}),e.jsx("ul",{className:"text-sm space-y-2 max-h-[280px] overflow-y-auto pr-1",children:g.map((b,A)=>e.jsxs("li",{className:"flex items-center gap-2 text-slate-700",children:[e.jsx("span",{className:"font-semibold text-slate-800",children:b.from}),e.jsx("span",{className:"text-slate-400 shrink-0",children:"→"}),e.jsx("span",{className:"font-semibold text-slate-800",children:b.to})]},`${b.from}-${b.to}-${A}`))})]})]})]})},Bt=({chatHistory:t,userInput:n,setUserInput:p,handleChat:a,isAiThinking:r})=>e.jsxs("div",{className:"max-w-3xl mx-auto flex flex-col h-full",children:[e.jsxs("div",{className:"flex-1 overflow-y-auto space-y-4 mb-4 pr-2",children:[t.map((o,x)=>e.jsx("div",{className:`flex ${o.role==="user"?"justify-end":"justify-start"}`,children:e.jsx("div",{className:`max-w-[80%] p-3 rounded-xl text-sm ${o.role==="user"?"bg-blue-600 text-white":"bg-white border border-slate-200 text-slate-800"}`,children:o.text})},x)),r&&e.jsx("div",{className:"text-slate-400 text-xs animate-pulse",children:"AI is thinking..."})]}),e.jsxs("form",{onSubmit:a,className:"flex gap-2 bg-white p-2 rounded-xl border border-slate-200 shadow-sm",children:[e.jsx("input",{type:"text",value:n,onChange:o=>p(o.target.value),placeholder:"Ask anything about your project...",className:"flex-1 px-4 py-2 outline-none text-sm"}),e.jsx("button",{type:"submit",disabled:r,className:"bg-blue-600 text-white px-4 py-2 rounded-lg text-sm font-medium hover:bg-blue-700 transition-colors disabled:bg-slate-300",children:"Ask"})]})]}),Kt=({editingSnippet:t,setEditingSnippet:n,handleSaveSnippet:p,closeSnippetEdit:a})=>{const[r,o]=h.useState("preview"),x=(t.content||t.body||[]).join(`
|
|
5
|
+
`),m=t.language==="objc"?"objectivec":t.language||"text",d=async()=>{try{const l=await S.post("/api/ai/summarize",{code:(t.content||t.body||[]).join(`
|
|
6
|
+
`),language:t.language});(l.data.title_cn||l.data.title)&&n({...t,title:l.data.title_cn||l.data.title,summary:l.data.summary_cn||l.data.summary,completionKey:l.data.trigger,content:l.data.code?l.data.code.split(`
|
|
7
|
+
`):t.content||t.body||[]})}catch{alert("AI rewrite failed")}};return e.jsx("div",{className:"fixed inset-0 bg-slate-900/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white w-full max-w-6xl rounded-2xl shadow-2xl flex flex-col max-h-[90vh]",children:[e.jsxs("div",{className:"p-6 border-b border-slate-100 flex justify-between items-center",children:[e.jsx("h2",{className:"text-xl font-bold",children:"Edit Snippet"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg mr-4",children:[e.jsxs("button",{onClick:()=>o("preview"),className:`px-4 py-1.5 rounded-md text-xs font-bold transition-all flex items-center gap-2 ${r==="preview"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:[e.jsx(Ne,{size:14})," Preview"]}),e.jsxs("button",{onClick:()=>o("edit"),className:`px-4 py-1.5 rounded-md text-xs font-bold transition-all flex items-center gap-2 ${r==="edit"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:[e.jsx(Y,{size:14})," Edit"]})]}),e.jsx("button",{onClick:a,className:"p-2 hover:bg-slate-100 rounded-full",children:e.jsx(pe,{size:20})})]})]}),e.jsxs("div",{className:"p-6 space-y-4 overflow-y-auto",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Title"}),e.jsx("input",{className:"w-full p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm",value:t.title,onChange:l=>n({...t,title:l.target.value})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Trigger"}),e.jsx("input",{className:"w-full p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm",value:t.completionKey,onChange:l=>n({...t,completionKey:l.target.value})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Category"}),e.jsx("select",{className:"w-full p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm outline-none",value:t.category||"Utility",onChange:l=>n({...t,category:l.target.value}),children:Te.filter(l=>l!=="All").map(l=>e.jsx("option",{value:l,children:l},l))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Language"}),e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg",children:[e.jsx("button",{onClick:()=>n({...t,language:"swift"}),className:`flex-1 px-2 py-1 rounded-md text-[10px] font-bold transition-all ${t.language==="swift"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"Swift"}),e.jsx("button",{onClick:()=>n({...t,language:"objectivec"}),className:`flex-1 px-2 py-1 rounded-md text-[10px] font-bold transition-all ${t.language==="objectivec"||t.language==="objc"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:"ObjC"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Summary"}),e.jsx("textarea",{rows:2,className:"w-full p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm outline-none resize-none",value:t.summary,onChange:l=>n({...t,summary:l.target.value})})]}),r==="edit"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"bg-slate-50 p-4 rounded-xl space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs font-bold text-slate-400 uppercase",children:[e.jsx(kt,{size:14})," Headers / Imports"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[10px] font-bold text-slate-400 uppercase",children:"Auto-include in Snippet"}),e.jsx("button",{onClick:()=>n({...t,includeHeaders:!t.includeHeaders}),className:`w-8 h-4 rounded-full relative transition-colors ${t.includeHeaders?"bg-blue-600":"bg-slate-300"}`,children:e.jsx("div",{className:`absolute top-0.5 w-3 h-3 bg-white rounded-full transition-all ${t.includeHeaders?"right-0.5":"left-0.5"}`})})]})]}),e.jsx("textarea",{rows:2,className:"w-full p-2 bg-white border border-slate-200 rounded-lg text-xs font-mono outline-none",placeholder:"e.g. #import <UIKit/UIKit.h> or import Foundation",value:(t.headers||[]).join(`
|
|
8
|
+
`),onChange:l=>n({...t,headers:l.target.value.split(`
|
|
9
|
+
`)})})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1",children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase",children:"Code"}),e.jsx("button",{onClick:d,className:"text-[10px] text-blue-600 font-bold hover:underline",children:"AI Rewrite"})]}),e.jsx("textarea",{className:"w-full h-64 p-4 bg-slate-900 text-slate-100 font-mono text-xs rounded-xl outline-none",value:x,onChange:l=>n({...t,content:(l.target.value||"").split(`
|
|
10
|
+
`)})})]})]}):e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"bg-white p-8 rounded-2xl border border-slate-100 shadow-sm min-h-[400px]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("label",{className:"block text-[10px] font-bold text-slate-400 uppercase tracking-widest",children:"Code Preview"}),e.jsx("button",{onClick:d,className:"text-[10px] text-blue-600 font-bold hover:underline",children:"AI Rewrite"})]}),e.jsx(he,{code:x,language:m,showLineNumbers:!0})]})})]}),e.jsxs("div",{className:"p-6 border-t border-slate-100 flex justify-end gap-3",children:[e.jsx("button",{onClick:a,className:"px-4 py-2 text-slate-600 font-medium",children:"Cancel"}),e.jsxs("button",{onClick:p,className:"px-6 py-2 bg-blue-600 text-white rounded-lg font-medium flex items-center gap-2 hover:bg-blue-700",children:[e.jsx(_e,{size:18}),"Save Changes"]})]})]})})},Vt=({editingRecipe:t,setEditingRecipe:n,handleSaveRecipe:p,closeRecipeEdit:a})=>{const[r,o]=h.useState("preview"),x=l=>{const g=l.split(`
|
|
11
|
+
`),w={};let k=0,I=!1;for(let j=0;j<g.length;j++){const y=g[j].trim();if(y==="---"){if(!I&&j===0){I=!0;continue}else if(I){I=!1,k=j+1;break}}const E=y.match(/^([a-zA-Z0-9_-]+):\s*(.*)/);if(E)w[E[1]]=E[2],I||(k=j+1);else if(!I&&y!==""){k=j;break}}const c=g.slice(k).join(`
|
|
12
|
+
`).trim();return{metadata:w,body:c}},{metadata:m,body:d}=x(t.content||"");return e.jsx("div",{className:"fixed inset-0 bg-slate-900/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white w-full max-w-6xl rounded-2xl shadow-2xl flex flex-col h-[85vh]",children:[e.jsxs("div",{className:"p-6 border-b border-slate-100 flex justify-between items-center",children:[e.jsx("h2",{className:"text-xl font-bold",children:"Edit Recipe"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-lg mr-4",children:[e.jsxs("button",{onClick:()=>o("preview"),className:`px-4 py-1.5 rounded-md text-xs font-bold transition-all flex items-center gap-2 ${r==="preview"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:[e.jsx(Ne,{size:14})," Preview"]}),e.jsxs("button",{onClick:()=>o("edit"),className:`px-4 py-1.5 rounded-md text-xs font-bold transition-all flex items-center gap-2 ${r==="edit"?"bg-white shadow-sm text-blue-600":"text-slate-400"}`,children:[e.jsx(Y,{size:14})," Edit"]})]}),e.jsx("button",{onClick:a,className:"p-2 hover:bg-slate-100 rounded-full",children:e.jsx(pe,{size:20})})]})]}),e.jsxs("div",{className:"p-6 space-y-4 flex-1 flex flex-col overflow-hidden",children:[r==="edit"&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Path"}),e.jsx("input",{className:"w-full p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm",value:t.name,onChange:l=>n({...t,name:l.target.value})})]}),e.jsx("div",{className:"flex-1 flex flex-col min-h-0",children:r==="edit"?e.jsxs(e.Fragment,{children:[e.jsx("label",{className:"block text-xs font-bold text-slate-400 uppercase mb-1",children:"Markdown Content"}),e.jsx("textarea",{className:"w-full flex-1 p-4 bg-slate-900 text-slate-100 font-mono text-xs rounded-xl outline-none leading-relaxed",value:t.content||"",onChange:l=>n({...t,content:l.target.value})})]}):e.jsxs("div",{className:"flex-1 overflow-y-auto space-y-6",children:[Object.keys(m).length>0&&e.jsxs("div",{className:"bg-slate-50 border border-slate-200 rounded-2xl p-6",children:[e.jsx("h3",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-4",children:"Recipe Metadata"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-y-4 gap-x-8",children:Object.entries(m).map(([l,g])=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] text-slate-400 font-bold uppercase mb-1",children:l}),e.jsx("span",{className:"text-sm text-slate-700 break-all font-medium",children:g.startsWith("[")&&g.endsWith("]")?e.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:g.slice(1,-1).split(",").map((w,k)=>e.jsx("span",{className:"px-2 py-0.5 bg-white border border-slate-200 rounded text-[10px] font-mono",children:w.trim()},k))}):g})]},l))})]}),e.jsx("div",{className:"bg-white p-8 rounded-2xl border border-slate-100 shadow-sm min-h-[400px]",children:d?e.jsx(Ue,{content:d,showLineNumbers:!0}):e.jsx("div",{className:"flex items-center justify-center h-full text-slate-300 italic",children:"No content body"})})]})})]}),e.jsxs("div",{className:"p-6 border-t border-slate-100 flex justify-end gap-3",children:[e.jsx("button",{onClick:a,className:"px-4 py-2 text-slate-600 font-medium",children:"Cancel"}),e.jsxs("button",{onClick:p,className:"px-6 py-2 bg-blue-600 text-white rounded-lg font-medium flex items-center gap-2 hover:bg-blue-700",children:[e.jsx(_e,{size:18}),"Save Changes"]})]})]})})},qt=({setShowCreateModal:t,createPath:n,setCreatePath:p,handleCreateFromPath:a,handleCreateFromClipboard:r,isExtracting:o})=>e.jsx("div",{className:"fixed inset-0 bg-slate-900/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white w-full max-w-lg rounded-2xl shadow-2xl overflow-hidden",children:[e.jsxs("div",{className:"p-6 border-b border-slate-100 flex justify-between items-center bg-slate-50",children:[e.jsxs("h2",{className:"text-xl font-bold flex items-center gap-2 text-slate-800",children:[e.jsx(De,{size:24,className:"text-blue-600"})," New Recipe"]}),e.jsx("button",{onClick:()=>t(!1),className:"p-2 hover:bg-white rounded-full transition-colors",children:e.jsx(pe,{size:20})})]}),e.jsxs("div",{className:"p-8 space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs font-bold text-slate-400 uppercase tracking-widest",children:[e.jsx(He,{size:14})," Import from Project Path"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{className:"flex-1 p-3 bg-slate-100 border-none rounded-xl text-sm outline-none focus:ring-2 focus:ring-blue-500",placeholder:"e.g. Sources/MyModule/Auth.swift",value:n,onChange:x=>p(x.target.value)}),e.jsx("button",{onClick:a,disabled:!n||o,className:"bg-slate-900 text-white px-4 py-2 rounded-xl text-sm font-bold hover:bg-slate-800 disabled:opacity-50",children:"Scan File"})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("div",{className:"w-full border-t border-slate-100"})}),e.jsx("div",{className:"relative flex justify-center text-xs uppercase",children:e.jsx("span",{className:"bg-white px-2 text-slate-300 font-bold",children:"Or"})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs font-bold text-slate-400 uppercase tracking-widest",children:[e.jsx(St,{size:14})," Import from Clipboard"]}),e.jsxs("button",{onClick:()=>r(),disabled:o,className:"w-full flex items-center justify-center gap-3 p-4 bg-blue-50 text-blue-700 rounded-xl font-bold hover:bg-blue-100 transition-all border border-blue-100",children:[e.jsx(re,{size:20})," Use Copied Code"]})]})]}),o&&e.jsxs("div",{className:"bg-blue-600 text-white p-4 flex items-center justify-center gap-3 animate-pulse",children:[e.jsx(ne,{size:20,className:"animate-spin"}),e.jsx("span",{className:"font-bold text-sm",children:"AI is thinking..."})]})]})});function Xt(t){const n=t.replace(/^---[\s\S]*?---\s*\n?/,"").trim(),p=n.match(/```[\w]*\n([\s\S]*?)```/);return p&&p[1]?p[1].trim():n.slice(0,8e3)}const Yt=({searchQ:t,insertPath:n,onClose:p})=>{const[a,r]=h.useState([]),[o,x]=h.useState(!0),[m,d]=h.useState(null);h.useEffect(()=>{const g=t?encodeURIComponent(t):"";S.get(`/api/recipes/search?q=${g}`).then(w=>r(w.data.results||[])).catch(()=>r([])).finally(()=>x(!1))},[t]);const l=async g=>{d(g.name);try{const w=Xt(g.content);await S.post("/api/insert-at-search-mark",{path:n,content:w}),alert("✅ 已插入到 "+n),p()}catch{alert("❌ 插入失败")}finally{d(null)}};return e.jsx("div",{className:"fixed inset-0 bg-slate-900/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white w-full max-w-2xl rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[85vh]",children:[e.jsxs("div",{className:"p-6 border-b border-slate-100 flex justify-between items-center bg-slate-50",children:[e.jsxs("h2",{className:"text-xl font-bold flex items-center gap-2 text-slate-800",children:[e.jsx(Ge,{size:24,className:"text-blue-600"})," as:search — 选择并插入"]}),e.jsx("button",{onClick:p,className:"p-2 hover:bg-white rounded-full transition-colors",children:e.jsx(pe,{size:20})})]}),e.jsxs("div",{className:"p-4 text-sm text-slate-500 border-b border-slate-100",children:["关键词: ",t||"(全部)"," · 插入到: ",n]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:o?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"})}):a.length===0?e.jsx("div",{className:"text-slate-500 text-center py-8",children:"未找到匹配的 Recipe"}):e.jsx("ul",{className:"space-y-2",children:a.map(g=>e.jsx("li",{children:e.jsxs("button",{type:"button",onClick:()=>l(g),disabled:m!==null,className:"w-full flex items-center justify-between gap-3 p-4 rounded-xl border border-slate-200 hover:border-blue-300 hover:bg-blue-50/50 transition-all text-left disabled:opacity-50",children:[e.jsx("span",{className:"font-medium text-slate-800 truncate flex-1",children:g.name}),m===g.name?e.jsxs("span",{className:"text-blue-600 text-sm flex items-center gap-1",children:[e.jsx("span",{className:"animate-spin",children:"⏳"})," 插入中..."]}):e.jsxs("span",{className:"text-blue-600 text-sm flex items-center gap-1",children:[e.jsx(Oe,{size:16})," 插入"]})]})},g.name))})})]})})},Zt=()=>{const t=()=>{const s=window.location.pathname.replace(/^\//,"").split("/")[0]||"";return Et.includes(s)?s:"snippets"},[n,p]=h.useState(null),[a,r]=h.useState(t()),[o,x]=h.useState(""),[m,d]=h.useState(!0),[l,g]=h.useState(null),[w,k]=h.useState(null),[I,c]=h.useState([]),[j,y]=h.useState(null),[E,H]=h.useState(!1),[v,L]=h.useState({current:0,total:0,status:""}),[oe,Z]=h.useState([]),[J,R]=h.useState([]),[U,b]=h.useState("All"),[A,C]=h.useState(!1),[$,ie]=h.useState(""),[Q,O]=h.useState(!1),[ee,te]=h.useState([]),[G,we]=h.useState(""),[ve,be]=h.useState(!1),[se,Ce]=h.useState(null),[fe,ke]=h.useState(null),W=h.useRef(null),B=h.useRef(null),We=()=>{W.current&&W.current.abort(),B.current&&B.current.abort(),be(!1)},V=(s,i)=>{r(s);const f=i!=null&&i.preserveSearch&&window.location.search?window.location.search:"";window.history.pushState({},document.title,`/${s}${f}`)},Se=s=>{const i=s.title.replace(/^\[.*?\]\s*/,"");g({...s,title:i}),r("snippets");const f=new URLSearchParams(window.location.search);f.set("edit",s.identifier),window.history.pushState({},document.title,`/snippets?${f.toString()}`)},$e=()=>{g(null),window.history.replaceState({},document.title,"/snippets")},Ae=s=>{k(s),r("recipes");const i=new URLSearchParams(window.location.search);i.set("edit",encodeURIComponent(s.name)),window.history.pushState({},document.title,`/recipes?${i.toString()}`)},Ie=()=>{k(null),window.history.replaceState({},document.title,"/recipes")};h.useEffect(()=>{o===""&&Ce(null)},[o]),h.useEffect(()=>{r(t())},[]),h.useEffect(()=>{var u;if(!n)return;const s=window.location.pathname.replace(/^\//,"").split("/")[0],f=new URLSearchParams(window.location.search).get("edit");if(s==="snippets"&&f&&((u=n.rootSpec)!=null&&u.list)){const N=n.rootSpec.list.find(z=>z.identifier===f);N&&!l&&(r("snippets"),Se(N))}if(s==="recipes"&&f&&n.recipes)try{const N=decodeURIComponent(f),z=n.recipes.find(P=>P.name===N);z&&!w&&(r("recipes"),Ae(z))}catch{}},[n]),h.useEffect(()=>{F(),ze();const s=()=>{r(t())};window.addEventListener("popstate",s);const i=new URLSearchParams(window.location.search),f=i.get("action"),u=i.get("path"),N=i.get("source"),z=i.get("q")||"";f==="search"&&u?ke({q:z,path:u}):f==="create"&&u&&(ie(u),C(!0),setTimeout(async()=>{if(N==="clipboard")try{const P=await navigator.clipboard.readText();if(P&&P.trim()){Pe(u);return}}catch{}Ve(u)},500))},[]);const F=async()=>{d(!0);try{const s=await S.get("/api/data");p(s.data)}catch{}finally{d(!1)}},ze=async()=>{try{const s=await S.get("/api/spm/targets");c(s.data)}catch{}},Be=async()=>{try{await S.post("/api/commands/install"),alert("✅ Successfully synced to Xcode CodeSnippets!")}catch{alert("❌ Sync failed")}},Ke=async()=>{try{await S.post("/api/commands/spm-map"),ze(),alert("✅ Project structure refreshed!")}catch{alert("❌ Refresh failed")}},Ve=async s=>{O(!0);try{const i=await S.post("/api/extract/path",{relativePath:s});R(i.data.result.map(f=>({...f,mode:"full",lang:"cn",includeHeaders:!0,category:f.category||"Utility",summary:f.summary_cn||f.summary||"",usageGuide:f.usageGuide_cn||f.usageGuide||""}))),V("spm",{preserveSearch:!0}),C(!1)}catch{alert("Extraction failed.")}finally{O(!1)}},qe=async()=>{if($){O(!0);try{const s=await S.post("/api/extract/path",{relativePath:$});R(s.data.result.map(i=>({...i,mode:"full",lang:"cn",includeHeaders:!0,category:i.category||"Utility",summary:i.summary_cn||i.summary||"",usageGuide:i.usageGuide_cn||i.usageGuide||""}))),V("spm"),C(!1),s.data.isMarked?alert("🎯 Precision Lock: Successfully extracted code between // as:code markers."):alert("ℹ️ No markers found. AI is analyzing the full file.")}catch{alert("Extraction failed. Check path.")}finally{O(!1)}}},Pe=async s=>{try{const i=await navigator.clipboard.readText();if(!i)return alert("Clipboard is empty");O(!0);const f=s||$,N=(await S.post("/api/extract/text",{text:i,...f?{relativePath:f}:{}})).data;R([{...N,mode:"full",lang:"cn",includeHeaders:!0,category:N.category||"Utility",summary:N.summary_cn||N.summary||"",usageGuide:N.usageGuide_cn||N.usageGuide||""}]),V("spm",{preserveSearch:!0}),C(!1)}catch{alert("Failed to read clipboard or AI error")}finally{O(!1)}},Ee=[{status:"正在读取 Target 源文件...",percent:15},{status:"正在发送到 AI 分析...",percent:35},{status:"正在识别可复用代码片段...",percent:55},{status:"正在生成摘要与使用指南...",percent:75},{status:"即将完成...",percent:92}],Xe=async s=>{var z,P,q,ce;if(E)return;W.current&&W.current.abort();const i=new AbortController;W.current=i,y(s.name),H(!0),R([]),Z([]),L({current:0,total:100,status:"正在获取待扫描文件列表..."});const f=4e3;let u=0;const N=setInterval(()=>{u=Math.min(u+1,Ee.length);const D=Ee[u-1];D&&L(le=>({...le,current:D.percent,status:D.status}))},f);try{const D=await S.post("/api/spm/target-files",{target:s},{signal:i.signal}),le=((z=D.data)==null?void 0:z.files)||[],it=((P=D.data)==null?void 0:P.count)??le.length;Z(le),L(_=>({..._,current:10,status:`正在分析 ${it} 个文件...`}));const ct=await S.post("/api/spm/scan",{target:s},{signal:i.signal});clearInterval(N),L({current:100,total:100,status:"扫描完成"});const M=ct.data,Me=Array.isArray(M)?M:(M==null?void 0:M.recipes)??[],Le=!Array.isArray(M)&&(M!=null&&M.scannedFiles)?M.scannedFiles:le;Me.length>0||Le.length>0?(R(Me.map(_=>({..._,mode:"full",lang:"cn",includeHeaders:_.includeHeaders!==!1,category:_.category||"Utility",summary:_.summary_cn||_.summary||"",usageGuide:_.usageGuide_cn||_.usageGuide||""}))),Z(Le)):typeof M=="object"&&M!==null&&"message"in M?alert(M.message||"Scan failed: No source files."):alert("Scan failed: Unexpected response format")}catch(D){if(clearInterval(N),S.isCancel(D))return;alert(`Scan failed: ${((ce=(q=D.response)==null?void 0:q.data)==null?void 0:ce.error)||D.message}`)}finally{W.current===i&&(H(!1),L({current:0,total:0,status:""}),W.current=null)}},Ye=(s,i)=>{const f=[...J],u={...f[s],...i};i.lang!==void 0?(u.summary=i.lang==="cn"?u.summary_cn||u.summary:u.summary_en||u.summary,u.usageGuide=i.lang==="cn"?u.usageGuide_cn||u.usageGuide:u.usageGuide_en||u.usageGuide):(i.summary!==void 0&&(u.lang==="cn"?u.summary_cn=i.summary:u.summary_en=i.summary),i.usageGuide!==void 0&&(u.lang==="cn"?u.usageGuide_cn=i.usageGuide:u.usageGuide_en=i.usageGuide)),f[s]=u,R(f)},Ze=async s=>{try{const i=s.trigger.split(/[,,\s]+/).map(z=>z.trim()).filter(Boolean),f=crypto.randomUUID().toUpperCase();if(s.mode==="full")for(let z=0;z<i.length;z++){const P=i[z],q=s.includeHeaders!==!1,ce={identifier:z===0?f:crypto.randomUUID().toUpperCase(),title:i.length>1?`${s.title} (${P})`:s.title,completionKey:P,category:s.category,summary:s.summary,language:s.language,content:s.code.split(`
|
|
13
|
+
`),headers:q?s.headers||[]:[],headerPaths:q?s.headerPaths||[]:void 0,moduleName:s.moduleName,includeHeaders:q};await S.post("/api/snippets/save",{snippet:ce})}const u=`${s.title.replace(/\s+/g,"-")}.md`,N=`---
|
|
14
|
+
id: ${s.mode==="full"?f:"preview-only"}
|
|
15
|
+
title: ${s.title}
|
|
16
|
+
language: ${s.language}
|
|
17
|
+
trigger: ${i.join(", ")}
|
|
18
|
+
category: ${s.category||"Utility"}
|
|
19
|
+
summary: ${s.summary}
|
|
20
|
+
type: ${s.mode}
|
|
21
|
+
headers: ${JSON.stringify(s.headers||[])}
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Snippet / Code Reference
|
|
25
|
+
|
|
26
|
+
\`\`\`${s.language}
|
|
27
|
+
${s.code}
|
|
28
|
+
\`\`\`
|
|
29
|
+
|
|
30
|
+
## AI Context / Usage Guide
|
|
31
|
+
|
|
32
|
+
${s.usageGuide}
|
|
33
|
+
`;await S.post("/api/recipes/save",{name:u,content:N}),alert(s.mode==="full"?"✅ Saved as Snippet & Recipe!":"✅ Saved to KB!"),F(),R(z=>z.filter(P=>P.title!==s.title))}catch{alert("❌ Failed to save")}},Je=async()=>{if(w)try{await S.post("/api/recipes/save",{name:w.name,content:w.content}),Ie(),F()}catch{alert("Failed to save recipe")}},Qe=async s=>{if(window.confirm("Are you sure?"))try{await S.post("/api/recipes/delete",{name:s}),F()}catch{alert("Failed to delete")}},et=async(s,i)=>{try{await S.post("/api/candidates/delete",{targetName:s,candidateId:i}),F()}catch{alert("Action failed.")}},tt=async()=>{if(l)try{await S.post("/api/snippets/save",{snippet:l}),$e(),F()}catch{alert("Failed to save snippet")}},st=async(s,i)=>{if(window.confirm(`Delete snippet: ${i}?`))try{await S.post("/api/snippets/delete",{identifier:s}),F()}catch{alert("Failed to delete")}},lt=async s=>{if(s.preventDefault(),!G.trim()||ve)return;B.current&&B.current.abort();const i=new AbortController;B.current=i;const f={role:"user",text:G};te(u=>[...u,f]),we(""),be(!0);try{const u=await S.post("/api/ai/chat",{prompt:G,history:ee.map(N=>({role:N.role,content:N.text}))},{signal:i.signal});te(N=>[...N,{role:"model",text:u.data.text}])}catch(u){if(S.isCancel(u))return;te(N=>[...N,{role:"model",text:"Error"}])}finally{B.current===i&&(B.current=null,be(!1))}},at=(n==null?void 0:n.rootSpec.list.filter(s=>{const i=s.title||"",f=s.completionKey||"",u=i.toLowerCase().includes(o.toLowerCase())||f.toLowerCase().includes(o.toLowerCase());if(U==="All")return u;const N=s.category||"Utility";return u&&N===U}))||[],rt=((n==null?void 0:n.recipes)||[]).filter(s=>{if(se)return se.some(P=>P.metadata.type==="recipe"&&P.metadata.name===s.name);const i=s.name||"",f=s.content||"",u=i.toLowerCase().includes(o.toLowerCase())||f.toLowerCase().includes(o.toLowerCase());if(U==="All")return u;const N=f?f.match(/category:\s*(.*)/):null,z=N?N[1].trim():"Utility";return u&&z===U}).sort((s,i)=>{var f,u;if(se){const N=((f=se.find(P=>P.metadata.name===s.name))==null?void 0:f.similarity)||0;return(((u=se.find(P=>P.metadata.name===i.name))==null?void 0:u.similarity)||0)-N}return 0}),nt=I.filter(s=>s.name.toLowerCase().includes(o.toLowerCase())).sort((s,i)=>{const f=de(s.name),u=de(i.name);return f&&!u?1:!f&&u?-1:s.name.localeCompare(i.name)}),ot=Object.values((n==null?void 0:n.candidates)||{}).reduce((s,i)=>s+i.items.length,0);return e.jsxs("div",{className:"flex h-screen bg-slate-50 text-slate-900 overflow-hidden font-sans",children:[e.jsx(Mt,{activeTab:a,navigateToTab:V,handleRefreshProject:Ke,candidateCount:ot}),e.jsxs("main",{className:"flex-1 flex flex-col overflow-hidden relative",children:[e.jsx(Lt,{searchQuery:o,setSearchQuery:x,setShowCreateModal:C,handleSyncToXcode:Be,aiConfig:n==null?void 0:n.aiConfig,onBeforeAiSwitch:We,onAiConfigChange:F,onSemanticSearchResults:s=>{Ce(s),a!=="recipes"&&a!=="snippets"&&V("recipes")}}),(a==="snippets"||a==="recipes")&&e.jsx(Rt,{selectedCategory:U,setSelectedCategory:b}),e.jsx("div",{className:"flex-1 overflow-y-auto p-8",children:m?e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"})}):a==="snippets"?e.jsx(Gt,{snippets:at,openSnippetEdit:Se,handleDeleteSnippet:st}):a==="recipes"?e.jsx(Dt,{recipes:rt,openRecipeEdit:Ae,handleDeleteRecipe:Qe}):a==="help"?e.jsx(Ht,{}):a==="candidates"?e.jsx(_t,{data:n,isShellTarget:de,handleDeleteCandidate:et,onAuditCandidate:s=>{R([{...s,mode:"full",lang:"cn",includeHeaders:!0,summary:s.summary_cn||s.summary||"",usageGuide:s.usageGuide_cn||s.usageGuide||""}]),V("spm")}}):a==="depgraph"?e.jsx(Wt,{}):a==="spm"?e.jsx(Tt,{targets:I,filteredTargets:nt,selectedTargetName:j,isScanning:E,scanProgress:v,scanFileList:oe,scanResults:J,handleScanTarget:Xe,handleUpdateScanResult:Ye,handleSaveExtracted:Ze,isShellTarget:de}):e.jsx(Bt,{chatHistory:ee,userInput:G,setUserInput:we,handleChat:lt,isAiThinking:ve})}),l&&e.jsx(Kt,{editingSnippet:l,setEditingSnippet:g,handleSaveSnippet:tt,closeSnippetEdit:$e}),w&&e.jsx(Vt,{editingRecipe:w,setEditingRecipe:k,handleSaveRecipe:Je,closeRecipeEdit:Ie}),A&&e.jsx(qt,{setShowCreateModal:C,createPath:$,setCreatePath:ie,handleCreateFromPath:qe,handleCreateFromClipboard:Pe,isExtracting:Q}),fe&&e.jsx(Yt,{searchQ:fe.q,insertPath:fe.path,onClose:()=>{ke(null),window.history.replaceState({},document.title,window.location.pathname)}})]})]})};$t.createRoot(document.getElementById("root")).render(e.jsx(At.StrictMode,{children:e.jsx(Zt,{})}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-600:oklch(59.6% .145 163.225);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-600:oklch(60.9% .126 221.723);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-600:oklch(51.1% .262 276.966);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-600:oklch(55.8% .288 302.321);--color-pink-50:oklch(97.1% .014 343.198);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-600:oklch(59.2% .249 .584);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-0\.5{right:calc(var(--spacing)*.5)}.right-4{right:calc(var(--spacing)*4)}.left-0\.5{left:calc(var(--spacing)*.5)}.left-3{left:calc(var(--spacing)*3)}.z-10{z-index:10}.z-50{z-index:50}.m-auto{margin:auto}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing)*3)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-4{margin-right:calc(var(--spacing)*4)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.h-64{height:calc(var(--spacing)*64)}.h-\[85vh\]{height:85vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[280px\]{max-height:280px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[100px\]{min-height:100px}.min-h-\[320px\]{min-height:320px}.min-h-\[400px\]{min-height:400px}.min-h-\[480px\]{min-height:480px}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-16{width:calc(var(--spacing)*16)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-96{width:calc(var(--spacing)*96)}.w-\[512px\]{width:512px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-\[1400px\]{max-width:1400px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-180{rotate:180deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing)*8)}.gap-y-4{row-gap:calc(var(--spacing)*4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-600{border-color:var(--color-blue-600)}.border-cyan-100{border-color:var(--color-cyan-100)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-indigo-100{border-color:var(--color-indigo-100)}.border-orange-100{border-color:var(--color-orange-100)}.border-pink-100{border-color:var(--color-pink-100)}.border-purple-100{border-color:var(--color-purple-100)}.border-red-200{border-color:var(--color-red-200)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.border-t-blue-600{border-top-color:var(--color-blue-600)}.border-t-transparent{border-top-color:#0000}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-cyan-50{background-color:var(--color-cyan-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-pink-50{background-color:var(--color-pink-50)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50)50%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/50{background-color:#0f172b80}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/50{background-color:color-mix(in oklab,var(--color-slate-900)50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-0{padding-left:calc(var(--spacing)*0)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-600{color:var(--color-emerald-600)}.text-indigo-600{color:var(--color-indigo-600)}.text-orange-600{color:var(--color-orange-600)}.text-pink-600{color:var(--color-pink-600)}.text-purple-600{color:var(--color-purple-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-slate-100{color:var(--color-slate-100)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-blue-200{--tw-ring-color:var(--color-blue-200)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.first\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}@media(hover:hover){.hover\:border-blue-300:hover{border-color:var(--color-blue-300)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-50\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-50\/50:hover{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-200:hover{background-color:var(--color-red-200)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-blue-500\/10:focus{--tw-ring-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.focus\:ring-blue-500\/10:focus{--tw-ring-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.focus\:ring-blue-500\/20:focus{--tw-ring-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-blue-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\:bg-slate-300:disabled{background-color:var(--color-slate-300)}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{R as S,_ as pe,a as te,b as he,c as K,r as me,u as be,d as fe,e as ke,V as ye,f as ve,v as we,t as Se,j as U,g as V}from"./vendor-CAT0H0kn.js";function Z(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function E(e){for(var o=1;o<arguments.length;o++){var t=arguments[o]!=null?arguments[o]:{};o%2?Z(Object(t),!0).forEach(function(n){te(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Z(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function xe(e){var o=e.length;if(o===0||o===1)return e;if(o===2)return[e[0],e[1],"".concat(e[0],".").concat(e[1]),"".concat(e[1],".").concat(e[0])];if(o===3)return[e[0],e[1],e[2],"".concat(e[0],".").concat(e[1]),"".concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[0]),"".concat(e[1],".").concat(e[2]),"".concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[1],".").concat(e[0])];if(o>=4)return[e[0],e[1],e[2],e[3],"".concat(e[0],".").concat(e[1]),"".concat(e[0],".").concat(e[2]),"".concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[0]),"".concat(e[1],".").concat(e[2]),"".concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[1]),"".concat(e[2],".").concat(e[3]),"".concat(e[3],".").concat(e[0]),"".concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[0]),"".concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[1],".").concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[2],".").concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[3],".").concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[2],".").concat(e[1],".").concat(e[0])]}var G={};function Ne(e){if(e.length===0||e.length===1)return e;var o=e.join(".");return G[o]||(G[o]=xe(e)),G[o]}function je(e){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0,n=e.filter(function(a){return a!=="token"}),c=Ne(n);return c.reduce(function(a,u){return E(E({},a),t[u])},o)}function _(e){return e.join(" ")}function Oe(e,o){var t=0;return function(n){return t+=1,n.map(function(c,a){return ce({node:c,stylesheet:e,useInlineStyles:o,key:"code-segment-".concat(t,"-").concat(a)})})}}function ce(e){var o=e.node,t=e.stylesheet,n=e.style,c=n===void 0?{}:n,a=e.useInlineStyles,u=e.key,i=o.properties,f=o.type,g=o.tagName,l=o.value;if(f==="text")return l;if(g){var r=Oe(t,a),d;if(!a)d=E(E({},i),{},{className:_(i.className)});else{var s=Object.keys(t).reduce(function(y,w){return w.split(".").forEach(function(N){y.includes(N)||y.push(N)}),y},[]),h=i.className&&i.className.includes("token")?["token"]:[],k=i.className&&h.concat(i.className.filter(function(y){return!s.includes(y)}));d=E(E({},i),{},{className:_(k)||void 0,style:je(i.className,Object.assign({},i.style,c),t)})}var v=r(o.children);return S.createElement(g,pe({key:u},d),v)}}const Le=(function(e,o){var t=e.listLanguages();return t.indexOf(o)!==-1});var Ce=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function ee(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function x(e){for(var o=1;o<arguments.length;o++){var t=arguments[o]!=null?arguments[o]:{};o%2?ee(Object(t),!0).forEach(function(n){te(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ee(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}var Pe=/\n/g;function ze(e){return e.match(Pe)}function Te(e){var o=e.lines,t=e.startingLineNumber,n=e.style;return o.map(function(c,a){var u=a+t;return S.createElement("span",{key:"line-".concat(a),className:"react-syntax-highlighter-line-number",style:typeof n=="function"?n(u):n},"".concat(u,`
|
|
2
|
+
`))})}function Ee(e){var o=e.codeString,t=e.codeStyle,n=e.containerStyle,c=n===void 0?{float:"left",paddingRight:"10px"}:n,a=e.numberStyle,u=a===void 0?{}:a,i=e.startingLineNumber;return S.createElement("code",{style:Object.assign({},t,c)},Te({lines:o.replace(/\n$/,"").split(`
|
|
3
|
+
`),style:u,startingLineNumber:i}))}function Re(e){return"".concat(e.toString().length,".25em")}function le(e,o){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(e),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:o},children:[{type:"text",value:e}]}}function ae(e,o,t){var n={display:"inline-block",minWidth:Re(t),paddingRight:"1em",textAlign:"right",userSelect:"none"},c=typeof e=="function"?e(o):e,a=x(x({},n),c);return a}function W(e){var o=e.children,t=e.lineNumber,n=e.lineNumberStyle,c=e.largestLineNumber,a=e.showInlineLineNumbers,u=e.lineProps,i=u===void 0?{}:u,f=e.className,g=f===void 0?[]:f,l=e.showLineNumbers,r=e.wrapLongLines,d=e.wrapLines,s=d===void 0?!1:d,h=s?x({},typeof i=="function"?i(t):i):{};if(h.className=h.className?[].concat(K(h.className.trim().split(/\s+/)),K(g)):g,t&&a){var k=ae(n,t,c);o.unshift(le(t,k))}return r&l&&(h.style=x({display:"flex"},h.style)),{type:"element",tagName:"span",properties:h,children:o}}function se(e){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];e.length===void 0&&(e=[e]);for(var n=0;n<e.length;n++){var c=e[n];if(c.type==="text")t.push(W({children:[c],className:K(new Set(o))}));else if(c.children){var a,u=o.concat(((a=c.properties)===null||a===void 0?void 0:a.className)||[]);se(c.children,u).forEach(function(i){return t.push(i)})}}return t}function $e(e,o,t,n,c,a,u,i,f){var g,l=se(e.value),r=[],d=-1,s=0;function h(m,p){var b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return W({children:m,lineNumber:p,lineNumberStyle:i,largestLineNumber:u,showInlineLineNumbers:c,lineProps:t,className:b,showLineNumbers:n,wrapLongLines:f,wrapLines:o})}function k(m,p){if(n&&p&&c){var b=ae(i,p,u);m.unshift(le(p,b))}return m}function v(m,p){var b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return o||b.length>0?h(m,p,b):k(m,p)}for(var y=function(){var p=l[s],b=p.children[0].value,H=ze(b);if(H){var L=b.split(`
|
|
4
|
+
`);L.forEach(function(R,C){var P=n&&r.length+a,M={type:"text",value:"".concat(R,`
|
|
5
|
+
`)};if(C===0){var z=l.slice(d+1,s).concat(W({children:[M],className:p.properties.className})),I=v(z,P);r.push(I)}else if(C===L.length-1){var D=l[s+1]&&l[s+1].children&&l[s+1].children[0],$={type:"text",value:"".concat(R)};if(D){var A=W({children:[$],className:p.properties.className});l.splice(s+1,0,A)}else{var F=[$],j=v(F,P,p.properties.className);r.push(j)}}else{var O=[M],T=v(O,P,p.properties.className);r.push(T)}}),d=s}s++};s<l.length;)y();if(d!==l.length-1){var w=l.slice(d+1,l.length);if(w&&w.length){var N=n&&r.length+a,q=v(w,N);r.push(q)}}return o?r:(g=[]).concat.apply(g,r)}function qe(e){var o=e.rows,t=e.stylesheet,n=e.useInlineStyles;return o.map(function(c,a){return ce({node:c,stylesheet:t,useInlineStyles:n,key:"code-segment-".concat(a)})})}function ie(e){return e&&typeof e.highlightAuto<"u"}function He(e){var o=e.astGenerator,t=e.language,n=e.code,c=e.defaultCodeValue;if(ie(o)){var a=Le(o,t);return t==="text"?{value:c,language:"text"}:a?o.highlight(t,n):o.highlightAuto(n)}try{return t&&t!=="text"?{value:o.highlight(n,t)}:{value:c}}catch{return{value:c}}}function Me(e,o){return function(n){var c,a,u=n.language,i=n.children,f=n.style,g=f===void 0?o:f,l=n.customStyle,r=l===void 0?{}:l,d=n.codeTagProps,s=d===void 0?{className:u?"language-".concat(u):void 0,style:x(x({},g['code[class*="language-"]']),g['code[class*="language-'.concat(u,'"]')])}:d,h=n.useInlineStyles,k=h===void 0?!0:h,v=n.showLineNumbers,y=v===void 0?!1:v,w=n.showInlineLineNumbers,N=w===void 0?!0:w,q=n.startingLineNumber,m=q===void 0?1:q,p=n.lineNumberContainerStyle,b=n.lineNumberStyle,H=b===void 0?{}:b,L=n.wrapLines,R=n.wrapLongLines,C=R===void 0?!1:R,P=n.lineProps,M=P===void 0?{}:P,z=n.renderer,I=n.PreTag,D=I===void 0?"pre":I,$=n.CodeTag,A=$===void 0?"code":$,F=n.code,j=F===void 0?(Array.isArray(i)?i[0]:i)||"":F,O=n.astGenerator,T=he(n,Ce);O=O||e;var J=y?S.createElement(Ee,{containerStyle:p,codeStyle:s.style||{},numberStyle:H,startingLineNumber:m,codeString:j}):null,re=g.hljs||g['pre[class*="language-"]']||{backgroundColor:"#fff"},Q=ie(O)?"hljs":"prismjs",X=k?Object.assign({},T,{style:Object.assign({},re,r)}):Object.assign({},T,{className:T.className?"".concat(Q," ").concat(T.className):Q,style:Object.assign({},r)});if(C?s.style=x({whiteSpace:"pre-wrap"},s.style):s.style=x({whiteSpace:"pre"},s.style),!O)return S.createElement(D,X,J,S.createElement(A,s,j));(L===void 0&&z||C)&&(L=!0),z=z||qe;var Y=[{type:"text",value:j}],B=He({astGenerator:O,language:u,code:j,defaultCodeValue:Y});B.language===null&&(B.value=Y);var ue=(c=(a=j.match(/\n/g))===null||a===void 0?void 0:a.length)!==null&&c!==void 0?c:0,de=m+ue,ge=$e(B,L,M,y,N,m,de,H,C);return S.createElement(D,X,S.createElement(A,s,!N&&J,z({rows:ge,stylesheet:g,useInlineStyles:k})))}}const Ie=["abap","abnf","actionscript","ada","agda","al","antlr4","apacheconf","apex","apl","applescript","aql","arduino","arff","armasm","arturo","asciidoc","asm6502","asmatmel","aspnet","autohotkey","autoit","avisynth","avro-idl","awk","bash","basic","batch","bbcode","bbj","bicep","birb","bison","bnf","bqn","brainfuck","brightscript","bro","bsl","c","cfscript","chaiscript","cil","cilkc","cilkcpp","clike","clojure","cmake","cobol","coffeescript","concurnas","cooklang","coq","cpp","crystal","csharp","cshtml","csp","css-extras","css","csv","cue","cypher","d","dart","dataweave","dax","dhall","diff","django","dns-zone-file","docker","dot","ebnf","editorconfig","eiffel","ejs","elixir","elm","erb","erlang","etlua","excel-formula","factor","false","firestore-security-rules","flow","fortran","fsharp","ftl","gap","gcode","gdscript","gedcom","gettext","gherkin","git","glsl","gml","gn","go-module","go","gradle","graphql","groovy","haml","handlebars","haskell","haxe","hcl","hlsl","hoon","hpkp","hsts","http","ichigojam","icon","icu-message-format","idris","iecst","ignore","inform7","ini","io","j","java","javadoc","javadoclike","javascript","javastacktrace","jexl","jolie","jq","js-extras","js-templates","jsdoc","json","json5","jsonp","jsstacktrace","jsx","julia","keepalived","keyman","kotlin","kumir","kusto","latex","latte","less","lilypond","linker-script","liquid","lisp","livescript","llvm","log","lolcode","lua","magma","makefile","markdown","markup-templating","markup","mata","matlab","maxscript","mel","mermaid","metafont","mizar","mongodb","monkey","moonscript","n1ql","n4js","nand2tetris-hdl","naniscript","nasm","neon","nevod","nginx","nim","nix","nsis","objectivec","ocaml","odin","opencl","openqasm","oz","parigp","parser","pascal","pascaligo","pcaxis","peoplecode","perl","php-extras","php","phpdoc","plant-uml","plsql","powerquery","powershell","processing","prolog","promql","properties","protobuf","psl","pug","puppet","pure","purebasic","purescript","python","q","qml","qore","qsharp","r","racket","reason","regex","rego","renpy","rescript","rest","rip","roboconf","robotframework","ruby","rust","sas","sass","scala","scheme","scss","shell-session","smali","smalltalk","smarty","sml","solidity","solution-file","soy","sparql","splunk-spl","sqf","sql","squirrel","stan","stata","stylus","supercollider","swift","systemd","t4-cs","t4-templating","t4-vb","tap","tcl","textile","toml","tremor","tsx","tt2","turtle","twig","typescript","typoscript","unrealscript","uorazor","uri","v","vala","vbnet","velocity","verilog","vhdl","vim","visual-basic","warpscript","wasm","web-idl","wgsl","wiki","wolfram","wren","xeora","xml-doc","xojo","xquery","yaml","yang","zig"],De={'code[class*="language-"]':{color:"black",background:"none",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"black",background:"#f5f2f0",textShadow:"0 1px white",fontFamily:"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"]::selection':{textShadow:"none",background:"#b3d4fc"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#b3d4fc"},':not(pre) > code[class*="language-"]':{background:"#f5f2f0",padding:".1em",borderRadius:".3em",whiteSpace:"normal"},comment:{color:"slategray"},prolog:{color:"slategray"},doctype:{color:"slategray"},cdata:{color:"slategray"},punctuation:{color:"#999"},namespace:{Opacity:".7"},property:{color:"#905"},tag:{color:"#905"},boolean:{color:"#905"},number:{color:"#905"},constant:{color:"#905"},symbol:{color:"#905"},deleted:{color:"#905"},selector:{color:"#690"},"attr-name":{color:"#690"},string:{color:"#690"},char:{color:"#690"},builtin:{color:"#690"},inserted:{color:"#690"},operator:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},entity:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)",cursor:"help"},url:{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".language-css .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},".style .token.string":{color:"#9a6e3a",background:"hsla(0, 0%, 100%, .5)"},atrule:{color:"#07a"},"attr-value":{color:"#07a"},keyword:{color:"#07a"},function:{color:"#DD4A68"},"class-name":{color:"#DD4A68"},regex:{color:"#e90"},important:{color:"#e90",fontWeight:"bold"},variable:{color:"#e90"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}};var Ae=Me(me,De);Ae.supportedLanguages=Ie;const Qe={'code[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"]::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},prolog:{color:"hsl(220, 10%, 40%)"},cdata:{color:"hsl(220, 10%, 40%)"},doctype:{color:"hsl(220, 14%, 71%)"},punctuation:{color:"hsl(220, 14%, 71%)"},entity:{color:"hsl(220, 14%, 71%)",cursor:"help"},"attr-name":{color:"hsl(29, 54%, 61%)"},"class-name":{color:"hsl(29, 54%, 61%)"},boolean:{color:"hsl(29, 54%, 61%)"},constant:{color:"hsl(29, 54%, 61%)"},number:{color:"hsl(29, 54%, 61%)"},atrule:{color:"hsl(29, 54%, 61%)"},keyword:{color:"hsl(286, 60%, 67%)"},property:{color:"hsl(355, 65%, 65%)"},tag:{color:"hsl(355, 65%, 65%)"},symbol:{color:"hsl(355, 65%, 65%)"},deleted:{color:"hsl(355, 65%, 65%)"},important:{color:"hsl(355, 65%, 65%)"},selector:{color:"hsl(95, 38%, 62%)"},string:{color:"hsl(95, 38%, 62%)"},char:{color:"hsl(95, 38%, 62%)"},builtin:{color:"hsl(95, 38%, 62%)"},inserted:{color:"hsl(95, 38%, 62%)"},regex:{color:"hsl(95, 38%, 62%)"},"attr-value":{color:"hsl(95, 38%, 62%)"},"attr-value > .token.punctuation":{color:"hsl(95, 38%, 62%)"},variable:{color:"hsl(207, 82%, 66%)"},operator:{color:"hsl(207, 82%, 66%)"},function:{color:"hsl(207, 82%, 66%)"},url:{color:"hsl(187, 47%, 55%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(220, 14%, 71%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(220, 14%, 71%)"},".language-css .token.selector":{color:"hsl(355, 65%, 65%)"},".language-css .token.property":{color:"hsl(220, 14%, 71%)"},".language-css .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.string.url":{color:"hsl(95, 38%, 62%)"},".language-css .token.important":{color:"hsl(286, 60%, 67%)"},".language-css .token.atrule .token.rule":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.operator":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(5, 48%, 51%)"},".language-json .token.operator":{color:"hsl(220, 14%, 71%)"},".language-json .token.null.keyword":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.url":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.operator":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.content":{color:"hsl(207, 82%, 66%)"},".language-markdown .token.url > .token.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.url-reference.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(95, 38%, 62%)"},".language-markdown .token.bold .token.content":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.italic .token.content":{color:"hsl(286, 60%, 67%)"},".language-markdown .token.strike .token.content":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.list.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(355, 65%, 65%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.cr:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.lf:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.space:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},".line-highlight.line-highlight":{background:"hsla(220, 100%, 80%, 0.04)"},".line-highlight.line-highlight:before":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(220, 100%, 80%, 0.04)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".command-line .command-line-prompt":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(220, 14%, 45%)"},".command-line .command-line-prompt > span:before":{color:"hsl(220, 14%, 45%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(286, 60%, 67%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(224, 13%, 17%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(224, 13%, 17%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(224, 13%, 17%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(224, 13%, 17%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(219, 13%, 22%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(220, 14%, 71%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(220, 14%, 71%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(220, 14%, 71%)"}},Fe="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",oe=[],ne={allowDangerousHtml:!0},We=/^(https?|ircs?|mailto|xmpp)$/i,Be=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Xe(e){const o=Ue(e),t=Ve(e);return Ge(o.runSync(o.parse(t),t),e)}function Ue(e){const o=e.rehypePlugins||oe,t=e.remarkPlugins||oe,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...ne}:ne;return be().use(fe).use(t).use(ke,n).use(o)}function Ve(e){const o=e.children||"",t=new ye;return typeof o=="string"&&(t.value=o),t}function Ge(e,o){const t=o.allowedElements,n=o.allowElement,c=o.components,a=o.disallowedElements,u=o.skipHtml,i=o.unwrapDisallowed,f=o.urlTransform||Ke;for(const l of Be)Object.hasOwn(o,l.from)&&ve("Unexpected `"+l.from+"` prop, "+(l.to?"use `"+l.to+"` instead":"remove it")+" (see <"+Fe+"#"+l.id+"> for more info)");return we(e,g),Se(e,{Fragment:U.Fragment,components:c,ignoreInvalidStyle:!0,jsx:U.jsx,jsxs:U.jsxs,passKeys:!0,passNode:!0});function g(l,r,d){if(l.type==="raw"&&d&&typeof r=="number")return u?d.children.splice(r,1):d.children[r]={type:"text",value:l.value},r;if(l.type==="element"){let s;for(s in V)if(Object.hasOwn(V,s)&&Object.hasOwn(l.properties,s)){const h=l.properties[s],k=V[s];(k===null||k.includes(l.tagName))&&(l.properties[s]=f(String(h||""),s,l))}}if(l.type==="element"){let s=t?!t.includes(l.tagName):a?a.includes(l.tagName):!1;if(!s&&n&&typeof r=="number"&&(s=!n(l,r,d)),s&&d&&typeof r=="number")return i&&l.children?d.children.splice(r,1,...l.children):d.children.splice(r,1),r}}}function Ke(e){const o=e.indexOf(":"),t=e.indexOf("?"),n=e.indexOf("#"),c=e.indexOf("/");return o===-1||c!==-1&&o>c||t!==-1&&o>t||n!==-1&&o>n||We.test(e.slice(0,o))?e:""}export{Xe as M,Ae as h,Qe as o};
|