Spaces:
Running
Running
Upload 100 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- assets/NetworkVisualizer-Bh_MN9fG.js +2 -0
- assets/NetworkVisualizer-Bh_MN9fG.js.map +1 -0
- assets/OfflineBackupCreator-DPBtDFms.js +2 -0
- assets/OfflineBackupCreator-DPBtDFms.js.map +1 -0
- assets/PersonalWiki-eOWGktab.js +4 -0
- assets/PersonalWiki-eOWGktab.js.map +1 -0
- assets/PrSummaryGenerator-6DMRnDp4.js +22 -0
- assets/PrSummaryGenerator-6DMRnDp4.js.map +1 -0
- assets/ProjectMoodboard-DEjKUlQ_.js +2 -0
- assets/ProjectMoodboard-DEjKUlQ_.js.map +1 -0
- assets/PromptCraftPad-Czkigdu3.js +2 -0
- assets/PromptCraftPad-Czkigdu3.js.map +1 -0
- assets/PwaManifestEditor-Cqax5g3P.js +2 -0
- assets/PwaManifestEditor-Cqax5g3P.js.map +1 -0
- assets/PythonRepl-BCqNNxOs.js +6 -0
- assets/PythonRepl-BCqNNxOs.js.map +1 -0
- assets/RegexSandbox-DNYnjfsp.js +2 -0
- assets/RegexSandbox-DNYnjfsp.js.map +1 -0
- assets/ResponsiveTester-DzxjOgni.js +2 -0
- assets/ResponsiveTester-DzxjOgni.js.map +1 -0
- assets/SchemaDesigner-DuMq6rDB.js +2 -0
- assets/SchemaDesigner-DuMq6rDB.js.map +1 -0
- assets/ScratchpadTerminal-hDDc3rYH.js +2 -0
- assets/ScratchpadTerminal-hDDc3rYH.js.map +1 -0
- assets/ScreenshotToComponent-DJq7IjcN.js +2 -0
- assets/ScreenshotToComponent-DJq7IjcN.js.map +1 -0
- assets/SecretsVault-DGcLXZTS.js +2 -0
- assets/SecretsVault-DGcLXZTS.js.map +1 -0
- assets/SleepMode-CNTr1FuK.js +2 -0
- assets/SleepMode-CNTr1FuK.js.map +1 -0
- assets/SnippetVault-CTNJsXuF.js +7 -0
- assets/SnippetVault-CTNJsXuF.js.map +1 -0
- assets/StaticSiteGeneratorUI-D38nZsoT.js +2 -0
- assets/StaticSiteGeneratorUI-D38nZsoT.js.map +1 -0
- assets/SvgPathEditor-CW8KbZo3.js +2 -0
- assets/SvgPathEditor-CW8KbZo3.js.map +1 -0
- assets/TabSessionsManager-CuClcMz9.js +2 -0
- assets/TabSessionsManager-CuClcMz9.js.map +1 -0
- assets/Terminal-BS7dp6j1.js +3 -0
- assets/Terminal-BS7dp6j1.js.map +1 -0
- assets/TerminalFeature-CrrC40sg.js +2 -0
- assets/TerminalFeature-CrrC40sg.js.map +1 -0
- assets/ThemeDesigner-BzwRDn1V.js +2 -0
- assets/ThemeDesigner-BzwRDn1V.js.map +1 -0
- assets/VimModeToggle-lJVgk91h.js +2 -0
- assets/VimModeToggle-lJVgk91h.js.map +1 -0
- assets/WorkspaceTeleporter-CMMIpJEX.js +2 -0
- assets/WorkspaceTeleporter-CMMIpJEX.js.map +1 -0
- assets/micromark-CTBPIv-_.js +4 -0
- assets/micromark-CTBPIv-_.js.map +1 -0
assets/NetworkVisualizer-Bh_MN9fG.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as m,j as t}from"./react-_fH1j4AW.js";import{d as f}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const zt=()=>{const[l,n]=m.useState([]),[o,d]=m.useState("duration"),[a,c]=m.useState("desc");m.useEffect(()=>{const e=performance.getEntriesByType("resource");n(e)},[]);const x=m.useMemo(()=>[...l].sort((e,r)=>{let i,s;return o==="size"?(i=e.transferSize,s=r.transferSize):(i=e[o],s=r[o]),i<s?a==="asc"?-1:1:i>s?a==="asc"?1:-1:0}),[l,o,a]),h=e=>{o===e?c(r=>r==="asc"?"desc":"asc"):(d(e),c("desc"))},u=e=>{if(e===0)return"0 B";const r=1024,i=["B","KB","MB"],s=Math.floor(Math.log(e)/Math.log(r));return parseFloat((e/Math.pow(r,s)).toFixed(1))+" "+i[s]},p=({skey:e,label:r})=>t.jsxs("th",{onClick:()=>h(e),className:"p-2 text-left cursor-pointer hover:bg-slate-800",children:[r," ",o===e&&(a==="asc"?"▲":"▼")]});return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(f,{}),t.jsx("span",{className:"ml-3",children:"Network Visualizer"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Inspect network resources loaded by this page."})]}),t.jsx("div",{className:"flex-grow overflow-y-auto bg-slate-900 rounded-lg",children:t.jsxs("table",{className:"w-full text-sm text-left",children:[t.jsx("thead",{className:"sticky top-0 bg-slate-900",children:t.jsxs("tr",{children:[t.jsx(p,{skey:"name",label:"Name"}),t.jsx(p,{skey:"type",label:"Type"}),t.jsx(p,{skey:"size",label:"Size"}),t.jsx(p,{skey:"duration",label:"Time"})]})}),t.jsx("tbody",{children:x.map((e,r)=>t.jsxs("tr",{className:"border-b border-slate-800 hover:bg-slate-800/50",children:[t.jsx("td",{className:"p-2 text-cyan-400 truncate max-w-sm",title:e.name,children:e.name.split("/").pop()}),t.jsx("td",{className:"p-2",children:e.initiatorType}),t.jsx("td",{className:"p-2",children:u(e.transferSize)}),t.jsxs("td",{className:"p-2",children:[e.duration.toFixed(0),"ms"]})]},r))})]})})]})};export{zt as NetworkVisualizer};
|
| 2 |
+
//# sourceMappingURL=NetworkVisualizer-Bh_MN9fG.js.map
|
assets/NetworkVisualizer-Bh_MN9fG.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"NetworkVisualizer-Bh_MN9fG.js","sources":["../../components/features/NetworkVisualizer.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } from 'react';\nimport { ChartBarIcon } from '../icons/FeatureIcons.tsx';\n\ntype SortKey = 'name' | 'type' | 'size' | 'duration';\ntype SortDirection = 'asc' | 'desc';\n\nexport const NetworkVisualizer: React.FC = () => {\n const [requests, setRequests] = useState<PerformanceResourceTiming[]>([]);\n const [sortKey, setSortKey] = useState<SortKey>('duration');\n const [sortDirection, setSortDirection] = useState<SortDirection>('desc');\n\n useEffect(() => {\n const entries = performance.getEntriesByType(\"resource\") as PerformanceResourceTiming[];\n setRequests(entries);\n }, []);\n \n const sortedRequests = useMemo(() => {\n return [...requests].sort((a, b) => {\n let valA, valB;\n if(sortKey === 'size') {\n valA = a.transferSize;\n valB = b.transferSize;\n } else {\n valA = a[sortKey];\n valB = b[sortKey];\n }\n\n if (valA < valB) return sortDirection === 'asc' ? -1 : 1;\n if (valA > valB) return sortDirection === 'asc' ? 1 : -1;\n return 0;\n });\n }, [requests, sortKey, sortDirection]);\n\n const handleSort = (key: SortKey) => {\n if (sortKey === key) {\n setSortDirection(prev => prev === 'asc' ? 'desc' : 'asc');\n } else {\n setSortKey(key);\n setSortDirection('desc');\n }\n };\n \n const formatBytes = (bytes: number) => {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n };\n\n const SortableHeader: React.FC<{\n skey: SortKey;\n label: string;\n }> = ({ skey, label }) => (\n <th onClick={() => handleSort(skey)} className=\"p-2 text-left cursor-pointer hover:bg-slate-800\">\n {label} {sortKey === skey && (sortDirection === 'asc' ? '▲' : '▼')}\n </th>\n );\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <ChartBarIcon />\n <span className=\"ml-3\">Network Visualizer</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Inspect network resources loaded by this page.</p>\n </header>\n <div className=\"flex-grow overflow-y-auto bg-slate-900 rounded-lg\">\n <table className=\"w-full text-sm text-left\">\n <thead className=\"sticky top-0 bg-slate-900\">\n <tr>\n <SortableHeader skey=\"name\" label=\"Name\" />\n <SortableHeader skey=\"type\" label=\"Type\" />\n <SortableHeader skey=\"size\" label=\"Size\" />\n <SortableHeader skey=\"duration\" label=\"Time\" />\n </tr>\n </thead>\n <tbody>\n {sortedRequests.map((req, i) => (\n <tr key={i} className=\"border-b border-slate-800 hover:bg-slate-800/50\">\n <td className=\"p-2 text-cyan-400 truncate max-w-sm\" title={req.name}>{req.name.split('/').pop()}</td>\n <td className=\"p-2\">{req.initiatorType}</td>\n <td className=\"p-2\">{formatBytes(req.transferSize)}</td>\n <td className=\"p-2\">{req.duration.toFixed(0)}ms</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};"],"names":["NetworkVisualizer","requests","setRequests","useState","sortKey","setSortKey","sortDirection","setSortDirection","useEffect","entries","sortedRequests","useMemo","a","b","valA","valB","handleSort","key","prev","formatBytes","bytes","k","sizes","i","SortableHeader","skey","label","jsxs","jsx","ChartBarIcon","req"],"mappings":"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"}
|
assets/OfflineBackupCreator-DPBtDFms.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as t}from"./react-_fH1j4AW.js";import{f as c}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const gt=()=>{const[i,p]=s.useState(null),m=()=>{const r={};for(let e=0;e<localStorage.length;e++){const o=localStorage.key(e);if(o&&o.startsWith("devcore_"))try{r[o]=JSON.parse(localStorage.getItem(o))}catch{r[o]=localStorage.getItem(o)}}const a=JSON.stringify(r,null,2),l=new Blob([a],{type:"application/json"});p(URL.createObjectURL(l))};return t.jsxs("div",{className:"h-full flex flex-col items-center justify-center p-4 sm:p-6 lg:p-8 text-center",children:[t.jsxs("header",{className:"mb-8",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(c,{}),t.jsx("span",{className:"ml-3",children:"Offline Backup Creator"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Create a downloadable backup of all your data from this app."})]}),t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx("button",{onClick:m,className:"px-8 py-4 bg-cyan-500 text-slate-900 font-bold rounded-lg text-lg",children:"Create Backup File"}),i&&t.jsx("a",{href:i,download:"devcore-backup.json",className:"px-6 py-3 bg-green-500 text-white font-bold rounded-lg",children:"Download Backup"})]})]})};export{gt as OfflineBackupCreator};
|
| 2 |
+
//# sourceMappingURL=OfflineBackupCreator-DPBtDFms.js.map
|
assets/OfflineBackupCreator-DPBtDFms.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"OfflineBackupCreator-DPBtDFms.js","sources":["../../components/features/OfflineBackupCreator.tsx"],"sourcesContent":["\nimport React, { useState } from 'react';\nimport { CloudIcon } from '../icons/FeatureIcons';\n\nexport const OfflineBackupCreator: React.FC = () => {\n const [backupData, setBackupData] = useState<string | null>(null);\n\n const createBackup = () => {\n const allData: { [key: string]: any } = {};\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith('devcore_')) {\n try {\n allData[key] = JSON.parse(localStorage.getItem(key)!);\n } catch {\n allData[key] = localStorage.getItem(key);\n }\n }\n }\n const dataStr = JSON.stringify(allData, null, 2);\n const dataBlob = new Blob([dataStr], { type: 'application/json' });\n setBackupData(URL.createObjectURL(dataBlob));\n };\n\n return (\n <div className=\"h-full flex flex-col items-center justify-center p-4 sm:p-6 lg:p-8 text-center\">\n <header className=\"mb-8\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CloudIcon />\n <span className=\"ml-3\">Offline Backup Creator</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Create a downloadable backup of all your data from this app.</p>\n </header>\n <div className=\"flex flex-col items-center gap-4\">\n <button\n onClick={createBackup}\n className=\"px-8 py-4 bg-cyan-500 text-slate-900 font-bold rounded-lg text-lg\"\n >\n Create Backup File\n </button>\n {backupData && (\n <a\n href={backupData}\n download=\"devcore-backup.json\"\n className=\"px-6 py-3 bg-green-500 text-white font-bold rounded-lg\"\n >\n Download Backup\n </a>\n )}\n </div>\n </div>\n );\n};\n"],"names":["OfflineBackupCreator","backupData","setBackupData","useState","createBackup","allData","i","key","dataStr","dataBlob","jsxs","jsx","CloudIcon"],"mappings":"4xEAIO,MAAMA,GAAiC,IAAM,CAChD,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAAwB,IAAI,EAE1DC,EAAe,IAAM,CACvB,MAAMC,EAAkC,CAAA,EACxC,QAASC,EAAI,EAAGA,EAAI,aAAa,OAAQA,IAAK,CAC1C,MAAMC,EAAM,aAAa,IAAID,CAAC,EAC9B,GAAIC,GAAOA,EAAI,WAAW,UAAU,EAChC,GAAI,CACAF,EAAQE,CAAG,EAAI,KAAK,MAAM,aAAa,QAAQA,CAAG,CAAE,CACxD,MAAQ,CACJF,EAAQE,CAAG,EAAI,aAAa,QAAQA,CAAG,CAC3C,CAER,CACA,MAAMC,EAAU,KAAK,UAAUH,EAAS,KAAM,CAAC,EACzCI,EAAW,IAAI,KAAK,CAACD,CAAO,EAAG,CAAE,KAAM,mBAAoB,EACjEN,EAAc,IAAI,gBAAgBO,CAAQ,CAAC,CAC/C,EAEA,OACIC,EAAAA,KAAC,MAAA,CAAI,UAAU,iFACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAU,EACXD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,wBAAA,CAAsB,CAAA,EACjD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,8DAAA,CAA4D,CAAA,EACnG,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACX,SAAA,CAAAC,EAAAA,IAAC,SAAA,CACG,QAASP,EACT,UAAU,oEACb,SAAA,oBAAA,CAAA,EAGAH,GACIU,EAAAA,IAAC,IAAA,CACE,KAAMV,EACN,SAAS,sBACT,UAAU,yDACb,SAAA,iBAAA,CAAA,CAED,CAAA,CAER,CAAA,EACJ,CAER"}
|
assets/PersonalWiki-eOWGktab.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as c,j as t}from"./react-_fH1j4AW.js";import{F as x}from"./index-Nqm_ElTk.js";import{m as u}from"./marked-CesSW9Du.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const h=(s,l)=>{const[o,m]=c.useState(()=>{try{const r=window.localStorage.getItem(s);return r?JSON.parse(r):l}catch{return l}});return[o,r=>{const n=r instanceof Function?r(o):r;m(n),window.localStorage.setItem(s,JSON.stringify(n))}]},St=()=>{const[s,l]=h("devcore_wiki",[{id:1,title:"Welcome",content:"# Welcome to your personal wiki!"}]),[o,m]=c.useState(s[0]||null),a=e=>m(e),r=e=>{if(!o)return;const i={...o,content:e.target.value};m(i),l(s.map(p=>p.id===i.id?i:p))},n=()=>{const e=prompt("Enter new page title:");if(e){const i={id:Date.now(),title:e,content:`# ${e}
|
| 2 |
+
|
| 3 |
+
Start writing here.`};l([...s,i]),m(i)}},d=e=>{l(s.filter(i=>i.id!==e)),(o==null?void 0:o.id)===e&&m(null)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(x,{}),t.jsx("span",{className:"ml-3",children:"Personal Wiki"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"A simple markdown-based wiki stored in your browser."})]}),t.jsxs("div",{className:"flex-grow flex gap-6 min-h-0",children:[t.jsxs("aside",{className:"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col",children:[t.jsx("h3",{className:"font-bold mb-2",children:"Pages"}),t.jsx("ul",{className:"space-y-1 flex-grow overflow-y-auto",children:s.map(e=>t.jsxs("li",{className:"group flex items-center justify-between",children:[t.jsx("button",{onClick:()=>a(e),className:`w-full text-left px-3 py-2 rounded-md ${(o==null?void 0:o.id)===e.id?"bg-cyan-500/20 text-cyan-300":"hover:bg-slate-700/50"}`,children:e.title}),t.jsx("button",{onClick:()=>d(e.id),className:"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100",children:"×"})]},e.id))}),t.jsx("button",{onClick:n,className:"w-full text-sm mt-4 pt-4 border-t border-slate-700 py-2 bg-cyan-500/80 text-white rounded-md",children:"Add New Page"})]}),t.jsx("main",{className:"w-2/3 grid grid-cols-2 gap-4",children:o?t.jsxs(t.Fragment,{children:[t.jsx("textarea",{value:o.content,onChange:r,className:"h-full p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"}),t.jsx("div",{className:"h-full p-4 bg-slate-900 border border-slate-700 rounded-md overflow-y-auto prose prose-sm prose-invert",dangerouslySetInnerHTML:{__html:u(o.content)}})]}):t.jsx("div",{className:"col-span-2 flex items-center justify-center bg-slate-900 rounded-lg text-slate-500",children:"Select a page or create a new one."})})]})]})};export{St as PersonalWiki};
|
| 4 |
+
//# sourceMappingURL=PersonalWiki-eOWGktab.js.map
|
assets/PersonalWiki-eOWGktab.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"PersonalWiki-eOWGktab.js","sources":["../../components/features/PersonalWiki.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { FileCodeIcon } from '../icons/FeatureIcons.tsx';\nimport { marked } from 'marked';\n\ninterface Page {\n id: number;\n title: string;\n content: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nexport const PersonalWiki: React.FC = () => {\n const [pages, setPages] = useLocalStorage('devcore_wiki', [{ id: 1, title: 'Welcome', content: '# Welcome to your personal wiki!'}]);\n const [activePage, setActivePage] = useState<Page | null>(pages[0] || null);\n\n const handleSelectPage = (page: Page) => setActivePage(page);\n \n const handleContentChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!activePage) return;\n const updatedPage = { ...activePage, content: e.target.value };\n setActivePage(updatedPage);\n setPages(pages.map((p: Page) => p.id === updatedPage.id ? updatedPage : p));\n };\n\n const handleAddNew = () => {\n const title = prompt(\"Enter new page title:\");\n if (title) {\n const newPage = { id: Date.now(), title, content: `# ${title}\\n\\nStart writing here.` };\n setPages([...pages, newPage]);\n setActivePage(newPage);\n }\n };\n \n const handleDelete = (id: number) => {\n setPages(pages.filter((p: Page) => p.id !== id));\n if (activePage?.id === id) setActivePage(null);\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <FileCodeIcon />\n <span className=\"ml-3\">Personal Wiki</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">A simple markdown-based wiki stored in your browser.</p>\n </header>\n <div className=\"flex-grow flex gap-6 min-h-0\">\n <aside className=\"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col\">\n <h3 className=\"font-bold mb-2\">Pages</h3>\n <ul className=\"space-y-1 flex-grow overflow-y-auto\">\n {pages.map((page: Page) => (\n <li key={page.id} className=\"group flex items-center justify-between\">\n <button onClick={() => handleSelectPage(page)} className={`w-full text-left px-3 py-2 rounded-md ${activePage?.id === page.id ? 'bg-cyan-500/20 text-cyan-300' : 'hover:bg-slate-700/50'}`}>\n {page.title}\n </button>\n <button onClick={() => handleDelete(page.id)} className=\"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100\">×</button>\n </li>\n ))}\n </ul>\n <button onClick={handleAddNew} className=\"w-full text-sm mt-4 pt-4 border-t border-slate-700 py-2 bg-cyan-500/80 text-white rounded-md\">Add New Page</button>\n </aside>\n <main className=\"w-2/3 grid grid-cols-2 gap-4\">\n {activePage ? (\n <>\n <textarea\n value={activePage.content}\n onChange={handleContentChange}\n className=\"h-full p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm\"\n />\n <div className=\"h-full p-4 bg-slate-900 border border-slate-700 rounded-md overflow-y-auto prose prose-sm prose-invert\" dangerouslySetInnerHTML={{__html: marked(activePage.content)}}></div>\n </>\n ) : (\n <div className=\"col-span-2 flex items-center justify-center bg-slate-900 rounded-lg text-slate-500\">\n Select a page or create a new one.\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","PersonalWiki","pages","setPages","activePage","setActivePage","handleSelectPage","page","handleContentChange","updatedPage","handleAddNew","title","newPage","handleDelete","id","p","jsxs","jsx","FileCodeIcon","Fragment","marked"],"mappings":"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"}
|
assets/PrSummaryGenerator-6DMRnDp4.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as e}from"./react-_fH1j4AW.js";import{k as x}from"./geminiService-7wPGMJPL.js";import{G as u}from"./index-Nqm_ElTk.js";import{L as n}from"./LoadingSpinner-C3NwW9hm.js";import{m as h}from"./marked-CesSW9Du.js";import"./@braintree-9Zuj5s7N.js";import"./@google-4tyssLU_.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const g=`diff --git a/src/App.tsx b/src/App.tsx
|
| 2 |
+
--- a/src/App.tsx
|
| 3 |
+
+++ b/src/App.tsx
|
| 4 |
+
@@ -1,5 +1,6 @@
|
| 5 |
+
import React from 'react';
|
| 6 |
+
import './App.css';
|
| 7 |
+
+import LoginButton from './LoginButton';
|
| 8 |
+
|
| 9 |
+
function App() {
|
| 10 |
+
return (
|
| 11 |
+
<div className="App">
|
| 12 |
+
<header className="App-header">
|
| 13 |
+
<p>
|
| 14 |
+
Hello, world!
|
| 15 |
+
</p>
|
| 16 |
+
+ <LoginButton />
|
| 17 |
+
</header>
|
| 18 |
+
</div>
|
| 19 |
+
);
|
| 20 |
+
}
|
| 21 |
+
`,ke=()=>{const[o,c]=s.useState(g),[m,l]=s.useState(""),[r,p]=s.useState(!1),[i,a]=s.useState(""),d=s.useCallback(async()=>{if(!o.trim()){a("Please paste a diff to generate a summary.");return}p(!0),a(""),l("");try{const t=await x(o);l(t)}catch(t){const f=t instanceof Error?t.message:"An unknown error occurred.";a(`Failed to generate summary: ${f}`)}finally{p(!1)}},[o]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(u,{}),e.jsx("span",{className:"ml-3",children:"AI PR Summary Generator"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Paste a git diff and let Gemini write the summary."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 h-full overflow-hidden",children:[e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{htmlFor:"diff-input",className:"text-sm font-medium text-slate-400 mb-2",children:"Git Diff"}),e.jsx("textarea",{id:"diff-input",value:o,onChange:t=>c(t.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm"}),e.jsx("button",{onClick:d,disabled:r,className:"mt-4 w-full flex items-center justify-center px-6 py-3 bg-cyan-500 text-slate-900 font-bold rounded-md hover:bg-cyan-400 disabled:bg-slate-600 disabled:cursor-not-allowed",children:r?e.jsx(n,{}):"Generate Summary"})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Generated Summary"}),e.jsxs("div",{className:"flex-grow p-4 bg-slate-800/50 border border-slate-700/50 rounded-md overflow-y-auto",children:[r&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(n,{})}),i&&e.jsx("p",{className:"text-red-400",children:i}),m&&!r&&e.jsx("div",{className:"prose prose-sm prose-invert max-w-none",dangerouslySetInnerHTML:{__html:h(m)}}),!r&&!m&&!i&&e.jsx("div",{className:"text-slate-500 h-full flex items-center justify-center",children:"The summary will appear here."})]})]})]})]})};export{ke as PrSummaryGenerator};
|
| 22 |
+
//# sourceMappingURL=PrSummaryGenerator-6DMRnDp4.js.map
|
assets/PrSummaryGenerator-6DMRnDp4.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"PrSummaryGenerator-6DMRnDp4.js","sources":["../../components/features/PrSummaryGenerator.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { generatePrSummary } from '../../services/geminiService.ts';\nimport { GitBranchIcon } from '../icons/FeatureIcons.tsx';\nimport { LoadingSpinner } from './shared/LoadingSpinner.tsx';\nimport { marked } from 'marked';\n\nconst exampleDiff = `diff --git a/src/App.tsx b/src/App.tsx\n--- a/src/App.tsx\n+++ b/src/App.tsx\n@@ -1,5 +1,6 @@\n import React from 'react';\n import './App.css';\n+import LoginButton from './LoginButton';\n \n function App() {\n return (\n <div className=\"App\">\n <header className=\"App-header\">\n <p>\n Hello, world!\n </p>\n+ <LoginButton />\n </header>\n </div>\n );\n }\n`;\n\nexport const PrSummaryGenerator: React.FC = () => {\n const [diff, setDiff] = useState<string>(exampleDiff);\n const [summary, setSummary] = useState<string>('');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const handleGenerate = useCallback(async () => {\n if (!diff.trim()) {\n setError('Please paste a diff to generate a summary.');\n return;\n }\n setIsLoading(true);\n setError('');\n setSummary('');\n try {\n const result = await generatePrSummary(diff);\n setSummary(result);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate summary: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [diff]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <GitBranchIcon />\n <span className=\"ml-3\">AI PR Summary Generator</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Paste a git diff and let Gemini write the summary.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 h-full overflow-hidden\">\n <div className=\"flex flex-col h-full\">\n <label htmlFor=\"diff-input\" className=\"text-sm font-medium text-slate-400 mb-2\">Git Diff</label>\n <textarea\n id=\"diff-input\"\n value={diff}\n onChange={(e) => setDiff(e.target.value)}\n className=\"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm\"\n />\n <button\n onClick={handleGenerate}\n disabled={isLoading}\n className=\"mt-4 w-full flex items-center justify-center px-6 py-3 bg-cyan-500 text-slate-900 font-bold rounded-md hover:bg-cyan-400 disabled:bg-slate-600 disabled:cursor-not-allowed\"\n >\n {isLoading ? <LoadingSpinner /> : 'Generate Summary'}\n </button>\n </div>\n <div className=\"flex flex-col h-full\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">Generated Summary</label>\n <div className=\"flex-grow p-4 bg-slate-800/50 border border-slate-700/50 rounded-md overflow-y-auto\">\n {isLoading && (\n <div className=\"flex items-center justify-center h-full\">\n <LoadingSpinner />\n </div>\n )}\n {error && <p className=\"text-red-400\">{error}</p>}\n {summary && !isLoading && (\n <div\n className=\"prose prose-sm prose-invert max-w-none\"\n dangerouslySetInnerHTML={{ __html: marked(summary) }}\n />\n )}\n {!isLoading && !summary && !error && (\n <div className=\"text-slate-500 h-full flex items-center justify-center\">\n The summary will appear here.\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"names":["exampleDiff","PrSummaryGenerator","diff","setDiff","useState","summary","setSummary","isLoading","setIsLoading","error","setError","handleGenerate","useCallback","result","generatePrSummary","err","errorMessage","jsxs","jsx","GitBranchIcon","e","LoadingSpinner","marked"],"mappings":"o8EAMA,MAAMA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBPC,GAA+B,IAAM,CAC9C,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAiBJ,CAAW,EAC9C,CAACK,EAASC,CAAU,EAAIF,EAAAA,SAAiB,EAAE,EAC3C,CAACG,EAAWC,CAAY,EAAIJ,EAAAA,SAAkB,EAAK,EACnD,CAACK,EAAOC,CAAQ,EAAIN,EAAAA,SAAiB,EAAE,EAEvCO,EAAiBC,EAAAA,YAAY,SAAY,CAC3C,GAAI,CAACV,EAAK,OAAQ,CACdQ,EAAS,4CAA4C,EACrD,MACJ,CACAF,EAAa,EAAI,EACjBE,EAAS,EAAE,EACXJ,EAAW,EAAE,EACb,GAAI,CACA,MAAMO,EAAS,MAAMC,EAAkBZ,CAAI,EAC3CI,EAAWO,CAAM,CACrB,OAASE,EAAK,CACV,MAAMC,EAAeD,aAAe,MAAQA,EAAI,QAAU,6BAC1DL,EAAS,+BAA+BM,CAAY,EAAE,CAC1D,QAAA,CACIR,EAAa,EAAK,CACtB,CACJ,EAAG,CAACN,CAAI,CAAC,EAET,OACIe,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAc,EACfD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,yBAAA,CAAuB,CAAA,EAClD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,oDAAA,CAAkD,CAAA,EACzF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,yEACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,MAAC,QAAA,CAAM,QAAQ,aAAa,UAAU,0CAA0C,SAAA,WAAQ,EACxFA,EAAAA,IAAC,WAAA,CACG,GAAG,aACH,MAAOhB,EACP,SAAWkB,GAAMjB,EAAQiB,EAAE,OAAO,KAAK,EACvC,UAAU,6FAAA,CAAA,EAEdF,EAAAA,IAAC,SAAA,CACG,QAASP,EACT,SAAUJ,EACV,UAAU,6KAET,SAAAA,EAAYW,EAAAA,IAACG,EAAA,CAAA,CAAe,EAAK,kBAAA,CAAA,CACtC,EACJ,EACAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,oBAAiB,EAC5ED,EAAAA,KAAC,MAAA,CAAI,UAAU,sFACV,SAAA,CAAAV,SACI,MAAA,CAAI,UAAU,0CACX,SAAAW,MAACG,IAAe,EACpB,EAEHZ,GAASS,EAAAA,IAAC,IAAA,CAAE,UAAU,eAAgB,SAAAT,EAAM,EAC5CJ,GAAW,CAACE,GACRW,EAAAA,IAAC,MAAA,CACE,UAAU,yCACV,wBAAyB,CAAE,OAAQI,EAAOjB,CAAO,CAAA,CAAE,CAAA,EAGzD,CAACE,GAAa,CAACF,GAAW,CAACI,GACzBS,EAAAA,IAAC,MAAA,CAAI,UAAU,yDAAyD,SAAA,+BAAA,CAExE,CAAA,CAAA,CAER,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/ProjectMoodboard-DEjKUlQ_.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as g,j as e}from"./react-_fH1j4AW.js";import{P as f}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const b=(s,n)=>{const[r,m]=g.useState(()=>{try{const i=window.localStorage.getItem(s);return i?JSON.parse(i):n}catch{return n}});return[r,i=>{const l=i instanceof Function?i(r):i;m(l),window.localStorage.setItem(s,JSON.stringify(l))}]},u=["bg-yellow-300","bg-green-300","bg-blue-300","bg-pink-300"],Mt=()=>{const[s,n]=b("devcore_moodboard",[]),[r,m]=g.useState(null),p=()=>{const t={id:Date.now(),text:"New idea...",x:50,y:50,color:u[Math.floor(Math.random()*u.length)]};n([...s,t])},i=(t,o)=>{n(s.map(a=>a.id===t?{...a,text:o}:a))},l=(t,o)=>{const d=t.currentTarget.getBoundingClientRect();m({id:o,offsetX:t.clientX-d.left,offsetY:t.clientY-d.top})},x=t=>{r&&n(s.map(o=>o.id===r.id?{...o,x:t.clientX-r.offsetX-t.currentTarget.getBoundingClientRect().left,y:t.clientY-r.offsetY-t.currentTarget.getBoundingClientRect().top}:o))},c=()=>{m(null)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6 flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(f,{}),e.jsx("span",{className:"ml-3",children:"Project Moodboard"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Organize your ideas with draggable sticky notes."})]}),e.jsx("button",{onClick:p,className:"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md",children:"Add Note"})]}),e.jsx("div",{className:"relative flex-grow bg-slate-900/50 border-2 border-dashed border-slate-700 rounded-lg overflow-hidden",onMouseMove:x,onMouseUp:c,onMouseLeave:c,children:s.map(t=>e.jsx("div",{className:`absolute w-48 h-48 p-2 flex flex-col shadow-lg cursor-grab active:cursor-grabbing ${t.color}`,style:{top:t.y,left:t.x,transform:(r==null?void 0:r.id)===t.id?"scale(1.05)":"scale(1)"},onMouseDown:o=>l(o,t.id),children:e.jsx("textarea",{value:t.text,onChange:o=>i(t.id,o.target.value),onMouseDown:o=>o.stopPropagation(),className:"w-full h-full bg-transparent text-black resize-none focus:outline-none font-medium"})},t.id))})]})};export{Mt as ProjectMoodboard};
|
| 2 |
+
//# sourceMappingURL=ProjectMoodboard-DEjKUlQ_.js.map
|
assets/ProjectMoodboard-DEjKUlQ_.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ProjectMoodboard-DEjKUlQ_.js","sources":["../../components/features/ProjectMoodboard.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { PhotoIcon } from '../icons/FeatureIcons';\n\ninterface Note {\n id: number;\n text: string;\n x: number;\n y: number;\n color: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nconst colors = ['bg-yellow-300', 'bg-green-300', 'bg-blue-300', 'bg-pink-300'];\n\nexport const ProjectMoodboard: React.FC = () => {\n const [notes, setNotes] = useLocalStorage('devcore_moodboard', []);\n const [dragging, setDragging] = useState<{ id: number; offsetX: number; offsetY: number } | null>(null);\n\n const addNote = () => {\n const newNote: Note = {\n id: Date.now(),\n text: 'New idea...',\n x: 50,\n y: 50,\n color: colors[Math.floor(Math.random() * colors.length)],\n };\n setNotes([...notes, newNote]);\n };\n\n const updateText = (id: number, text: string) => {\n setNotes(notes.map((n: Note) => n.id === id ? { ...n, text } : n));\n };\n\n const onMouseDown = (e: React.MouseEvent<HTMLDivElement>, id: number) => {\n const noteElement = e.currentTarget;\n const rect = noteElement.getBoundingClientRect();\n setDragging({\n id,\n offsetX: e.clientX - rect.left,\n offsetY: e.clientY - rect.top,\n });\n };\n\n const onMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!dragging) return;\n setNotes(\n notes.map((n: Note) =>\n n.id === dragging.id\n ? { ...n, x: e.clientX - dragging.offsetX - e.currentTarget.getBoundingClientRect().left, y: e.clientY - dragging.offsetY - e.currentTarget.getBoundingClientRect().top }\n : n\n )\n );\n };\n\n const onMouseUp = () => {\n setDragging(null);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6 flex justify-between items-center\">\n <div>\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <PhotoIcon />\n <span className=\"ml-3\">Project Moodboard</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Organize your ideas with draggable sticky notes.</p>\n </div>\n <button onClick={addNote} className=\"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md\">Add Note</button>\n </header>\n <div\n className=\"relative flex-grow bg-slate-900/50 border-2 border-dashed border-slate-700 rounded-lg overflow-hidden\"\n onMouseMove={onMouseMove}\n onMouseUp={onMouseUp}\n onMouseLeave={onMouseUp}\n >\n {notes.map((note: Note) => (\n <div\n key={note.id}\n className={`absolute w-48 h-48 p-2 flex flex-col shadow-lg cursor-grab active:cursor-grabbing ${note.color}`}\n style={{ top: note.y, left: note.x, transform: dragging?.id === note.id ? 'scale(1.05)' : 'scale(1)' }}\n onMouseDown={e => onMouseDown(e, note.id)}\n >\n <textarea\n value={note.text}\n onChange={(e) => updateText(note.id, e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n className=\"w-full h-full bg-transparent text-black resize-none focus:outline-none font-medium\"\n />\n </div>\n ))}\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","colors","ProjectMoodboard","notes","setNotes","dragging","setDragging","addNote","newNote","updateText","id","text","n","onMouseDown","e","rect","onMouseMove","onMouseUp","jsxs","jsx","PhotoIcon","note"],"mappings":"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"}
|
assets/PromptCraftPad-Czkigdu3.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as n,j as t}from"./react-_fH1j4AW.js";import{c as x}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const f=(o,a)=>{const[e,i]=n.useState(()=>{try{const s=window.localStorage.getItem(o);return s?JSON.parse(s):a}catch{return a}});return[e,s=>{const l=s instanceof Function?s(e):s;i(l),window.localStorage.setItem(o,JSON.stringify(l))}]},bt=()=>{const[o,a]=f("devcore_prompts",[{id:1,name:"React Component Generator",text:"Generate a React component named {name} that {description}. Style it with Tailwind CSS."}]),[e,i]=n.useState(o[0]||null);n.useEffect(()=>{if(!e&&o.length>0&&i(o[0]),e){const r=o.find(m=>m.id===e.id);i(r||null)}},[o,e]);const p=r=>{i(r)},s=r=>{if(!e)return;const m={...e,text:r.target.value};i(m),a(o.map(c=>c.id===m.id?m:c))},l=()=>{const r={id:Date.now(),name:"New Untitled Prompt",text:""};a([...o,r]),i(r)},d=r=>{a(o.filter(m=>m.id!==r)),(e==null?void 0:e.id)===r&&i(null)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(x,{}),t.jsx("span",{className:"ml-3",children:"Prompt Craft Pad"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Create, save, and manage your favorite AI prompts."})]}),t.jsxs("div",{className:"flex-grow flex gap-6 min-h-0",children:[t.jsxs("aside",{className:"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col",children:[t.jsx("h3",{className:"font-bold mb-2",children:"My Prompts"}),t.jsx("ul",{className:"space-y-2 flex-grow overflow-y-auto",children:o.map(r=>t.jsxs("li",{className:"group flex items-center justify-between",children:[t.jsx("button",{onClick:()=>p(r),className:`w-full text-left px-3 py-2 rounded-md ${(e==null?void 0:e.id)===r.id?"bg-cyan-500/20 text-cyan-300":"hover:bg-slate-700/50"}`,children:r.name}),t.jsx("button",{onClick:()=>d(r.id),className:"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100",children:"×"})]},r.id))}),t.jsx("div",{className:"mt-4 pt-4 border-t border-slate-700",children:t.jsx("button",{onClick:l,className:"w-full text-sm py-2 bg-cyan-500/80 text-white rounded-md",children:"Add New Prompt"})})]}),t.jsx("main",{className:"w-2/3 flex flex-col",children:e?t.jsxs(t.Fragment,{children:[t.jsx("label",{htmlFor:"prompt-editor",className:"text-sm font-medium text-slate-400 mb-2",children:e.name}),t.jsx("textarea",{id:"prompt-editor",value:e.text,onChange:s,className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300 focus:ring-2 focus:ring-cyan-500 focus:outline-none"})]}):t.jsx("div",{className:"flex-grow flex items-center justify-center bg-slate-900 rounded-lg text-slate-500",children:"Select a prompt or create a new one."})})]})]})};export{bt as PromptCraftPad};
|
| 2 |
+
//# sourceMappingURL=PromptCraftPad-Czkigdu3.js.map
|
assets/PromptCraftPad-Czkigdu3.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"PromptCraftPad-Czkigdu3.js","sources":["../../components/features/PromptCraftPad.tsx"],"sourcesContent":["\nimport React, { useState, useEffect } from 'react';\nimport { SparklesIcon } from '../icons/FeatureIcons.tsx';\n\ninterface Prompt {\n id: number;\n name: string;\n text: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nexport const PromptCraftPad: React.FC = () => {\n const [prompts, setPrompts] = useLocalStorage('devcore_prompts', [\n { id: 1, name: 'React Component Generator', text: 'Generate a React component named {name} that {description}. Style it with Tailwind CSS.'}\n ]);\n const [activePrompt, setActivePrompt] = useState<Prompt | null>(prompts[0] || null);\n \n useEffect(() => {\n if(!activePrompt && prompts.length > 0) {\n setActivePrompt(prompts[0]);\n }\n if (activePrompt) {\n const freshPrompt = prompts.find((p: Prompt) => p.id === activePrompt.id);\n setActivePrompt(freshPrompt || null);\n }\n }, [prompts, activePrompt]);\n\n const handleSelectPrompt = (prompt: Prompt) => {\n setActivePrompt(prompt);\n };\n\n const handleTextChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!activePrompt) return;\n const updatedPrompt = { ...activePrompt, text: e.target.value };\n setActivePrompt(updatedPrompt);\n setPrompts(prompts.map((p: Prompt) => p.id === updatedPrompt.id ? updatedPrompt : p));\n };\n\n const handleAddNew = () => {\n const newPrompt = { id: Date.now(), name: 'New Untitled Prompt', text: '' };\n setPrompts([...prompts, newPrompt]);\n setActivePrompt(newPrompt);\n };\n \n const handleDelete = (id: number) => {\n setPrompts(prompts.filter((p: Prompt) => p.id !== id));\n if(activePrompt?.id === id) setActivePrompt(null);\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <SparklesIcon />\n <span className=\"ml-3\">Prompt Craft Pad</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Create, save, and manage your favorite AI prompts.</p>\n </header>\n <div className=\"flex-grow flex gap-6 min-h-0\">\n <aside className=\"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col\">\n <h3 className=\"font-bold mb-2\">My Prompts</h3>\n <ul className=\"space-y-2 flex-grow overflow-y-auto\">\n {prompts.map((prompt: Prompt) => (\n <li key={prompt.id} className=\"group flex items-center justify-between\">\n <button onClick={() => handleSelectPrompt(prompt)} className={`w-full text-left px-3 py-2 rounded-md ${activePrompt?.id === prompt.id ? 'bg-cyan-500/20 text-cyan-300' : 'hover:bg-slate-700/50'}`}>\n {prompt.name}\n </button>\n <button onClick={() => handleDelete(prompt.id)} className=\"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100\">×</button>\n </li>\n ))}\n </ul>\n <div className=\"mt-4 pt-4 border-t border-slate-700\">\n <button onClick={handleAddNew} className=\"w-full text-sm py-2 bg-cyan-500/80 text-white rounded-md\">Add New Prompt</button>\n </div>\n </aside>\n <main className=\"w-2/3 flex flex-col\">\n {activePrompt ? (\n <>\n <label htmlFor=\"prompt-editor\" className=\"text-sm font-medium text-slate-400 mb-2\">{activePrompt.name}</label>\n <textarea\n id=\"prompt-editor\"\n value={activePrompt.text}\n onChange={handleTextChange}\n className=\"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300 focus:ring-2 focus:ring-cyan-500 focus:outline-none\"\n />\n </>\n ) : (\n <div className=\"flex-grow flex items-center justify-center bg-slate-900 rounded-lg text-slate-500\">\n Select a prompt or create a new one.\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","PromptCraftPad","prompts","setPrompts","activePrompt","setActivePrompt","useEffect","freshPrompt","p","handleSelectPrompt","prompt","handleTextChange","e","updatedPrompt","handleAddNew","newPrompt","handleDelete","id","jsxs","jsx","SparklesIcon","Fragment"],"mappings":"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"}
|
assets/PwaManifestEditor-Cqax5g3P.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as l,j as e}from"./react-_fH1j4AW.js";import{b as i}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const ue=()=>{const[t,a]=l.useState({name:"DevCore 100 Progressive Web App",short_name:"DevCore100",start_url:"/",display:"standalone",background_color:"#1e293b",theme_color:"#06b6d4"}),r=o=>{a({...t,[o.target.name]:o.target.value})},s=l.useMemo(()=>{const o={...t,icons:[{src:"icon-192.png",type:"image/png",sizes:"192x192"},{src:"icon-512.png",type:"image/png",sizes:"512x512"}]};return JSON.stringify(o,null,2)},[t]),m=()=>{navigator.clipboard.writeText(s)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(i,{}),e.jsx("span",{className:"ml-3",children:"PWA Manifest Editor"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Configure and generate the `manifest.json` file for your PWA."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg overflow-y-auto",children:[e.jsx("h3",{className:"text-xl font-bold",children:"Configuration"}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"name",className:"block text-sm font-medium text-slate-400",children:"App Name"}),e.jsx("input",{type:"text",name:"name",value:t.name,onChange:r,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"short_name",className:"block text-sm font-medium text-slate-400",children:"Short Name"}),e.jsx("input",{type:"text",name:"short_name",value:t.short_name,onChange:r,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"start_url",className:"block text-sm font-medium text-slate-400",children:"Start URL"}),e.jsx("input",{type:"text",name:"start_url",value:t.start_url,onChange:r,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"display",className:"block text-sm font-medium text-slate-400",children:"Display Mode"}),e.jsxs("select",{name:"display",value:t.display,onChange:r,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700",children:[e.jsx("option",{children:"standalone"}),e.jsx("option",{children:"fullscreen"}),e.jsx("option",{children:"minimal-ui"})]})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"w-1/2",children:[e.jsx("label",{htmlFor:"background_color",className:"block text-sm font-medium text-slate-400",children:"Background Color"}),e.jsx("input",{type:"color",name:"background_color",value:t.background_color,onChange:r,className:"w-full mt-1 h-10 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{className:"w-1/2",children:[e.jsx("label",{htmlFor:"theme_color",className:"block text-sm font-medium text-slate-400",children:"Theme Color"}),e.jsx("input",{type:"color",name:"theme_color",value:t.theme_color,onChange:r,className:"w-full mt-1 h-10 rounded-md bg-slate-800 border border-slate-700"})]})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Generated manifest.json"}),e.jsxs("div",{className:"relative flex-grow",children:[e.jsx("pre",{className:"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto",children:s}),e.jsx("button",{onClick:m,className:"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs",children:"Copy"})]})]})]})]})};export{ue as PwaManifestEditor};
|
| 2 |
+
//# sourceMappingURL=PwaManifestEditor-Cqax5g3P.js.map
|
assets/PwaManifestEditor-Cqax5g3P.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"PwaManifestEditor-Cqax5g3P.js","sources":["../../components/features/PwaManifestEditor.tsx"],"sourcesContent":["\nimport React, { useState, useMemo } from 'react';\nimport { CodeBracketSquareIcon } from '../icons/FeatureIcons.tsx';\n\ninterface ManifestData {\n name: string;\n short_name: string;\n start_url: string;\n display: 'standalone' | 'fullscreen' | 'minimal-ui';\n background_color: string;\n theme_color: string;\n}\n\nexport const PwaManifestEditor: React.FC = () => {\n const [manifest, setManifest] = useState<ManifestData>({\n name: 'DevCore 100 Progressive Web App',\n short_name: 'DevCore100',\n start_url: '/',\n display: 'standalone',\n background_color: '#1e293b',\n theme_color: '#06b6d4',\n });\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {\n setManifest({ ...manifest, [e.target.name]: e.target.value });\n };\n\n const generatedJson = useMemo(() => {\n const fullManifest = {\n ...manifest,\n icons: [\n {\n \"src\": \"icon-192.png\",\n \"type\": \"image/png\",\n \"sizes\": \"192x192\"\n },\n {\n \"src\": \"icon-512.png\",\n \"type\": \"image/png\",\n \"sizes\": \"512x512\"\n }\n ]\n }\n return JSON.stringify(fullManifest, null, 2);\n }, [manifest]);\n\n const handleCopy = () => {\n navigator.clipboard.writeText(generatedJson);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CodeBracketSquareIcon />\n <span className=\"ml-3\">PWA Manifest Editor</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Configure and generate the `manifest.json` file for your PWA.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg overflow-y-auto\">\n <h3 className=\"text-xl font-bold\">Configuration</h3>\n <div>\n <label htmlFor=\"name\" className=\"block text-sm font-medium text-slate-400\">App Name</label>\n <input type=\"text\" name=\"name\" value={manifest.name} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div>\n <label htmlFor=\"short_name\" className=\"block text-sm font-medium text-slate-400\">Short Name</label>\n <input type=\"text\" name=\"short_name\" value={manifest.short_name} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div>\n <label htmlFor=\"start_url\" className=\"block text-sm font-medium text-slate-400\">Start URL</label>\n <input type=\"text\" name=\"start_url\" value={manifest.start_url} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div>\n <label htmlFor=\"display\" className=\"block text-sm font-medium text-slate-400\">Display Mode</label>\n <select name=\"display\" value={manifest.display} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\">\n <option>standalone</option>\n <option>fullscreen</option>\n <option>minimal-ui</option>\n </select>\n </div>\n <div className=\"flex gap-4\">\n <div className=\"w-1/2\">\n <label htmlFor=\"background_color\" className=\"block text-sm font-medium text-slate-400\">Background Color</label>\n <input type=\"color\" name=\"background_color\" value={manifest.background_color} onChange={handleChange} className=\"w-full mt-1 h-10 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div className=\"w-1/2\">\n <label htmlFor=\"theme_color\" className=\"block text-sm font-medium text-slate-400\">Theme Color</label>\n <input type=\"color\" name=\"theme_color\" value={manifest.theme_color} onChange={handleChange} className=\"w-full mt-1 h-10 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n </div>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">Generated manifest.json</label>\n <div className=\"relative flex-grow\">\n <pre className=\"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto\">{generatedJson}</pre>\n <button onClick={handleCopy} className=\"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs\">Copy</button>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["PwaManifestEditor","manifest","setManifest","useState","handleChange","e","generatedJson","useMemo","fullManifest","handleCopy","jsxs","jsx","CodeBracketSquareIcon"],"mappings":"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"}
|
assets/PythonRepl-BCqNNxOs.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as p,j as r}from"./react-_fH1j4AW.js";import{C as w}from"./index-Nqm_ElTk.js";import{T as P}from"./Terminal-BS7dp6j1.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";import"./@xterm-i03dpVGE.js";const Nt=()=>{const o=p.useRef(null),s=p.useRef(null),[c,x]=p.useState(!0),l=`\r
|
| 2 |
+
\x1B[32m>>>\x1B[0m `;p.useEffect(()=>{(async()=>{var t,i,e;try{const m=await window.loadPyodide();s.current=m,m.setStdout({batched:a=>{a.split(`
|
| 3 |
+
`).forEach((n,u,f)=>{var y;u===f.length-1&&n===""||(y=o.current)==null||y.writeln(n)})}}),m.setStderr({batched:a=>{var n;(n=o.current)==null||n.writeln(`\x1B[31m${a}\x1B[0m`)}}),x(!1),(t=o.current)==null||t.writeln(`
|
| 4 |
+
\x1B[32mPython 3.12 (Pyodide) ready.\x1B[0m`),(i=o.current)==null||i.write(l)}catch(m){console.error("Pyodide failed to load.",m),(e=o.current)==null||e.writeln(`
|
| 5 |
+
\x1B[31mError: Pyodide failed to initialize. Check browser console for details.\x1B[0m`)}})()},[]);const h=async(d,t)=>{if(!(c||!s.current)){if(!d.trim()){t.writeln(""),t.write(l);return}t.writeln("");try{const i=s.current,e=await i.runPythonAsync(d);e!=null&&t.writeln(i.repr(e))}catch(i){t.writeln(`\x1B[31m${i.message}\x1B[0m`)}t.write(l)}};return r.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[r.jsxs("header",{className:"mb-6",children:[r.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[r.jsx(w,{}),r.jsx("span",{className:"ml-3",children:"Python REPL"})]}),r.jsx("p",{className:"text-slate-400 mt-1",children:"An interactive Python terminal powered by Pyodide (Python in WebAssembly)."})]}),r.jsx("div",{className:"flex-grow bg-slate-900 rounded-lg overflow-hidden border border-slate-700",children:r.jsx(P,{ref:o,initialMessage:"Initializing Python interpreter via Pyodide... (this may take a moment)",commandHandler:h,isReadOnly:c,prompt:""})})]})};export{Nt as PythonRepl};
|
| 6 |
+
//# sourceMappingURL=PythonRepl-BCqNNxOs.js.map
|
assets/PythonRepl-BCqNNxOs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"PythonRepl-BCqNNxOs.js","sources":["../../components/features/PythonRepl.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { CpuChipIcon } from '../icons/FeatureIcons.tsx';\nimport TerminalComponent, { TerminalHandle } from '../Terminal.tsx';\nimport type { Terminal } from '@xterm/xterm';\n\nexport const PythonRepl: React.FC = () => {\n const termRef = useRef<TerminalHandle>(null);\n const pyodideRef = useRef<any>(null);\n const [isPyodideLoading, setIsPyodideLoading] = useState(true);\n\n const pyPrompt = '\\r\\n\\x1b[32m>>>\\x1b[0m ';\n\n useEffect(() => {\n const initPyodide = async () => {\n try {\n // The loadPyodide function is attached to the window object by the script in index.html\n const pyodide = await window.loadPyodide();\n pyodideRef.current = pyodide;\n\n // Redirect stdout and stderr to write to the terminal\n pyodide.setStdout({\n batched: (str: string) => {\n // Batched stdout might contain newlines, so we process them\n str.split('\\n').forEach((line, i, arr) => {\n if (i === arr.length - 1 && line === '') return;\n termRef.current?.writeln(line);\n });\n }\n });\n pyodide.setStderr({\n batched: (str: string) => {\n termRef.current?.writeln(`\\x1b[31m${str}\\x1b[0m`);\n }\n });\n\n setIsPyodideLoading(false);\n termRef.current?.writeln('\\n\\x1b[32mPython 3.12 (Pyodide) ready.\\x1b[0m');\n termRef.current?.write(pyPrompt);\n } catch (error) {\n console.error(\"Pyodide failed to load.\", error);\n termRef.current?.writeln('\\n\\x1b[31mError: Pyodide failed to initialize. Check browser console for details.\\x1b[0m');\n }\n };\n\n initPyodide();\n }, []);\n\n const handleCommand = async (command: string, term: Terminal) => {\n if (isPyodideLoading || !pyodideRef.current) {\n return;\n };\n \n if (!command.trim()) {\n term.writeln('');\n term.write(pyPrompt);\n return;\n }\n\n term.writeln(''); // Echo the command line\n\n try {\n const pyodide = pyodideRef.current;\n // Let pyodide handle multi-line execution from pasted input\n const result = await pyodide.runPythonAsync(command);\n if (result !== undefined && result !== null) {\n // Use pyodide's built-in repr for a more python-like output\n term.writeln(pyodide.repr(result));\n }\n } catch (error: any) {\n term.writeln(`\\x1b[31m${error.message}\\x1b[0m`);\n }\n term.write(pyPrompt);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CpuChipIcon />\n <span className=\"ml-3\">Python REPL</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">An interactive Python terminal powered by Pyodide (Python in WebAssembly).</p>\n </header>\n <div className=\"flex-grow bg-slate-900 rounded-lg overflow-hidden border border-slate-700\">\n <TerminalComponent\n ref={termRef}\n initialMessage=\"Initializing Python interpreter via Pyodide... (this may take a moment)\"\n commandHandler={handleCommand}\n isReadOnly={isPyodideLoading}\n prompt={\"\"} // The handler controls the prompt, so the base component doesn't need one\n />\n </div>\n </div>\n );\n};\n"],"names":["PythonRepl","termRef","useRef","pyodideRef","isPyodideLoading","setIsPyodideLoading","useState","pyPrompt","useEffect","pyodide","str","line","i","arr","_a","_b","error","_c","handleCommand","command","term","result","jsxs","jsx","CpuChipIcon","TerminalComponent"],"mappings":"o2EAKO,MAAMA,GAAuB,IAAM,CACtC,MAAMC,EAAUC,EAAAA,OAAuB,IAAI,EACrCC,EAAaD,EAAAA,OAAY,IAAI,EAC7B,CAACE,EAAkBC,CAAmB,EAAIC,EAAAA,SAAS,EAAI,EAEvDC,EAAW;AAAA,qBAEjBC,EAAAA,UAAU,IAAM,EACQ,SAAY,WAC5B,GAAI,CAEA,MAAMC,EAAU,MAAM,OAAO,YAAA,EAC7BN,EAAW,QAAUM,EAGrBA,EAAQ,UAAU,CACd,QAAUC,GAAgB,CAEtBA,EAAI,MAAM;AAAA,CAAI,EAAE,QAAQ,CAACC,EAAMC,EAAGC,IAAQ,OAClCD,IAAMC,EAAI,OAAS,GAAKF,IAAS,KACrCG,EAAAb,EAAQ,UAAR,MAAAa,EAAiB,QAAQH,EAC7B,CAAC,CACL,CAAA,CACH,EACDF,EAAQ,UAAU,CACd,QAAUC,GAAgB,QACtBI,EAAAb,EAAQ,UAAR,MAAAa,EAAiB,QAAQ,WAAWJ,CAAG,UAC3C,CAAA,CACH,EAEDL,EAAoB,EAAK,GACzBS,EAAAb,EAAQ,UAAR,MAAAa,EAAiB,QAAQ;AAAA,+CACzBC,EAAAd,EAAQ,UAAR,MAAAc,EAAiB,MAAMR,EAC3B,OAASS,EAAO,CACZ,QAAQ,MAAM,0BAA2BA,CAAK,GAC9CC,EAAAhB,EAAQ,UAAR,MAAAgB,EAAiB,QAAQ;AAAA,wFAC7B,CACJ,GAEA,CACJ,EAAG,CAAA,CAAE,EAEL,MAAMC,EAAgB,MAAOC,EAAiBC,IAAmB,CAC7D,GAAI,EAAAhB,GAAoB,CAACD,EAAW,SAIpC,IAAI,CAACgB,EAAQ,OAAQ,CACjBC,EAAK,QAAQ,EAAE,EACfA,EAAK,MAAMb,CAAQ,EACnB,MACJ,CAEAa,EAAK,QAAQ,EAAE,EAEf,GAAI,CACA,MAAMX,EAAUN,EAAW,QAErBkB,EAAS,MAAMZ,EAAQ,eAAeU,CAAO,EACvBE,GAAW,MAEnCD,EAAK,QAAQX,EAAQ,KAAKY,CAAM,CAAC,CAEzC,OAASL,EAAY,CACjBI,EAAK,QAAQ,WAAWJ,EAAM,OAAO,SAAS,CAClD,CACAI,EAAK,MAAMb,CAAQ,EACvB,EAEA,OACIe,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAY,EACbD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,aAAA,CAAW,CAAA,EACtC,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,4EAAA,CAA0E,CAAA,EACjH,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,4EACX,SAAAA,EAAAA,IAACE,EAAA,CACG,IAAKxB,EACL,eAAe,0EACf,eAAgBiB,EAChB,WAAYd,EACZ,OAAQ,EAAA,CAAA,CACZ,CACJ,CAAA,EACJ,CAER"}
|
assets/RegexSandbox-DNYnjfsp.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as i,j as e}from"./react-_fH1j4AW.js";import{a as b}from"./geminiService-7wPGMJPL.js";import{B as j}from"./index-Nqm_ElTk.js";import{L as N}from"./LoadingSpinner-C3NwW9hm.js";import"./@braintree-9Zuj5s7N.js";import"./@google-4tyssLU_.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const Me=()=>{const[l,c]=i.useState("/\\b([a-z]+)ing\\b/g"),[s,g]=i.useState("The quick brown fox is jumping over the lazy dog. Testing..."),[a,u]=i.useState('find words ending in "ing"'),[d,x]=i.useState(!1),{matches:r,error:m}=i.useMemo(()=>{try{const t=l.match(/^\/(.*)\/([gimyus]*)$/);if(!t)return{matches:null,error:"Invalid regex literal format. Use /pattern/flags."};const[,n,o]=t,p=new RegExp(n,o);return{matches:[...s.matchAll(p)],error:null}}catch(t){return t instanceof Error?{matches:null,error:t.message}:{matches:null,error:"An unknown error occurred."}}},[l,s]),h=i.useCallback(async()=>{if(a){x(!0);try{const t=await b(a);c(t)}catch(t){console.error(t)}finally{x(!1)}}},[a]),f=i.useMemo(()=>{if(!r||r.length===0)return s;let t=0;const n=[];return r.forEach((o,p)=>{o.index!==void 0&&(n.push(s.substring(t,o.index)),n.push(e.jsx("mark",{className:"bg-cyan-500/30 text-cyan-200 rounded px-1",children:o[0]},p)),t=o.index+o[0].length)}),n.push(s.substring(t)),n},[r,s]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(j,{}),e.jsx("span",{className:"ml-3",children:"RegEx Sandbox"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Test your regular expressions and generate them with AI."})]}),e.jsxs("div",{className:"flex flex-col gap-4 flex-grow min-h-0",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:a,onChange:t=>u(t.target.value),placeholder:"Describe the pattern to find...",className:"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm focus:ring-2 focus:ring-cyan-500"}),e.jsx("button",{onClick:h,disabled:d,className:"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md flex items-center",children:d?e.jsx(N,{}):"Generate"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"regex-pattern",className:"text-sm font-medium text-slate-400",children:"Regular Expression"}),e.jsx("input",{id:"regex-pattern",type:"text",value:l,onChange:t=>c(t.target.value),className:`w-full mt-1 px-3 py-2 rounded-md bg-slate-900 border ${m?"border-red-500":"border-slate-700"} font-mono text-sm focus:ring-2 focus:ring-cyan-500`}),m&&e.jsx("p",{className:"text-red-400 text-xs mt-1",children:m})]}),e.jsxs("div",{className:"flex flex-col flex-grow min-h-0",children:[e.jsx("label",{htmlFor:"test-string",className:"text-sm font-medium text-slate-400",children:"Test String"}),e.jsx("textarea",{id:"test-string",value:s,onChange:t=>g(t.target.value),className:"w-full mt-1 p-3 rounded-md bg-slate-900 border border-slate-700 font-mono text-sm resize-y h-32"}),e.jsx("div",{className:"mt-2 p-3 bg-slate-800/50 rounded-md border border-slate-700/50",children:f})]}),e.jsxs("div",{className:"flex-shrink-0",children:[e.jsxs("h3",{className:"text-lg font-bold",children:["Matches (",(r==null?void 0:r.length)||0,")"]}),e.jsx("div",{className:"mt-2 p-2 bg-slate-900 rounded-md overflow-y-auto max-h-48",children:r&&r.length>0?e.jsx("pre",{className:"text-xs text-green-300",children:JSON.stringify(r,null,2)}):e.jsx("p",{className:"text-slate-500 text-sm",children:"No matches found."})})]})]})]})};export{Me as RegexSandbox};
|
| 2 |
+
//# sourceMappingURL=RegexSandbox-DNYnjfsp.js.map
|
assets/RegexSandbox-DNYnjfsp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"RegexSandbox-DNYnjfsp.js","sources":["../../components/features/RegexSandbox.tsx"],"sourcesContent":["\nimport React, { useState, useMemo, useCallback } from 'react';\nimport { generateRegEx } from '../../services/geminiService.ts';\nimport { BeakerIcon } from '../icons/FeatureIcons.tsx';\nimport { LoadingSpinner } from './shared/LoadingSpinner.tsx';\n\nexport const RegexSandbox: React.FC = () => {\n const [pattern, setPattern] = useState<string>('/\\\\b([a-z]+)ing\\\\b/g');\n const [testString, setTestString] = useState<string>('The quick brown fox is jumping over the lazy dog. Testing...');\n const [aiPrompt, setAiPrompt] = useState<string>('find words ending in \"ing\"');\n const [isAiLoading, setIsAiLoading] = useState<boolean>(false);\n\n const { matches, error } = useMemo(() => {\n try {\n const patternParts = pattern.match(/^\\/(.*)\\/([gimyus]*)$/);\n if (!patternParts) {\n return { matches: null, error: 'Invalid regex literal format. Use /pattern/flags.' };\n }\n const [, regexBody, regexFlags] = patternParts;\n const regex = new RegExp(regexBody, regexFlags);\n const allMatches = [...testString.matchAll(regex)];\n return { matches: allMatches, error: null };\n } catch (e) {\n if (e instanceof Error) {\n return { matches: null, error: e.message };\n }\n return { matches: null, error: 'An unknown error occurred.' };\n }\n }, [pattern, testString]);\n \n const handleGenerateRegex = useCallback(async () => {\n if (!aiPrompt) return;\n setIsAiLoading(true);\n try {\n const result = await generateRegEx(aiPrompt);\n setPattern(result);\n } catch(e) {\n console.error(e);\n } finally {\n setIsAiLoading(false);\n }\n }, [aiPrompt]);\n\n const highlightedString = useMemo(() => {\n if (!matches || matches.length === 0) return testString;\n let lastIndex = 0;\n const parts = [];\n matches.forEach((match, i) => {\n if (match.index === undefined) return;\n parts.push(testString.substring(lastIndex, match.index));\n parts.push(<mark key={i} className=\"bg-cyan-500/30 text-cyan-200 rounded px-1\">{match[0]}</mark>);\n lastIndex = match.index + match[0].length;\n });\n parts.push(testString.substring(lastIndex));\n return parts;\n }, [matches, testString]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <BeakerIcon />\n <span className=\"ml-3\">RegEx Sandbox</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Test your regular expressions and generate them with AI.</p>\n </header>\n <div className=\"flex flex-col gap-4 flex-grow min-h-0\">\n <div className=\"flex gap-2\">\n <input\n type=\"text\"\n value={aiPrompt}\n onChange={(e) => setAiPrompt(e.target.value)}\n placeholder=\"Describe the pattern to find...\"\n className=\"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm focus:ring-2 focus:ring-cyan-500\"\n />\n <button onClick={handleGenerateRegex} disabled={isAiLoading} className=\"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md flex items-center\">\n {isAiLoading ? <LoadingSpinner/> : 'Generate'}\n </button>\n </div>\n <div>\n <label htmlFor=\"regex-pattern\" className=\"text-sm font-medium text-slate-400\">Regular Expression</label>\n <input\n id=\"regex-pattern\"\n type=\"text\"\n value={pattern}\n onChange={(e) => setPattern(e.target.value)}\n className={`w-full mt-1 px-3 py-2 rounded-md bg-slate-900 border ${error ? 'border-red-500' : 'border-slate-700'} font-mono text-sm focus:ring-2 focus:ring-cyan-500`}\n />\n {error && <p className=\"text-red-400 text-xs mt-1\">{error}</p>}\n </div>\n <div className=\"flex flex-col flex-grow min-h-0\">\n <label htmlFor=\"test-string\" className=\"text-sm font-medium text-slate-400\">Test String</label>\n <textarea\n id=\"test-string\"\n value={testString}\n onChange={(e) => setTestString(e.target.value)}\n className=\"w-full mt-1 p-3 rounded-md bg-slate-900 border border-slate-700 font-mono text-sm resize-y h-32\"\n />\n <div className=\"mt-2 p-3 bg-slate-800/50 rounded-md border border-slate-700/50\">\n {highlightedString}\n </div>\n </div>\n <div className=\"flex-shrink-0\">\n <h3 className=\"text-lg font-bold\">Matches ({matches?.length || 0})</h3>\n <div className=\"mt-2 p-2 bg-slate-900 rounded-md overflow-y-auto max-h-48\">\n {matches && matches.length > 0 ? (\n <pre className=\"text-xs text-green-300\">{JSON.stringify(matches, null, 2)}</pre>\n ) : (\n <p className=\"text-slate-500 text-sm\">No matches found.</p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["RegexSandbox","pattern","setPattern","useState","testString","setTestString","aiPrompt","setAiPrompt","isAiLoading","setIsAiLoading","matches","error","useMemo","patternParts","regexBody","regexFlags","regex","e","handleGenerateRegex","useCallback","result","generateRegEx","highlightedString","lastIndex","parts","match","i","jsxs","jsx","BeakerIcon","LoadingSpinner"],"mappings":"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"}
|
assets/ResponsiveTester-DzxjOgni.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as i,j as t}from"./react-_fH1j4AW.js";import{E as d}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const p={"iPhone 12":{width:390,height:844},"iPad Air":{width:820,height:1180},Laptop:{width:1366,height:768},Desktop:{width:1920,height:1080},Auto:{width:"100%",height:"100%"}},vt=()=>{const[r,a]=i.useState("https://react.dev"),[o,l]=i.useState(r),[s,n]=i.useState("Auto"),m=p[s],c=e=>{e.preventDefault(),l(r.startsWith("http")?r:`https://${r}`)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(d,{}),t.jsx("span",{className:"ml-3",children:"Responsive Tester"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Preview your web pages at different screen sizes."})]}),t.jsxs("form",{onSubmit:c,className:"flex items-center gap-2 mb-4",children:[t.jsx("input",{type:"text",value:r,onChange:e=>a(e.target.value),placeholder:"https://example.com",className:"flex-grow px-4 py-2 rounded-md bg-slate-800 border border-slate-700 focus:ring-2 focus:ring-cyan-500 focus:outline-none"}),t.jsx("button",{type:"submit",className:"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md hover:bg-cyan-400",children:"Load"})]}),t.jsx("div",{className:"bg-slate-800/50 p-2 rounded-lg flex justify-center items-center gap-2 mb-4",children:Object.keys(p).map(e=>t.jsx("button",{onClick:()=>n(e),className:`px-3 py-1 rounded-md text-sm ${s===e?"bg-cyan-500/20 text-cyan-300":"hover:bg-slate-700"}`,children:e},e))}),t.jsx("div",{className:"flex-grow flex items-center justify-center bg-slate-900 rounded-lg p-4 overflow-auto",children:t.jsx("iframe",{src:o,style:{width:m.width,height:m.height,maxWidth:"100%",maxHeight:"100%"},className:"bg-white border-4 border-slate-700 rounded-md transition-all duration-300",title:"Responsive Preview"},o)})]})};export{vt as ResponsiveTester};
|
| 2 |
+
//# sourceMappingURL=ResponsiveTester-DzxjOgni.js.map
|
assets/ResponsiveTester-DzxjOgni.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ResponsiveTester-DzxjOgni.js","sources":["../../components/features/ResponsiveTester.tsx"],"sourcesContent":["\nimport React, { useState } from 'react';\nimport { EyeIcon } from '../icons/FeatureIcons.tsx';\n\nconst devices = {\n 'iPhone 12': { width: 390, height: 844 },\n 'iPad Air': { width: 820, height: 1180 },\n 'Laptop': { width: 1366, height: 768 },\n 'Desktop': { width: 1920, height: 1080 },\n 'Auto': { width: '100%', height: '100%' },\n};\n\ntype DeviceName = keyof typeof devices;\n\nexport const ResponsiveTester: React.FC = () => {\n const [url, setUrl] = useState('https://react.dev');\n const [displayUrl, setDisplayUrl] = useState(url);\n const [activeDevice, setActiveDevice] = useState<DeviceName>('Auto');\n\n const iframeSize = devices[activeDevice];\n \n const handleUrlSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n // A simple check to prepend https:// if missing\n setDisplayUrl(url.startsWith('http') ? url : `https://${url}`);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <EyeIcon />\n <span className=\"ml-3\">Responsive Tester</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Preview your web pages at different screen sizes.</p>\n </header>\n <form onSubmit={handleUrlSubmit} className=\"flex items-center gap-2 mb-4\">\n <input\n type=\"text\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n placeholder=\"https://example.com\"\n className=\"flex-grow px-4 py-2 rounded-md bg-slate-800 border border-slate-700 focus:ring-2 focus:ring-cyan-500 focus:outline-none\"\n />\n <button type=\"submit\" className=\"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md hover:bg-cyan-400\">Load</button>\n </form>\n <div className=\"bg-slate-800/50 p-2 rounded-lg flex justify-center items-center gap-2 mb-4\">\n {Object.keys(devices).map(name => (\n <button\n key={name}\n onClick={() => setActiveDevice(name as DeviceName)}\n className={`px-3 py-1 rounded-md text-sm ${activeDevice === name ? 'bg-cyan-500/20 text-cyan-300' : 'hover:bg-slate-700'}`}\n >\n {name}\n </button>\n ))}\n </div>\n <div className=\"flex-grow flex items-center justify-center bg-slate-900 rounded-lg p-4 overflow-auto\">\n <iframe\n key={displayUrl} // Force re-render on URL change\n src={displayUrl}\n style={{ width: iframeSize.width, height: iframeSize.height, maxWidth: '100%', maxHeight: '100%' }}\n className=\"bg-white border-4 border-slate-700 rounded-md transition-all duration-300\"\n title=\"Responsive Preview\"\n />\n </div>\n </div>\n );\n};"],"names":["devices","ResponsiveTester","url","setUrl","useState","displayUrl","setDisplayUrl","activeDevice","setActiveDevice","iframeSize","handleUrlSubmit","jsxs","jsx","EyeIcon","name"],"mappings":"4xEAIA,MAAMA,EAAU,CACZ,YAAa,CAAE,MAAO,IAAK,OAAQ,GAAA,EACnC,WAAY,CAAE,MAAO,IAAK,OAAQ,IAAA,EAClC,OAAU,CAAE,MAAO,KAAM,OAAQ,GAAA,EACjC,QAAW,CAAE,MAAO,KAAM,OAAQ,IAAA,EAClC,KAAQ,CAAE,MAAO,OAAQ,OAAQ,MAAA,CACrC,EAIaC,GAA6B,IAAM,CAC5C,KAAM,CAACC,EAAKC,CAAM,EAAIC,EAAAA,SAAS,mBAAmB,EAC5C,CAACC,EAAYC,CAAa,EAAIF,EAAAA,SAASF,CAAG,EAC1C,CAACK,EAAcC,CAAe,EAAIJ,EAAAA,SAAqB,MAAM,EAE7DK,EAAaT,EAAQO,CAAY,EAEjCG,EAAmB,GAAuB,CAC5C,EAAE,eAAA,EAEFJ,EAAcJ,EAAI,WAAW,MAAM,EAAIA,EAAM,WAAWA,CAAG,EAAE,CACjE,EAEA,OACIS,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAQ,EACTD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,mBAAA,CAAiB,CAAA,EAC5C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,mDAAA,CAAiD,CAAA,EACxF,EACAD,EAAAA,KAAC,OAAA,CAAK,SAAUD,EAAiB,UAAU,+BACvC,SAAA,CAAAE,EAAAA,IAAC,QAAA,CACG,KAAK,OACL,MAAOV,EACP,SAAW,GAAMC,EAAO,EAAE,OAAO,KAAK,EACtC,YAAY,sBACZ,UAAU,yHAAA,CAAA,QAEb,SAAA,CAAO,KAAK,SAAS,UAAU,8EAA8E,SAAA,MAAA,CAAI,CAAA,EACtH,EACAS,EAAAA,IAAC,OAAI,UAAU,6EACV,gBAAO,KAAKZ,CAAO,EAAE,IAAIc,GACtBF,EAAAA,IAAC,SAAA,CAEG,QAAS,IAAMJ,EAAgBM,CAAkB,EACjD,UAAW,gCAAgCP,IAAiBO,EAAO,+BAAiC,oBAAoB,GAEvH,SAAAA,CAAA,EAJIA,CAAA,CAMZ,EACL,EACAF,EAAAA,IAAC,MAAA,CAAI,UAAU,uFACX,SAAAA,EAAAA,IAAC,SAAA,CAEG,IAAKP,EACL,MAAO,CAAE,MAAOI,EAAW,MAAO,OAAQA,EAAW,OAAQ,SAAU,OAAQ,UAAW,MAAA,EAC1F,UAAU,4EACV,MAAM,oBAAA,EAJDJ,CAAA,CAKT,CACJ,CAAA,EACJ,CAER"}
|
assets/SchemaDesigner-DuMq6rDB.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as d,j as e}from"./react-_fH1j4AW.js";import{M as g}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const ve=()=>{const[m,o]=d.useState([{id:1,name:"users",columns:[{id:1,name:"id",type:"INT"},{id:2,name:"username",type:"VARCHAR"}]},{id:2,name:"posts",columns:[{id:1,name:"id",type:"INT"},{id:2,name:"user_id",type:"INT"},{id:3,name:"content",type:"TEXT"}]}]),[a,p]=d.useState(""),c=()=>{a&&(o([...m,{id:Date.now(),name:a,columns:[{id:Date.now(),name:"id",type:"INT"}]}]),p(""))},x=t=>{o(m.map(s=>s.id===t?{...s,columns:[...s.columns,{id:Date.now(),name:"new_column",type:"VARCHAR"}]}:s))},n=(t,s,i,u)=>{o(m.map(r=>r.id===t?{...r,columns:r.columns.map(l=>l.id===s?{...l,[i]:u}:l)}:r))};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(g,{}),e.jsx("span",{className:"ml-3",children:"Schema Designer"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Visually design your database schema."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4 overflow-y-auto pr-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:a,onChange:t=>p(t.target.value),placeholder:"New table name...",className:"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm"}),e.jsx("button",{onClick:c,className:"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md",children:"Add Table"})]}),e.jsx("div",{className:"space-y-4",children:m.map(t=>e.jsxs("div",{className:"bg-slate-800/50 p-4 rounded-lg",children:[e.jsx("h3",{className:"font-bold text-cyan-400 text-lg mb-2",children:t.name}),e.jsx("div",{className:"space-y-2",children:t.columns.map(s=>e.jsxs("div",{className:"flex items-center gap-2 font-mono text-sm",children:[e.jsx("input",{value:s.name,onChange:i=>n(t.id,s.id,"name",i.target.value),className:"w-1/2 px-2 py-1 rounded bg-slate-800 border border-slate-700"}),e.jsx("input",{value:s.type,onChange:i=>n(t.id,s.id,"type",i.target.value),className:"w-1/2 px-2 py-1 rounded bg-slate-800 border border-slate-700"})]},s.id))}),e.jsx("button",{onClick:()=>x(t.id),className:"text-xs mt-3 px-3 py-1 bg-slate-700 rounded-md",children:"Add Column"})]},t.id))})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"JSON Output"}),e.jsxs("div",{className:"relative flex-grow",children:[e.jsx("pre",{className:"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto",children:JSON.stringify(m,null,2)}),e.jsx("button",{onClick:()=>navigator.clipboard.writeText(JSON.stringify(m,null,2)),className:"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs",children:"Copy"})]})]})]})]})};export{ve as SchemaDesigner};
|
| 2 |
+
//# sourceMappingURL=SchemaDesigner-DuMq6rDB.js.map
|
assets/SchemaDesigner-DuMq6rDB.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"SchemaDesigner-DuMq6rDB.js","sources":["../../components/features/SchemaDesigner.tsx"],"sourcesContent":["\nimport React, { useState } from 'react';\nimport { MapIcon } from '../icons/FeatureIcons.tsx';\n\ninterface Column {\n id: number;\n name: string;\n type: string;\n}\n\ninterface Table {\n id: number;\n name: string;\n columns: Column[];\n}\n\nexport const SchemaDesigner: React.FC = () => {\n const [tables, setTables] = useState<Table[]>([\n { id: 1, name: 'users', columns: [{ id: 1, name: 'id', type: 'INT' }, {id: 2, name: 'username', type: 'VARCHAR'}] },\n { id: 2, name: 'posts', columns: [{ id: 1, name: 'id', type: 'INT' }, {id: 2, name: 'user_id', type: 'INT'}, {id: 3, name: 'content', type: 'TEXT'}] },\n ]);\n const [newTableName, setNewTableName] = useState('');\n \n const addTable = () => {\n if(!newTableName) return;\n setTables([...tables, { id: Date.now(), name: newTableName, columns: [{ id: Date.now(), name: 'id', type: 'INT' }] }]);\n setNewTableName('');\n };\n\n const addColumn = (tableId: number) => {\n setTables(tables.map(t => t.id === tableId ? {...t, columns: [...t.columns, {id: Date.now(), name: 'new_column', type: 'VARCHAR'}]} : t));\n };\n \n const updateColumn = (tableId: number, colId: number, field: 'name' | 'type', value: string) => {\n setTables(tables.map(t => t.id === tableId ? {...t, columns: t.columns.map(c => c.id === colId ? {...c, [field]: value} : c)} : t));\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <MapIcon />\n <span className=\"ml-3\">Schema Designer</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Visually design your database schema.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4 overflow-y-auto pr-2\">\n <div className=\"flex gap-2\">\n <input type=\"text\" value={newTableName} onChange={e => setNewTableName(e.target.value)} placeholder=\"New table name...\" className=\"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm\"/>\n <button onClick={addTable} className=\"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md\">Add Table</button>\n </div>\n <div className=\"space-y-4\">\n {tables.map(table => (\n <div key={table.id} className=\"bg-slate-800/50 p-4 rounded-lg\">\n <h3 className=\"font-bold text-cyan-400 text-lg mb-2\">{table.name}</h3>\n <div className=\"space-y-2\">\n {table.columns.map(col => (\n <div key={col.id} className=\"flex items-center gap-2 font-mono text-sm\">\n <input value={col.name} onChange={e => updateColumn(table.id, col.id, 'name', e.target.value)} className=\"w-1/2 px-2 py-1 rounded bg-slate-800 border border-slate-700\"/>\n <input value={col.type} onChange={e => updateColumn(table.id, col.id, 'type', e.target.value)} className=\"w-1/2 px-2 py-1 rounded bg-slate-800 border border-slate-700\"/>\n </div>\n ))}\n </div>\n <button onClick={() => addColumn(table.id)} className=\"text-xs mt-3 px-3 py-1 bg-slate-700 rounded-md\">Add Column</button>\n </div>\n ))}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">JSON Output</label>\n <div className=\"relative flex-grow\">\n <pre className=\"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto\">\n {JSON.stringify(tables, null, 2)}\n </pre>\n <button onClick={() => navigator.clipboard.writeText(JSON.stringify(tables, null, 2))} className=\"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs\">Copy</button>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["SchemaDesigner","tables","setTables","useState","newTableName","setNewTableName","addTable","addColumn","tableId","t","updateColumn","colId","field","value","c","jsxs","jsx","MapIcon","e","table","col"],"mappings":"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"}
|
assets/ScratchpadTerminal-hDDc3rYH.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{j as r}from"./react-_fH1j4AW.js";import{T as t}from"./index-Nqm_ElTk.js";import{T as i}from"./Terminal-BS7dp6j1.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";import"./@xterm-i03dpVGE.js";const cr=()=>r.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[r.jsxs("header",{className:"mb-6",children:[r.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[r.jsx(t,{}),r.jsx("span",{className:"ml-3",children:"Scratchpad Terminal"})]}),r.jsx("p",{className:"text-slate-400 mt-1",children:"An isolated terminal for quick tests and experiments."})]}),r.jsx("div",{className:"flex-grow bg-slate-900 rounded-lg overflow-hidden border border-slate-700",children:r.jsx(i,{initialMessage:"Welcome to the Scratchpad Terminal. This is a temporary, isolated environment."})})]});export{cr as ScratchpadTerminal};
|
| 2 |
+
//# sourceMappingURL=ScratchpadTerminal-hDDc3rYH.js.map
|
assets/ScratchpadTerminal-hDDc3rYH.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ScratchpadTerminal-hDDc3rYH.js","sources":["../../components/features/ScratchpadTerminal.tsx"],"sourcesContent":["import React from 'react';\nimport { TerminalIcon } from '../icons/FeatureIcons.tsx';\nimport TerminalComponent from '../Terminal.tsx';\n\nexport const ScratchpadTerminal: React.FC = () => {\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <TerminalIcon />\n <span className=\"ml-3\">Scratchpad Terminal</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">An isolated terminal for quick tests and experiments.</p>\n </header>\n <div className=\"flex-grow bg-slate-900 rounded-lg overflow-hidden border border-slate-700\">\n <TerminalComponent initialMessage=\"Welcome to the Scratchpad Terminal. This is a temporary, isolated environment.\" />\n </div>\n </div>\n );\n};"],"names":["ScratchpadTerminal","jsxs","jsx","TerminalIcon","TerminalComponent"],"mappings":"61EAIO,MAAMA,GAA+B,IAEpCC,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,qBAAA,CAAmB,CAAA,EAC9C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,uDAAA,CAAqD,CAAA,EAC5F,EACAA,EAAAA,IAAC,OAAI,UAAU,4EACX,eAACE,EAAA,CAAkB,eAAe,iFAAiF,CAAA,CACvH,CAAA,EACJ"}
|
assets/ScreenshotToComponent-DJq7IjcN.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as o,j as e}from"./react-_fH1j4AW.js";import{h as b}from"./geminiService-7wPGMJPL.js";import{P as j}from"./index-Nqm_ElTk.js";import{L as N}from"./LoadingSpinner-C3NwW9hm.js";import{m as y}from"./marked-CesSW9Du.js";import{a as v,b as w}from"./fileUtils-BHmmJ0tL.js";import"./@braintree-9Zuj5s7N.js";import"./@google-4tyssLU_.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const Ue=()=>{const[c,f]=o.useState(null),[s,d]=o.useState(""),[a,x]=o.useState(!1),[m,i]=o.useState(""),h=o.useCallback(async l=>{const t=l.clipboardData.items;for(let r=0;r<t.length;r++)if(t[r].type.indexOf("image")!==-1){const n=t[r].getAsFile();if(n)try{const[p,u]=await Promise.all([v(n),w(n)]);f(p),g(u)}catch(p){i("Could not process pasted image."),console.error(p)}return}},[]),g=async l=>{x(!0),i(""),d("");try{const t=await b(l);d(t)}catch(t){const r=t instanceof Error?t.message:"An unknown error occurred.";i(`Failed to generate component: ${r}`)}finally{x(!1)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(j,{}),e.jsx("span",{className:"ml-3",children:"AI Screenshot-to-Component"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Take a screenshot of a UI element and paste it here to generate code."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsx("div",{onPaste:h,className:"flex flex-col items-center justify-center bg-slate-800/50 p-6 rounded-lg border-2 border-dashed border-slate-700 focus:outline-none focus:border-cyan-500",tabIndex:0,children:c?e.jsx("img",{src:c,alt:"Pasted content",className:"max-w-full max-h-full object-contain rounded-md shadow-lg"}):e.jsxs("div",{className:"text-center text-slate-400",children:[e.jsx("h2",{className:"text-xl font-bold",children:"Paste an image here"}),e.jsx("p",{children:"(Cmd/Ctrl + V)"})]})}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Generated Code"}),e.jsxs("div",{className:"flex-grow p-1 bg-slate-900 border border-slate-700 rounded-md overflow-y-auto",children:[a&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(N,{})}),m&&e.jsx("p",{className:"p-4 text-red-400",children:m}),s&&!a&&e.jsx("div",{className:"prose prose-sm prose-invert max-w-none prose-pre:bg-transparent prose-pre:p-4 prose-pre:m-0 prose-code:text-cyan-300",dangerouslySetInnerHTML:{__html:y(s)}}),!a&&!s&&!m&&e.jsx("div",{className:"text-slate-500 h-full flex items-center justify-center",children:"Generated component code will appear here."})]})]})]})]})};export{Ue as ScreenshotToComponent};
|
| 2 |
+
//# sourceMappingURL=ScreenshotToComponent-DJq7IjcN.js.map
|
assets/ScreenshotToComponent-DJq7IjcN.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ScreenshotToComponent-DJq7IjcN.js","sources":["../../components/features/ScreenshotToComponent.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { generateComponentFromImage } from '../../services/geminiService.ts';\nimport { PhotoIcon } from '../icons/FeatureIcons.tsx';\nimport { LoadingSpinner } from './shared/LoadingSpinner.tsx';\nimport { marked } from 'marked';\nimport { blobToBase64, blobToDataURL } from '../../services/fileUtils.ts';\n\nexport const ScreenshotToComponent: React.FC = () => {\n const [pastedImage, setPastedImage] = useState<string | null>(null);\n const [code, setCode] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n\n const handlePaste = useCallback(async (event: React.ClipboardEvent) => {\n const items = event.clipboardData.items;\n for (let i = 0; i < items.length; i++) {\n if (items[i].type.indexOf('image') !== -1) {\n const blob = items[i].getAsFile();\n if (blob) {\n try {\n const [dataUrl, base64Image] = await Promise.all([\n blobToDataURL(blob),\n blobToBase64(blob)\n ]);\n setPastedImage(dataUrl);\n handleGenerate(base64Image);\n } catch (e) {\n setError('Could not process pasted image.');\n console.error(e);\n }\n }\n return;\n }\n }\n }, []);\n\n const handleGenerate = async (base64Image: string) => {\n setIsLoading(true);\n setError('');\n setCode('');\n try {\n const result = await generateComponentFromImage(base64Image);\n setCode(result);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate component: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <PhotoIcon />\n <span className=\"ml-3\">AI Screenshot-to-Component</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Take a screenshot of a UI element and paste it here to generate code.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div \n onPaste={handlePaste}\n className=\"flex flex-col items-center justify-center bg-slate-800/50 p-6 rounded-lg border-2 border-dashed border-slate-700 focus:outline-none focus:border-cyan-500\"\n tabIndex={0}\n >\n {pastedImage ? (\n <img src={pastedImage} alt=\"Pasted content\" className=\"max-w-full max-h-full object-contain rounded-md shadow-lg\" />\n ) : (\n <div className=\"text-center text-slate-400\">\n <h2 className=\"text-xl font-bold\">Paste an image here</h2>\n <p>(Cmd/Ctrl + V)</p>\n </div>\n )}\n </div>\n <div className=\"flex flex-col h-full\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">Generated Code</label>\n <div className=\"flex-grow p-1 bg-slate-900 border border-slate-700 rounded-md overflow-y-auto\">\n {isLoading && (\n <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>\n )}\n {error && <p className=\"p-4 text-red-400\">{error}</p>}\n {code && !isLoading && (\n <div\n className=\"prose prose-sm prose-invert max-w-none prose-pre:bg-transparent prose-pre:p-4 prose-pre:m-0 prose-code:text-cyan-300\"\n dangerouslySetInnerHTML={{ __html: marked(code) }}\n />\n )}\n {!isLoading && !code && !error && (\n <div className=\"text-slate-500 h-full flex items-center justify-center\">Generated component code will appear here.</div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["ScreenshotToComponent","pastedImage","setPastedImage","useState","code","setCode","isLoading","setIsLoading","error","setError","handlePaste","useCallback","event","items","i","blob","dataUrl","base64Image","blobToDataURL","blobToBase64","handleGenerate","e","result","generateComponentFromImage","err","errorMessage","jsxs","jsx","PhotoIcon","LoadingSpinner","marked"],"mappings":"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"}
|
assets/SecretsVault-DGcLXZTS.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as p,j as t}from"./react-_fH1j4AW.js";import{L as h}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const b=(o,i)=>{const[s,a]=p.useState(()=>{try{const r=window.localStorage.getItem(o);return r?JSON.parse(r):i}catch{return i}});return[s,r=>{const m=r instanceof Function?r(s):r;a(m),window.localStorage.setItem(o,JSON.stringify(m))}]},yt=()=>{const[o,i]=b("devcore_secrets",[{id:1,key:"STRIPE_API_KEY",value:"sk_test_..."}]),[s,a]=p.useState(""),[l,r]=p.useState(""),[m,c]=p.useState(null),d=e=>{e.preventDefault(),!(!s||!l)&&(i([...o,{id:Date.now(),key:s,value:l}]),a(""),r(""))},x=e=>{i(o.filter(n=>n.id!==e))},u=e=>{c(n=>n===e?null:e)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(h,{}),t.jsx("span",{className:"ml-3",children:"Secrets Vault (Simulation)"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"A simple vault for managing secrets, stored in your browser."})]}),t.jsx("div",{className:"space-y-3 mb-8",children:o.map(e=>t.jsxs("div",{className:"bg-slate-800/50 p-3 rounded-lg flex justify-between items-center font-mono text-sm",children:[t.jsx("span",{className:"font-bold text-slate-300",children:e.key}),t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsx("span",{children:m===e.id?e.value:"••••••••••••••••"}),t.jsx("button",{onClick:()=>u(e.id),className:"text-xs text-cyan-400",children:m===e.id?"Hide":"Show"}),t.jsx("button",{onClick:()=>x(e.id),className:"text-red-400 font-bold",children:"×"})]})]},e.id))}),t.jsxs("form",{onSubmit:d,className:"mt-auto pt-6 border-t border-slate-800",children:[t.jsx("h3",{className:"text-xl font-bold mb-2",children:"Add New Secret"}),t.jsxs("div",{className:"flex gap-4 items-center",children:[t.jsx("input",{type:"text",value:s,onChange:e=>a(e.target.value),placeholder:"SECRET_KEY_NAME",className:"w-1/3 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"}),t.jsx("input",{type:"password",value:l,onChange:e=>r(e.target.value),placeholder:"Value",className:"flex-grow px-3 py-2 rounded-md bg-slate-800 border border-slate-700"}),t.jsx("button",{type:"submit",className:"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md",children:"Add"})]})]})]})};export{yt as SecretsVault};
|
| 2 |
+
//# sourceMappingURL=SecretsVault-DGcLXZTS.js.map
|
assets/SecretsVault-DGcLXZTS.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"SecretsVault-DGcLXZTS.js","sources":["../../components/features/SecretsVault.tsx"],"sourcesContent":["\nimport React, { useState } from 'react';\nimport { LockClosedIcon } from '../icons/FeatureIcons';\n\ninterface Secret {\n id: number;\n key: string;\n value: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nexport const SecretsVault: React.FC = () => {\n const [secrets, setSecrets] = useLocalStorage('devcore_secrets', [{ id: 1, key: 'STRIPE_API_KEY', value: 'sk_test_...'}]);\n const [newKey, setNewKey] = useState('');\n const [newValue, setNewValue] = useState('');\n const [revealed, setRevealed] = useState<number | null>(null);\n\n const addSecret = (e: React.FormEvent) => {\n e.preventDefault();\n if (!newKey || !newValue) return;\n setSecrets([...secrets, { id: Date.now(), key: newKey, value: newValue }]);\n setNewKey('');\n setNewValue('');\n };\n \n const deleteSecret = (id: number) => {\n setSecrets(secrets.filter((s: Secret) => s.id !== id));\n };\n \n const toggleReveal = (id: number) => {\n setRevealed(prev => prev === id ? null : id);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <LockClosedIcon />\n <span className=\"ml-3\">Secrets Vault (Simulation)</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">A simple vault for managing secrets, stored in your browser.</p>\n </header>\n <div className=\"space-y-3 mb-8\">\n {secrets.map((secret: Secret) => (\n <div key={secret.id} className=\"bg-slate-800/50 p-3 rounded-lg flex justify-between items-center font-mono text-sm\">\n <span className=\"font-bold text-slate-300\">{secret.key}</span>\n <div className=\"flex items-center gap-4\">\n <span>{revealed === secret.id ? secret.value : '••••••••••••••••'}</span>\n <button onClick={() => toggleReveal(secret.id)} className=\"text-xs text-cyan-400\">\n {revealed === secret.id ? 'Hide' : 'Show'}\n </button>\n <button onClick={() => deleteSecret(secret.id)} className=\"text-red-400 font-bold\">×</button>\n </div>\n </div>\n ))}\n </div>\n <form onSubmit={addSecret} className=\"mt-auto pt-6 border-t border-slate-800\">\n <h3 className=\"text-xl font-bold mb-2\">Add New Secret</h3>\n <div className=\"flex gap-4 items-center\">\n <input type=\"text\" value={newKey} onChange={e => setNewKey(e.target.value)} placeholder=\"SECRET_KEY_NAME\" className=\"w-1/3 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n <input type=\"password\" value={newValue} onChange={e => setNewValue(e.target.value)} placeholder=\"Value\" className=\"flex-grow px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n <button type=\"submit\" className=\"px-6 py-2 bg-cyan-500 text-slate-900 font-bold rounded-md\">Add</button>\n </div>\n </form>\n </div>\n );\n};\n"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","SecretsVault","secrets","setSecrets","newKey","setNewKey","newValue","setNewValue","revealed","setRevealed","addSecret","deleteSecret","id","s","toggleReveal","prev","jsxs","jsx","LockClosedIcon","secret"],"mappings":"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"}
|
assets/SleepMode-CNTr1FuK.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as i,j as t}from"./react-_fH1j4AW.js";import{f as o}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const xt=()=>{const[r,e]=i.useState(!1);return r?t.jsxs("div",{className:"absolute inset-0 bg-slate-900/90 z-50 flex flex-col items-center justify-center text-center",onClick:()=>e(!1),children:[t.jsx("div",{className:"text-6xl mb-4 animate-pulse",children:"😴"}),t.jsx("h1",{className:"text-3xl font-bold text-slate-200 mb-2",children:"Session Paused"}),t.jsx("p",{className:"text-lg text-slate-400",children:"Click anywhere to wake up."})]}):t.jsxs("div",{className:"h-full flex flex-col items-center justify-center p-8 text-center text-slate-400",children:[t.jsx("div",{className:"text-6xl mb-4","aria-hidden":"true",children:t.jsx(o,{})}),t.jsx("h1",{className:"text-3xl font-bold text-slate-200 mb-2",children:"Sleep Mode"}),t.jsx("p",{className:"text-lg mb-4 max-w-md",children:"Freeze and restore your full session state."}),t.jsx("button",{onClick:()=>e(!0),className:"px-8 py-4 bg-cyan-500 text-slate-900 font-bold rounded-lg text-lg hover:bg-cyan-400",children:"Enter Sleep Mode"})]})};export{xt as SleepMode};
|
| 2 |
+
//# sourceMappingURL=SleepMode-CNTr1FuK.js.map
|
assets/SleepMode-CNTr1FuK.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"SleepMode-CNTr1FuK.js","sources":["../../components/features/SleepMode.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { CloudIcon } from '../icons/FeatureIcons.tsx';\n\nexport const SleepMode: React.FC = () => {\n const [isSleeping, setIsSleeping] = useState(false);\n\n if (isSleeping) {\n return (\n <div \n className=\"absolute inset-0 bg-slate-900/90 z-50 flex flex-col items-center justify-center text-center\"\n onClick={() => setIsSleeping(false)}\n >\n <div className=\"text-6xl mb-4 animate-pulse\">😴</div>\n <h1 className=\"text-3xl font-bold text-slate-200 mb-2\">\n Session Paused\n </h1>\n <p className=\"text-lg text-slate-400\">Click anywhere to wake up.</p>\n </div>\n );\n }\n\n return (\n <div className=\"h-full flex flex-col items-center justify-center p-8 text-center text-slate-400\">\n <div className=\"text-6xl mb-4\" aria-hidden=\"true\">\n <CloudIcon />\n </div>\n <h1 className=\"text-3xl font-bold text-slate-200 mb-2\">\n Sleep Mode\n </h1>\n <p className=\"text-lg mb-4 max-w-md\">\n Freeze and restore your full session state.\n </p>\n <button\n onClick={() => setIsSleeping(true)}\n className=\"px-8 py-4 bg-cyan-500 text-slate-900 font-bold rounded-lg text-lg hover:bg-cyan-400\"\n >\n Enter Sleep Mode\n </button>\n </div>\n );\n};"],"names":["SleepMode","isSleeping","setIsSleeping","useState","jsxs","jsx","CloudIcon"],"mappings":"4xEAGO,MAAMA,GAAsB,IAAM,CACrC,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAAS,EAAK,EAElD,OAAIF,EAEIG,EAAAA,KAAC,MAAA,CACG,UAAU,8FACV,QAAS,IAAMF,EAAc,EAAK,EAElC,SAAA,CAAAG,EAAAA,IAAC,MAAA,CAAI,UAAU,8BAA8B,SAAA,KAAE,EAC/CA,EAAAA,IAAC,KAAA,CAAG,UAAU,yCAAyC,SAAA,iBAEvD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,yBAAyB,SAAA,4BAAA,CAA0B,CAAA,CAAA,CAAA,EAMxED,EAAAA,KAAC,MAAA,CAAI,UAAU,kFACX,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,gBAAgB,cAAY,OACvC,SAAAA,EAAAA,IAACC,IAAU,CAAA,CACf,EACAD,EAAAA,IAAC,KAAA,CAAG,UAAU,yCAAyC,SAAA,aAEvD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,8CAErC,EACAA,EAAAA,IAAC,SAAA,CACG,QAAS,IAAMH,EAAc,EAAI,EACjC,UAAU,sFACb,SAAA,kBAAA,CAAA,CAED,EACJ,CAER"}
|
assets/SnippetVault-CTNJsXuF.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as m,j as e}from"./react-_fH1j4AW.js";import{L as x}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const u=(r,a)=>{const[t,i]=m.useState(()=>{try{const s=window.localStorage.getItem(r);return s?JSON.parse(s):a}catch{return a}});return[t,s=>{const n=s instanceof Function?s(t):s;i(n),window.localStorage.setItem(r,JSON.stringify(n))}]},we=()=>{const[r,a]=u("devcore_snippets",[{id:1,name:"React Hook Boilerplate",language:"javascript",code:`import { useState } from 'react';
|
| 2 |
+
|
| 3 |
+
const useCustomHook = () => {
|
| 4 |
+
const [value, setValue] = useState(null);
|
| 5 |
+
return { value, setValue };
|
| 6 |
+
};`}]),[t,i]=m.useState(r[0]||null);m.useEffect(()=>{if(!t&&r.length>0&&i(r[0]),t){const o=r.find(l=>l.id===t.id);i(o||null)}},[r,t]);const p=o=>{i(o)},s=o=>{if(!t)return;const l={...t,code:o.target.value};i(l),a(r.map(c=>c.id===l.id?l:c))},n=()=>{const o={id:Date.now(),name:"New Snippet",language:"plaintext",code:""};a([...r,o]),i(o)},d=o=>{a(r.filter(l=>l.id!==o)),(t==null?void 0:t.id)===o&&i(null)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(x,{}),e.jsx("span",{className:"ml-3",children:"Portable Snippet Vault"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Save and reuse your favorite code snippets securely in browser storage."})]}),e.jsxs("div",{className:"flex-grow flex gap-6 min-h-0",children:[e.jsxs("aside",{className:"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col",children:[e.jsx("h3",{className:"font-bold mb-2",children:"My Snippets"}),e.jsx("ul",{className:"space-y-2 flex-grow overflow-y-auto",children:r.map(o=>e.jsxs("li",{className:"group flex items-center justify-between",children:[e.jsx("button",{onClick:()=>p(o),className:`w-full text-left px-3 py-2 rounded-md ${(t==null?void 0:t.id)===o.id?"bg-cyan-500/20 text-cyan-300":"hover:bg-slate-700/50"}`,children:o.name}),e.jsx("button",{onClick:()=>d(o.id),className:"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100",children:"×"})]},o.id))}),e.jsx("div",{className:"mt-4 pt-4 border-t border-slate-700",children:e.jsx("button",{onClick:n,className:"w-full text-sm py-2 bg-cyan-500/80 text-white rounded-md",children:"Add New Snippet"})})]}),e.jsx("main",{className:"w-2/3 flex flex-col",children:t?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("h3",{className:"text-lg font-bold text-slate-200",children:t.name}),e.jsx("button",{onClick:()=>navigator.clipboard.writeText(t.code),className:"px-3 py-1 bg-slate-700 text-xs rounded-md",children:"Copy Code"})]}),e.jsx("textarea",{value:t.code,onChange:s,className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300 focus:ring-2 focus:ring-cyan-500 focus:outline-none"})]}):e.jsx("div",{className:"flex-grow flex items-center justify-center bg-slate-900 rounded-lg text-slate-500",children:"Select a snippet or create a new one."})})]})]})};export{we as SnippetVault};
|
| 7 |
+
//# sourceMappingURL=SnippetVault-CTNJsXuF.js.map
|
assets/SnippetVault-CTNJsXuF.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"SnippetVault-CTNJsXuF.js","sources":["../../components/features/SnippetVault.tsx"],"sourcesContent":["\nimport React, { useState, useEffect } from 'react';\nimport { LockClosedIcon } from '../icons/FeatureIcons.tsx';\n\ninterface Snippet {\n id: number;\n name: string;\n code: string;\n language: string;\n}\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nexport const SnippetVault: React.FC = () => {\n const [snippets, setSnippets] = useLocalStorage('devcore_snippets', [\n { id: 1, name: 'React Hook Boilerplate', language: 'javascript', code: `import { useState } from 'react';\\n\\nconst useCustomHook = () => {\\n const [value, setValue] = useState(null);\\n return { value, setValue };\\n};`}\n ]);\n const [activeSnippet, setActiveSnippet] = useState<Snippet | null>(snippets[0] || null);\n \n useEffect(() => {\n if(!activeSnippet && snippets.length > 0) {\n setActiveSnippet(snippets[0]);\n }\n if (activeSnippet) {\n const freshSnippet = snippets.find((s: Snippet) => s.id === activeSnippet.id);\n setActiveSnippet(freshSnippet || null);\n }\n }, [snippets, activeSnippet]);\n\n const handleSelectSnippet = (snippet: Snippet) => {\n setActiveSnippet(snippet);\n };\n\n const handleCodeChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!activeSnippet) return;\n const updatedSnippet = { ...activeSnippet, code: e.target.value };\n setActiveSnippet(updatedSnippet);\n setSnippets(snippets.map((s: Snippet) => s.id === updatedSnippet.id ? updatedSnippet : s));\n };\n\n const handleAddNew = () => {\n const newSnippet = { id: Date.now(), name: 'New Snippet', language: 'plaintext', code: '' };\n setSnippets([...snippets, newSnippet]);\n setActiveSnippet(newSnippet);\n };\n \n const handleDelete = (id: number) => {\n setSnippets(snippets.filter((s: Snippet) => s.id !== id));\n if(activeSnippet?.id === id) setActiveSnippet(null);\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <LockClosedIcon />\n <span className=\"ml-3\">Portable Snippet Vault</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Save and reuse your favorite code snippets securely in browser storage.</p>\n </header>\n <div className=\"flex-grow flex gap-6 min-h-0\">\n <aside className=\"w-1/3 bg-slate-800/50 p-4 rounded-lg flex flex-col\">\n <h3 className=\"font-bold mb-2\">My Snippets</h3>\n <ul className=\"space-y-2 flex-grow overflow-y-auto\">\n {snippets.map((snippet: Snippet) => (\n <li key={snippet.id} className=\"group flex items-center justify-between\">\n <button onClick={() => handleSelectSnippet(snippet)} className={`w-full text-left px-3 py-2 rounded-md ${activeSnippet?.id === snippet.id ? 'bg-cyan-500/20 text-cyan-300' : 'hover:bg-slate-700/50'}`}>\n {snippet.name}\n </button>\n <button onClick={() => handleDelete(snippet.id)} className=\"ml-2 p-1 text-slate-500 hover:text-red-400 opacity-0 group-hover:opacity-100\">×</button>\n </li>\n ))}\n </ul>\n <div className=\"mt-4 pt-4 border-t border-slate-700\">\n <button onClick={handleAddNew} className=\"w-full text-sm py-2 bg-cyan-500/80 text-white rounded-md\">Add New Snippet</button>\n </div>\n </aside>\n <main className=\"w-2/3 flex flex-col\">\n {activeSnippet ? (\n <>\n <div className=\"flex justify-between items-center mb-2\">\n <h3 className=\"text-lg font-bold text-slate-200\">{activeSnippet.name}</h3>\n <button onClick={() => navigator.clipboard.writeText(activeSnippet.code)} className=\"px-3 py-1 bg-slate-700 text-xs rounded-md\">Copy Code</button>\n </div>\n <textarea\n value={activeSnippet.code}\n onChange={handleCodeChange}\n className=\"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300 focus:ring-2 focus:ring-cyan-500 focus:outline-none\"\n />\n </>\n ) : (\n <div className=\"flex-grow flex items-center justify-center bg-slate-900 rounded-lg text-slate-500\">\n Select a snippet or create a new one.\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","SnippetVault","snippets","setSnippets","activeSnippet","setActiveSnippet","useEffect","freshSnippet","s","handleSelectSnippet","snippet","handleCodeChange","e","updatedSnippet","handleAddNew","newSnippet","handleDelete","id","jsxs","jsx","LockClosedIcon","Fragment"],"mappings":"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"}
|
assets/StaticSiteGeneratorUI-D38nZsoT.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as o,j as e}from"./react-_fH1j4AW.js";import{f as x}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const Ne=()=>{const[t,a]=o.useState({basePath:"/",buildDir:"dist",devPort:3e3,useMarkdown:!0,useSass:!1}),s=i=>{const{name:m,value:n,type:p,checked:d}=i.target;a(c=>({...c,[m]:p==="checkbox"?d:n}))},r=o.useMemo(()=>JSON.stringify(t,null,2),[t]),l=()=>{navigator.clipboard.writeText(r)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[e.jsx(x,{}),e.jsx("span",{className:"ml-3",children:"Static Site Generator UI"})]}),e.jsx("p",{className:"text-slate-400 mt-1",children:"Configure options for a mock static site build process."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg",children:[e.jsx("h3",{className:"text-xl font-bold",children:"Configuration"}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"basePath",className:"block text-sm font-medium text-slate-400",children:"Base Path"}),e.jsx("input",{type:"text",name:"basePath",value:t.basePath,onChange:s,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"buildDir",className:"block text-sm font-medium text-slate-400",children:"Build Directory"}),e.jsx("input",{type:"text",name:"buildDir",value:t.buildDir,onChange:s,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"devPort",className:"block text-sm font-medium text-slate-400",children:"Dev Server Port"}),e.jsx("input",{type:"number",name:"devPort",value:t.devPort,onChange:s,className:"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700"})]}),e.jsxs("div",{className:"space-y-2 mt-2",children:[e.jsxs("label",{className:"flex items-center",children:[e.jsx("input",{type:"checkbox",name:"useMarkdown",checked:t.useMarkdown,onChange:s,className:"h-4 w-4 rounded border-gray-300 text-cyan-600"}),e.jsx("span",{className:"ml-2 text-slate-300",children:"Enable Markdown Pages"})]}),e.jsxs("label",{className:"flex items-center",children:[e.jsx("input",{type:"checkbox",name:"useSass",checked:t.useSass,onChange:s,className:"h-4 w-4 rounded border-gray-300 text-cyan-600"}),e.jsx("span",{className:"ml-2 text-slate-300",children:"Enable SASS/SCSS Compilation"})]})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Generated config.json"}),e.jsxs("div",{className:"relative flex-grow",children:[e.jsx("pre",{className:"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto font-mono",children:r}),e.jsx("button",{onClick:l,className:"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs",children:"Copy"})]})]})]})]})};export{Ne as StaticSiteGeneratorUI};
|
| 2 |
+
//# sourceMappingURL=StaticSiteGeneratorUI-D38nZsoT.js.map
|
assets/StaticSiteGeneratorUI-D38nZsoT.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"StaticSiteGeneratorUI-D38nZsoT.js","sources":["../../components/features/StaticSiteGeneratorUI.tsx"],"sourcesContent":["import React, { useState, useMemo } from 'react';\nimport { CloudIcon } from '../icons/FeatureIcons';\n\ninterface SSGConfig {\n basePath: string;\n buildDir: string;\n devPort: number;\n useMarkdown: boolean;\n useSass: boolean;\n}\n\nexport const StaticSiteGeneratorUI: React.FC = () => {\n const [config, setConfig] = useState<SSGConfig>({\n basePath: '/',\n buildDir: 'dist',\n devPort: 3000,\n useMarkdown: true,\n useSass: false,\n });\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value, type, checked } = e.target;\n setConfig(prev => ({\n ...prev,\n [name]: type === 'checkbox' ? checked : value,\n }));\n };\n \n const generatedJson = useMemo(() => JSON.stringify(config, null, 2), [config]);\n \n const handleCopy = () => {\n navigator.clipboard.writeText(generatedJson);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CloudIcon />\n <span className=\"ml-3\">Static Site Generator UI</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Configure options for a mock static site build process.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg\">\n <h3 className=\"text-xl font-bold\">Configuration</h3>\n <div>\n <label htmlFor=\"basePath\" className=\"block text-sm font-medium text-slate-400\">Base Path</label>\n <input type=\"text\" name=\"basePath\" value={config.basePath} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div>\n <label htmlFor=\"buildDir\" className=\"block text-sm font-medium text-slate-400\">Build Directory</label>\n <input type=\"text\" name=\"buildDir\" value={config.buildDir} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div>\n <label htmlFor=\"devPort\" className=\"block text-sm font-medium text-slate-400\">Dev Server Port</label>\n <input type=\"number\" name=\"devPort\" value={config.devPort} onChange={handleChange} className=\"w-full mt-1 px-3 py-2 rounded-md bg-slate-800 border border-slate-700\"/>\n </div>\n <div className=\"space-y-2 mt-2\">\n <label className=\"flex items-center\">\n <input type=\"checkbox\" name=\"useMarkdown\" checked={config.useMarkdown} onChange={handleChange} className=\"h-4 w-4 rounded border-gray-300 text-cyan-600\"/>\n <span className=\"ml-2 text-slate-300\">Enable Markdown Pages</span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" name=\"useSass\" checked={config.useSass} onChange={handleChange} className=\"h-4 w-4 rounded border-gray-300 text-cyan-600\"/>\n <span className=\"ml-2 text-slate-300\">Enable SASS/SCSS Compilation</span>\n </label>\n </div>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">Generated config.json</label>\n <div className=\"relative flex-grow\">\n <pre className=\"w-full h-full bg-slate-900 p-4 rounded-md text-cyan-300 text-sm overflow-auto font-mono\">{generatedJson}</pre>\n <button onClick={handleCopy} className=\"absolute top-2 right-2 px-2 py-1 bg-slate-700 hover:bg-slate-600 rounded-md text-xs\">Copy</button>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["StaticSiteGeneratorUI","config","setConfig","useState","handleChange","e","name","value","type","checked","prev","generatedJson","useMemo","handleCopy","jsxs","jsx","CloudIcon"],"mappings":"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"}
|
assets/SvgPathEditor-CW8KbZo3.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as i,j as t}from"./react-_fH1j4AW.js";import{b as m}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const s="M10 80 Q 52.5 10, 95 80 T 180 80",ct=()=>{const[r,e]=i.useState(s);return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(m,{}),t.jsx("span",{className:"ml-3",children:"SVG Path Editor"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Visually create and manipulate SVG path data."})]}),t.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 h-full overflow-hidden",children:[t.jsxs("div",{className:"flex flex-col h-full",children:[t.jsx("label",{htmlFor:"path-input",className:"text-sm font-medium text-slate-400 mb-2",children:"Path Data (d attribute)"}),t.jsx("textarea",{id:"path-input",value:r,onChange:o=>e(o.target.value),className:"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300"})]}),t.jsxs("div",{className:"flex flex-col h-full",children:[t.jsx("label",{className:"text-sm font-medium text-slate-400 mb-2",children:"Live Preview"}),t.jsx("div",{className:"flex-grow p-4 bg-slate-800/50 border-2 border-dashed border-slate-700 rounded-md overflow-y-auto flex items-center justify-center",children:t.jsx("svg",{viewBox:"0 0 200 100",className:"w-full h-full",children:t.jsx("path",{d:r,stroke:"#06b6d4",fill:"transparent",strokeWidth:"2"})})})]})]})]})};export{ct as SvgPathEditor};
|
| 2 |
+
//# sourceMappingURL=SvgPathEditor-CW8KbZo3.js.map
|
assets/SvgPathEditor-CW8KbZo3.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"SvgPathEditor-CW8KbZo3.js","sources":["../../components/features/SvgPathEditor.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { CodeBracketSquareIcon } from '../icons/FeatureIcons.tsx';\n\nconst initialPath = \"M10 80 Q 52.5 10, 95 80 T 180 80\";\n\nexport const SvgPathEditor: React.FC = () => {\n const [pathData, setPathData] = useState(initialPath);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CodeBracketSquareIcon />\n <span className=\"ml-3\">SVG Path Editor</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Visually create and manipulate SVG path data.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 h-full overflow-hidden\">\n <div className=\"flex flex-col h-full\">\n <label htmlFor=\"path-input\" className=\"text-sm font-medium text-slate-400 mb-2\">Path Data (d attribute)</label>\n <textarea\n id=\"path-input\"\n value={pathData}\n onChange={(e) => setPathData(e.target.value)}\n className=\"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300\"\n />\n </div>\n <div className=\"flex flex-col h-full\">\n <label className=\"text-sm font-medium text-slate-400 mb-2\">Live Preview</label>\n <div className=\"flex-grow p-4 bg-slate-800/50 border-2 border-dashed border-slate-700 rounded-md overflow-y-auto flex items-center justify-center\">\n <svg viewBox=\"0 0 200 100\" className=\"w-full h-full\">\n <path d={pathData} stroke=\"#06b6d4\" fill=\"transparent\" strokeWidth=\"2\" />\n </svg>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["initialPath","SvgPathEditor","pathData","setPathData","useState","jsxs","jsx","CodeBracketSquareIcon","e"],"mappings":"4xEAGA,MAAMA,EAAc,mCAEPC,GAA0B,IAAM,CACzC,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAASJ,CAAW,EAEpD,OACIK,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAsB,EACvBD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,iBAAA,CAAe,CAAA,EAC1C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,+CAAA,CAA6C,CAAA,EACpF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,yEACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,MAAC,QAAA,CAAM,QAAQ,aAAa,UAAU,0CAA0C,SAAA,0BAAuB,EACvGA,EAAAA,IAAC,WAAA,CACG,GAAG,aACH,MAAOJ,EACP,SAAWM,GAAML,EAAYK,EAAE,OAAO,KAAK,EAC3C,UAAU,2GAAA,CAAA,CACd,EACJ,EACAH,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,eAAY,EACvEA,EAAAA,IAAC,OAAI,UAAU,oIACX,eAAC,MAAA,CAAI,QAAQ,cAAc,UAAU,gBACjC,eAAC,OAAA,CAAK,EAAGJ,EAAU,OAAO,UAAU,KAAK,cAAc,YAAY,GAAA,CAAI,CAAA,CAC3E,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/TabSessionsManager-CuClcMz9.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as p,j as t}from"./react-_fH1j4AW.js";import{F as c}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const d=(o,i)=>{const[r,l]=p.useState(()=>{try{const s=window.localStorage.getItem(o);return s?JSON.parse(s):i}catch{return i}});return[r,s=>{const m=s instanceof Function?s(r):s;l(m),window.localStorage.setItem(o,JSON.stringify(m))}]},Nt=()=>{const[o,i]=d("devcore_sessions",[]),[r,l]=p.useState(["App.tsx","geminiService.ts","manifest.ts"]),[a,s]=p.useState(""),m=()=>{a&&(i([...o,{name:a,tabs:r}]),s(""))},n=e=>{l(e)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(c,{}),t.jsx("span",{className:"ml-3",children:"Tab Sessions Manager"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Save and load your open tabs to quickly switch contexts."})]}),t.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[t.jsxs("div",{className:"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg",children:[t.jsx("h3",{className:"text-xl font-bold",children:"Saved Sessions"}),t.jsxs("div",{className:"space-y-2",children:[o.map(e=>t.jsxs("button",{onClick:()=>n(e.tabs),className:"w-full p-3 bg-slate-800 hover:bg-slate-700 rounded-md text-left",children:[t.jsx("p",{className:"font-bold",children:e.name}),t.jsx("p",{className:"text-xs text-slate-400 truncate",children:e.tabs.join(", ")})]},e.name)),o.length===0&&t.jsx("p",{className:"text-slate-500 text-sm",children:"No saved sessions."})]})]}),t.jsxs("div",{className:"flex flex-col",children:[t.jsx("h3",{className:"text-xl font-bold mb-2",children:"Current Session"}),t.jsxs("div",{className:"flex-grow bg-slate-900 p-4 rounded-lg flex flex-col",children:[t.jsx("div",{className:"flex-grow space-y-2",children:r.map(e=>t.jsx("div",{className:"bg-slate-800 p-2 rounded-md",children:e},e))}),t.jsxs("div",{className:"flex gap-2 mt-4 pt-4 border-t border-slate-700",children:[t.jsx("input",{type:"text",value:a,onChange:e=>s(e.target.value),placeholder:"New session name...",className:"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm"}),t.jsx("button",{onClick:m,className:"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md",children:"Save"})]})]})]})]})]})};export{Nt as TabSessionsManager};
|
| 2 |
+
//# sourceMappingURL=TabSessionsManager-CuClcMz9.js.map
|
assets/TabSessionsManager-CuClcMz9.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"TabSessionsManager-CuClcMz9.js","sources":["../../components/features/TabSessionsManager.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { FileCodeIcon } from '../icons/FeatureIcons.tsx';\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\ninterface Session {\n name: string;\n tabs: string[];\n}\n\nexport const TabSessionsManager: React.FC = () => {\n const [sessions, setSessions] = useLocalStorage('devcore_sessions', []);\n const [currentTabs, setCurrentTabs] = useState(['App.tsx', 'geminiService.ts', 'manifest.ts']);\n const [sessionName, setSessionName] = useState('');\n\n const saveSession = () => {\n if (!sessionName) return;\n setSessions([...sessions, { name: sessionName, tabs: currentTabs }]);\n setSessionName('');\n };\n\n const loadSession = (tabs: string[]) => {\n setCurrentTabs(tabs);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <FileCodeIcon />\n <span className=\"ml-3\">Tab Sessions Manager</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Save and load your open tabs to quickly switch contexts.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg\">\n <h3 className=\"text-xl font-bold\">Saved Sessions</h3>\n <div className=\"space-y-2\">\n {sessions.map((session: Session) => (\n <button\n key={session.name}\n onClick={() => loadSession(session.tabs)}\n className=\"w-full p-3 bg-slate-800 hover:bg-slate-700 rounded-md text-left\"\n >\n <p className=\"font-bold\">{session.name}</p>\n <p className=\"text-xs text-slate-400 truncate\">{session.tabs.join(', ')}</p>\n </button>\n ))}\n {sessions.length === 0 && <p className=\"text-slate-500 text-sm\">No saved sessions.</p>}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <h3 className=\"text-xl font-bold mb-2\">Current Session</h3>\n <div className=\"flex-grow bg-slate-900 p-4 rounded-lg flex flex-col\">\n <div className=\"flex-grow space-y-2\">\n {currentTabs.map(tab => (\n <div key={tab} className=\"bg-slate-800 p-2 rounded-md\">{tab}</div>\n ))}\n </div>\n <div className=\"flex gap-2 mt-4 pt-4 border-t border-slate-700\">\n <input type=\"text\" value={sessionName} onChange={e => setSessionName(e.target.value)} placeholder=\"New session name...\" className=\"flex-grow px-3 py-1.5 rounded-md bg-slate-800 border border-slate-700 text-sm\"/>\n <button onClick={saveSession} className=\"px-4 py-1.5 bg-cyan-500 text-slate-900 font-bold rounded-md\">Save</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","TabSessionsManager","sessions","setSessions","currentTabs","setCurrentTabs","sessionName","setSessionName","saveSession","loadSession","tabs","jsxs","jsx","FileCodeIcon","session","tab"],"mappings":"4xEAGA,MAAMA,EAAkB,CAACC,EAAaC,IAAsB,CACxD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,IAAM,CACjD,GAAI,CACA,MAAMC,EAAO,OAAO,aAAa,QAAQL,CAAG,EAC5C,OAAOK,EAAO,KAAK,MAAMA,CAAI,EAAIJ,CACrC,MAAgB,CAAE,OAAOA,CAAc,CAC3C,CAAC,EAMD,MAAO,CAACC,EALUI,GAAe,CAC7B,MAAMC,EAAeD,aAAiB,SAAWA,EAAMJ,CAAW,EAAII,EACtEH,EAAeI,CAAY,EAC3B,OAAO,aAAa,QAAQP,EAAK,KAAK,UAAUO,CAAY,CAAC,CACjE,CAC6B,CACjC,EAOaC,GAA+B,IAAM,CAC9C,KAAM,CAACC,EAAUC,CAAW,EAAIX,EAAgB,mBAAoB,CAAA,CAAE,EAChE,CAACY,EAAaC,CAAc,EAAIR,EAAAA,SAAS,CAAC,UAAW,mBAAoB,aAAa,CAAC,EACvF,CAACS,EAAaC,CAAc,EAAIV,EAAAA,SAAS,EAAE,EAE3CW,EAAc,IAAM,CACjBF,IACLH,EAAY,CAAC,GAAGD,EAAU,CAAE,KAAMI,EAAa,KAAMF,CAAA,CAAa,CAAC,EACnEG,EAAe,EAAE,EACrB,EAEME,EAAeC,GAAmB,CACpCL,EAAeK,CAAI,CACvB,EAEA,OACIC,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,sBAAA,CAAoB,CAAA,EAC/C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,0DAAA,CAAwD,CAAA,EAC/F,EACCD,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACZ,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,qDACX,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,oBAAoB,SAAA,iBAAc,EAChDD,EAAAA,KAAC,MAAA,CAAI,UAAU,YACV,SAAA,CAAAT,EAAS,IAAKY,GACXH,EAAAA,KAAC,SAAA,CAEG,QAAS,IAAMF,EAAYK,EAAQ,IAAI,EACvC,UAAU,kEAEV,SAAA,CAAAF,EAAAA,IAAC,IAAA,CAAE,UAAU,YAAa,SAAAE,EAAQ,KAAK,EACvCF,MAAC,KAAE,UAAU,kCAAmC,WAAQ,KAAK,KAAK,IAAI,CAAA,CAAE,CAAA,CAAA,EALnEE,EAAQ,IAAA,CAOpB,EACCZ,EAAS,SAAW,SAAM,IAAA,CAAE,UAAU,yBAAyB,SAAA,oBAAA,CAAkB,CAAA,CAAA,CACvF,CAAA,EACJ,EACAS,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACV,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,yBAAyB,SAAA,kBAAe,EACtDD,EAAAA,KAAC,MAAA,CAAI,UAAU,sDACZ,SAAA,CAAAC,MAAC,MAAA,CAAI,UAAU,sBACV,SAAAR,EAAY,IAAIW,GACbH,EAAAA,IAAC,MAAA,CAAc,UAAU,8BAA+B,SAAAG,GAA9CA,CAAkD,CAC/D,EACL,EACAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,iDACV,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,KAAK,OAAO,MAAON,EAAa,SAAU,GAAKC,EAAe,EAAE,OAAO,KAAK,EAAG,YAAY,sBAAsB,UAAU,gFAA+E,QACjN,SAAA,CAAO,QAASC,EAAa,UAAU,8DAA8D,SAAA,MAAA,CAAI,CAAA,CAAA,CAC9G,CAAA,CAAA,CACH,CAAA,CAAA,CACL,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/Terminal-BS7dp6j1.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as f,j as m}from"./react-_fH1j4AW.js";import{x}from"./@xterm-i03dpVGE.js";import{A as B}from"./index-Nqm_ElTk.js";const h=["home","features-list"],b=(o,r,c)=>{if(r.writeln(""),o.trim()){const[s,...l]=o.trim().split(/\s+/),w=[...B,...h];switch(s){case"help":r.writeln("Available commands:"),r.writeln(" \x1B[32mhelp\x1B[0m - Show this help message."),r.writeln(" \x1B[32mls\x1B[0m - List mock files."),r.writeln(" \x1B[32mecho\x1B[0m [text] - Print text to the terminal."),r.writeln(" \x1B[32mdate\x1B[0m - Display the current date and time."),r.writeln(" \x1B[32mclear\x1B[0m - Clear the terminal screen."),r.writeln(" \x1B[32mrun\x1B[0m [view] - Navigate to a feature or view.");break;case"ls":r.writeln("\x1B[34mcomponents/\x1B[0m \x1B[34mservices/\x1B[0m types.ts README.md");break;case"echo":r.writeln(l.join(" "));break;case"date":r.writeln(new Date().toLocaleString());break;case"clear":r.clear();break;case"run":const n=l[0];n?w.includes(n)?c?(r.writeln(`\x1B[36mNavigating to ${n}...\x1B[0m`),c(n)):r.writeln("\x1B[33mNavigation is not enabled in this terminal context.\x1B[0m"):r.writeln(`\x1B[31mError: Feature or view '${n}' not found.\x1B[0m`):r.writeln("Usage: run <feature_id_or_view>");break;case"":break;default:r.writeln(`command not found: ${s}. Type 'help' for a list of commands.`)}}},k=f.forwardRef(({initialMessage:o,onNavigate:r,isReadOnly:c=!1,commandHandler:s,prompt:l=`\r
|
| 2 |
+
\x1B[36m$\x1B[0m `},w)=>{const n=f.useRef(null),i=f.useRef(null),a=f.useRef("");return f.useEffect(()=>{if(n.current&&!i.current){const e=new x.Terminal({cursorBlink:!0,convertEol:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',fontSize:13,theme:{background:"#0f172a",foreground:"#94a3b8",cursor:"#67e8f9",selectionBackground:"#334155",selectionForeground:"#e2e8f0",brightBlack:"#64748b",brightCyan:"#67e8f9",brightGreen:"#4ade80",brightYellow:"#facc15",brightRed:"#f87171",brightBlue:"#60a5fa"},rows:20});i.current=e,e.open(n.current),o&&e.writeln(o),c||e.write(l),c||e.onData(t=>{const u=t.charCodeAt(0);if(u===13)s?s(a.current,e):(b(a.current,e,r),e.write(l)),a.current="";else if(u===127)a.current.length>0&&(e.write("\b \b"),a.current=a.current.slice(0,-1));else{if(u<32)return;e.write(t),a.current+=t}})}},[c,o,l,s,r]),f.useImperativeHandle(w,()=>({write(e){var t;(t=i.current)==null||t.write(e)},writeln(e){var t;(t=i.current)==null||t.writeln(e)},clear(){var e;(e=i.current)==null||e.clear()},reset(){var e,t,u;(e=i.current)==null||e.clear(),o&&((t=i.current)==null||t.writeln(o)),c||(u=i.current)==null||u.write(l)},writePrompt(){var e;(e=i.current)==null||e.write(l)}})),m.jsx("div",{ref:n,className:"w-full h-full p-2 bg-slate-900 rounded-lg"})});export{k as T};
|
| 3 |
+
//# sourceMappingURL=Terminal-BS7dp6j1.js.map
|
assets/Terminal-BS7dp6j1.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"Terminal-BS7dp6j1.js","sources":["../../../constants.ts","../../components/Terminal.tsx"],"sourcesContent":["export type SlotCategory = 'Core' | 'AI Tools' | 'Frontend' | 'Git' | 'Visualization' | 'Testing';\nexport const SLOTS: SlotCategory[] = ['Core', 'AI Tools', 'Frontend', 'Git', 'Visualization', 'Testing'];\n\nexport const CHROME_VIEW_IDS = ['home', 'features-list'] as const;\n","import React, { useEffect, useRef, useImperativeHandle, forwardRef } from 'react';\nimport { Terminal } from '@xterm/xterm';\nimport '@xterm/xterm/css/xterm.css';\nimport type { ViewType } from '../../types.ts';\nimport { ALL_FEATURE_IDS } from './features/manifest.ts';\nimport { CHROME_VIEW_IDS } from '../../constants.ts';\n\n// Extracted default shell handler\nconst defaultShellHandler = (command: string, term: Terminal, onNavigate?: (view: ViewType) => void) => {\n term.writeln('');\n if (command.trim()) {\n const [cmd, ...args] = command.trim().split(/\\s+/);\n const availableViews = [...ALL_FEATURE_IDS, ...CHROME_VIEW_IDS];\n\n switch (cmd) {\n case 'help':\n term.writeln('Available commands:');\n term.writeln(' \\x1b[32mhelp\\x1b[0m - Show this help message.');\n term.writeln(' \\x1b[32mls\\x1b[0m - List mock files.');\n term.writeln(' \\x1b[32mecho\\x1b[0m [text] - Print text to the terminal.');\n term.writeln(' \\x1b[32mdate\\x1b[0m - Display the current date and time.');\n term.writeln(' \\x1b[32mclear\\x1b[0m - Clear the terminal screen.');\n term.writeln(' \\x1b[32mrun\\x1b[0m [view] - Navigate to a feature or view.');\n break;\n case 'ls':\n term.writeln('\\x1b[34mcomponents/\\x1b[0m \\x1b[34mservices/\\x1b[0m types.ts README.md');\n break;\n case 'echo':\n term.writeln(args.join(' '));\n break;\n case 'date':\n term.writeln(new Date().toLocaleString());\n break;\n case 'clear':\n term.clear();\n break;\n case 'run':\n const featureId = args[0];\n if (!featureId) {\n term.writeln('Usage: run <feature_id_or_view>');\n } else if (availableViews.includes(featureId)) {\n if (onNavigate) {\n term.writeln(`\\x1b[36mNavigating to ${featureId}...\\x1b[0m`);\n onNavigate(featureId as ViewType);\n } else {\n term.writeln('\\x1b[33mNavigation is not enabled in this terminal context.\\x1b[0m');\n }\n } else {\n term.writeln(`\\x1b[31mError: Feature or view '${featureId}' not found.\\x1b[0m`);\n }\n break;\n case '':\n break;\n default:\n term.writeln(`command not found: ${cmd}. Type 'help' for a list of commands.`);\n }\n }\n};\n\ninterface TerminalComponentProps {\n initialMessage?: string;\n onNavigate?: (view: ViewType) => void;\n isReadOnly?: boolean;\n commandHandler?: (command: string, term: Terminal) => void;\n prompt?: string;\n}\n\nexport interface TerminalHandle {\n write: (data: string) => void;\n writeln: (data: string) => void;\n clear: () => void;\n reset: () => void;\n writePrompt: () => void;\n}\n\nconst TerminalComponent = forwardRef<TerminalHandle, TerminalComponentProps>(({\n initialMessage,\n onNavigate,\n isReadOnly = false,\n commandHandler,\n prompt = '\\r\\n\\x1b[36m$\\x1b[0m '\n}, ref) => {\n const terminalRef = useRef<HTMLDivElement>(null);\n const term = useRef<Terminal | null>(null);\n const commandLine = useRef<string>('');\n \n useEffect(() => {\n if (terminalRef.current && !term.current) {\n const xterm = new Terminal({\n cursorBlink: true,\n convertEol: true,\n fontFamily: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace`,\n fontSize: 13,\n theme: {\n background: '#0f172a',\n foreground: '#94a3b8',\n cursor: '#67e8f9',\n selectionBackground: '#334155',\n selectionForeground: '#e2e8f0',\n brightBlack: '#64748b',\n brightCyan: '#67e8f9',\n brightGreen: '#4ade80',\n brightYellow: '#facc15',\n brightRed: '#f87171',\n brightBlue: '#60a5fa',\n },\n rows: 20,\n });\n term.current = xterm;\n xterm.open(terminalRef.current);\n if(initialMessage) {\n xterm.writeln(initialMessage);\n }\n if (!isReadOnly) {\n xterm.write(prompt);\n }\n\n if (!isReadOnly) {\n xterm.onData(data => {\n const code = data.charCodeAt(0);\n if (code === 13) { // Enter\n if (commandHandler) {\n commandHandler(commandLine.current, xterm);\n } else {\n defaultShellHandler(commandLine.current, xterm, onNavigate);\n xterm.write(prompt);\n }\n commandLine.current = '';\n } else if (code === 127) { // Backspace\n if (commandLine.current.length > 0) {\n xterm.write('\\b \\b');\n commandLine.current = commandLine.current.slice(0, -1);\n }\n } else if (code < 32) {\n return;\n } else {\n xterm.write(data);\n commandLine.current += data;\n }\n });\n }\n }\n }, [isReadOnly, initialMessage, prompt, commandHandler, onNavigate]);\n\n useImperativeHandle(ref, () => ({\n write(data: string) {\n term.current?.write(data);\n },\n writeln(data: string) {\n term.current?.writeln(data);\n },\n clear() {\n term.current?.clear();\n },\n reset() {\n term.current?.clear();\n if(initialMessage) term.current?.writeln(initialMessage);\n if(!isReadOnly) term.current?.write(prompt);\n },\n writePrompt() {\n term.current?.write(prompt);\n }\n }));\n\n return <div ref={terminalRef} className=\"w-full h-full p-2 bg-slate-900 rounded-lg\" />;\n});\n\nexport default TerminalComponent;\n"],"names":["CHROME_VIEW_IDS","defaultShellHandler","command","term","onNavigate","cmd","args","availableViews","ALL_FEATURE_IDS","featureId","TerminalComponent","forwardRef","initialMessage","isReadOnly","commandHandler","prompt","ref","terminalRef","useRef","commandLine","useEffect","xterm","Terminal","data","code","useImperativeHandle","_a","_b","_c","jsx"],"mappings":"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"}
|
assets/TerminalFeature-CrrC40sg.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{j as o}from"./react-_fH1j4AW.js";import{T as i}from"./Terminal-BS7dp6j1.js";import"./@braintree-9Zuj5s7N.js";import"./@xterm-i03dpVGE.js";import"./index-Nqm_ElTk.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const xo=({onNavigate:r})=>o.jsx("div",{className:"h-full flex flex-col",children:o.jsx("div",{className:"flex-grow bg-slate-900",children:o.jsx(i,{initialMessage:"Welcome to DevCore Terminal. Type 'help' for a list of commands.",onNavigate:r})})});export{xo as TerminalFeature};
|
| 2 |
+
//# sourceMappingURL=TerminalFeature-CrrC40sg.js.map
|
assets/TerminalFeature-CrrC40sg.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"TerminalFeature-CrrC40sg.js","sources":["../../components/features/TerminalFeature.tsx"],"sourcesContent":["import React from 'react';\nimport { TerminalIcon } from '../icons/FeatureIcons.tsx';\nimport TerminalComponent from '../Terminal.tsx';\nimport type { ViewType } from '../../types.ts';\n\ninterface TerminalFeatureProps {\n onNavigate?: (view: ViewType) => void;\n}\n\nexport const TerminalFeature: React.FC<TerminalFeatureProps> = ({ onNavigate }) => {\n return (\n <div className=\"h-full flex flex-col\">\n {/* The header is removed for a more immersive terminal experience */}\n <div className=\"flex-grow bg-slate-900\">\n <TerminalComponent \n initialMessage=\"Welcome to DevCore Terminal. Type 'help' for a list of commands.\"\n onNavigate={onNavigate} \n />\n </div>\n </div>\n );\n};"],"names":["TerminalFeature","onNavigate","jsx","TerminalComponent"],"mappings":"i1EASO,MAAMA,GAAkD,CAAC,CAAE,WAAAC,WAEzD,MAAA,CAAI,UAAU,uBAEX,SAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACX,SAAAA,EAAAA,IAACC,EAAA,CACG,eAAe,mEACf,WAAAF,CAAA,CAAA,EAER,CAAA,CACJ"}
|
assets/ThemeDesigner-BzwRDn1V.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as l,j as r}from"./react-_fH1j4AW.js";import{c as p}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const s=({label:t,value:m,onChange:o})=>r.jsxs("div",{children:[r.jsxs("label",{className:"flex items-center justify-between text-sm font-medium text-slate-400",children:[t,r.jsx("span",{className:"font-mono",children:m})]}),r.jsx("input",{type:"color",value:m,onChange:e=>o(e.target.value),className:"w-full mt-1 h-8 rounded-md bg-transparent border border-slate-700 cursor-pointer"})]}),gr=()=>{const[t,m]=l.useState({primary:"#06b6d4",background:"#0f172a",surface:"#1e293b",textPrimary:"#f1f5f9",textSecondary:"#94a3b8"}),o=(e,i)=>{m(a=>({...a,[e]:i}))};return r.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[r.jsxs("header",{className:"mb-6",children:[r.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[r.jsx(p,{}),r.jsx("span",{className:"ml-3",children:"Theme Designer"})]}),r.jsx("p",{className:"text-slate-400 mt-1",children:"Design and preview a custom color scheme for the UI."})]}),r.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-3 gap-6 min-h-0",children:[r.jsxs("div",{className:"lg:col-span-1 flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg",children:[r.jsx("h3",{className:"text-xl font-bold",children:"Colors"}),r.jsx(s,{label:"Primary",value:t.primary,onChange:e=>o("primary",e)}),r.jsx(s,{label:"Background",value:t.background,onChange:e=>o("background",e)}),r.jsx(s,{label:"Surface",value:t.surface,onChange:e=>o("surface",e)}),r.jsx(s,{label:"Text Primary",value:t.textPrimary,onChange:e=>o("textPrimary",e)}),r.jsx(s,{label:"Text Secondary",value:t.textSecondary,onChange:e=>o("textSecondary",e)})]}),r.jsxs("div",{className:"lg:col-span-2 rounded-lg p-8 transition-colors",style:{backgroundColor:t.background,color:t.textPrimary},children:[r.jsx("h3",{className:"text-2xl font-bold mb-4",style:{color:t.textPrimary},children:"Live Preview"}),r.jsxs("div",{className:"p-6 rounded-lg transition-colors",style:{backgroundColor:t.surface},children:[r.jsx("h4",{className:"text-lg font-bold",children:"Sample Card"}),r.jsx("p",{className:"text-sm mt-1",style:{color:t.textSecondary},children:"This is a sample card to demonstrate the theme colors."}),r.jsx("button",{className:"px-4 py-2 mt-4 rounded-md font-bold transition-colors",style:{backgroundColor:t.primary,color:t.background},children:"Primary Button"})]})]})]})]})};export{gr as ThemeDesigner};
|
| 2 |
+
//# sourceMappingURL=ThemeDesigner-BzwRDn1V.js.map
|
assets/ThemeDesigner-BzwRDn1V.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ThemeDesigner-BzwRDn1V.js","sources":["../../components/features/ThemeDesigner.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SparklesIcon } from '../icons/FeatureIcons.tsx';\n\ninterface Theme {\n primary: string;\n background: string;\n surface: string;\n textPrimary: string;\n textSecondary: string;\n}\n\nconst ColorInput: React.FC<{ label: string, value: string, onChange: (color: string) => void }> = ({ label, value, onChange }) => (\n <div>\n <label className=\"flex items-center justify-between text-sm font-medium text-slate-400\">\n {label}\n <span className=\"font-mono\">{value}</span>\n </label>\n <input\n type=\"color\"\n value={value}\n onChange={e => onChange(e.target.value)}\n className=\"w-full mt-1 h-8 rounded-md bg-transparent border border-slate-700 cursor-pointer\"\n />\n </div>\n);\n\nexport const ThemeDesigner: React.FC = () => {\n const [theme, setTheme] = useState<Theme>({\n primary: '#06b6d4',\n background: '#0f172a',\n surface: '#1e293b',\n textPrimary: '#f1f5f9',\n textSecondary: '#94a3b8',\n });\n\n const handleThemeChange = (key: keyof Theme, value: string) => {\n setTheme(prev => ({ ...prev, [key]: value }));\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <SparklesIcon />\n <span className=\"ml-3\">Theme Designer</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Design and preview a custom color scheme for the UI.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-3 gap-6 min-h-0\">\n <div className=\"lg:col-span-1 flex flex-col gap-4 bg-slate-800/50 p-6 rounded-lg\">\n <h3 className=\"text-xl font-bold\">Colors</h3>\n <ColorInput label=\"Primary\" value={theme.primary} onChange={v => handleThemeChange('primary', v)} />\n <ColorInput label=\"Background\" value={theme.background} onChange={v => handleThemeChange('background', v)} />\n <ColorInput label=\"Surface\" value={theme.surface} onChange={v => handleThemeChange('surface', v)} />\n <ColorInput label=\"Text Primary\" value={theme.textPrimary} onChange={v => handleThemeChange('textPrimary', v)} />\n <ColorInput label=\"Text Secondary\" value={theme.textSecondary} onChange={v => handleThemeChange('textSecondary', v)} />\n </div>\n <div className=\"lg:col-span-2 rounded-lg p-8 transition-colors\" style={{ backgroundColor: theme.background, color: theme.textPrimary }}>\n <h3 className=\"text-2xl font-bold mb-4\" style={{ color: theme.textPrimary }}>Live Preview</h3>\n <div className=\"p-6 rounded-lg transition-colors\" style={{ backgroundColor: theme.surface }}>\n <h4 className=\"text-lg font-bold\">Sample Card</h4>\n <p className=\"text-sm mt-1\" style={{color: theme.textSecondary}}>This is a sample card to demonstrate the theme colors.</p>\n <button className=\"px-4 py-2 mt-4 rounded-md font-bold transition-colors\" style={{ backgroundColor: theme.primary, color: theme.background }}>\n Primary Button\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["ColorInput","label","value","onChange","jsxs","jsx","ThemeDesigner","theme","setTheme","useState","handleThemeChange","key","prev","SparklesIcon","v"],"mappings":"4xEAWA,MAAMA,EAA4F,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,SAAAC,CAAA,WAC9G,MAAA,CACG,SAAA,CAAAC,EAAAA,KAAC,QAAA,CAAM,UAAU,uEACZ,SAAA,CAAAH,EACDI,EAAAA,IAAC,OAAA,CAAK,UAAU,YAAa,SAAAH,CAAA,CAAM,CAAA,EACvC,EACAG,EAAAA,IAAC,QAAA,CACG,KAAK,QACL,MAAAH,EACA,SAAU,GAAKC,EAAS,EAAE,OAAO,KAAK,EACtC,UAAU,kFAAA,CAAA,CACd,EACJ,EAGSG,GAA0B,IAAM,CACzC,KAAM,CAACC,EAAOC,CAAQ,EAAIC,WAAgB,CACtC,QAAS,UACT,WAAY,UACZ,QAAS,UACT,YAAa,UACb,cAAe,SAAA,CAClB,EAEKC,EAAoB,CAACC,EAAkBT,IAAkB,CAC3DM,EAASI,IAAS,CAAE,GAAGA,EAAM,CAACD,CAAG,EAAGT,GAAQ,CAChD,EAEA,OACIE,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACQ,EAAA,EAAa,EACdR,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,gBAAA,CAAc,CAAA,EACzC,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,sDAAA,CAAoD,CAAA,EAC3F,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,mEACX,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,oBAAoB,SAAA,SAAM,EACxCA,EAAAA,IAACL,EAAA,CAAW,MAAM,UAAU,MAAOO,EAAM,QAAS,SAAUO,GAAKJ,EAAkB,UAAWI,CAAC,CAAA,CAAG,EAClGT,EAAAA,IAACL,EAAA,CAAW,MAAM,aAAa,MAAOO,EAAM,WAAY,SAAUO,GAAKJ,EAAkB,aAAcI,CAAC,CAAA,CAAG,EAC3GT,EAAAA,IAACL,EAAA,CAAW,MAAM,UAAU,MAAOO,EAAM,QAAS,SAAUO,GAAKJ,EAAkB,UAAWI,CAAC,CAAA,CAAG,EAClGT,EAAAA,IAACL,EAAA,CAAW,MAAM,eAAe,MAAOO,EAAM,YAAa,SAAUO,GAAKJ,EAAkB,cAAeI,CAAC,CAAA,CAAG,EAC/GT,EAAAA,IAACL,EAAA,CAAW,MAAM,iBAAiB,MAAOO,EAAM,cAAe,SAAUO,GAAKJ,EAAkB,gBAAiBI,CAAC,CAAA,CAAG,CAAA,EACzH,EACAV,EAAAA,KAAC,MAAA,CAAI,UAAU,iDAAiD,MAAO,CAAE,gBAAiBG,EAAM,WAAY,MAAOA,EAAM,WAAA,EACpH,SAAA,CAAAF,EAAAA,IAAC,KAAA,CAAG,UAAU,0BAA0B,MAAO,CAAE,MAAOE,EAAM,WAAA,EAAe,SAAA,cAAA,CAAY,EACzFH,EAAAA,KAAC,OAAI,UAAU,mCAAmC,MAAO,CAAE,gBAAiBG,EAAM,OAAA,EAC/E,SAAA,CAAAF,EAAAA,IAAC,KAAA,CAAG,UAAU,oBAAoB,SAAA,cAAW,EAC7CA,EAAAA,IAAC,IAAA,CAAE,UAAU,eAAe,MAAO,CAAC,MAAOE,EAAM,aAAA,EAAgB,SAAA,wDAAA,CAAsD,EACvHF,EAAAA,IAAC,SAAA,CAAO,UAAU,wDAAwD,MAAO,CAAE,gBAAiBE,EAAM,QAAS,MAAOA,EAAM,UAAA,EAAc,SAAA,gBAAA,CAE9I,CAAA,CAAA,CACH,CAAA,CAAA,CACL,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/VimModeToggle-lJVgk91h.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{j as t,r as p}from"./react-_fH1j4AW.js";import{T as a}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const l=(e,o)=>{const[i,s]=p.useState(()=>{try{const r=window.localStorage.getItem(e);return r?JSON.parse(r):o}catch{return o}});return[i,r=>{const m=r instanceof Function?r(i):r;s(m),window.localStorage.setItem(e,JSON.stringify(m))}]},bt=()=>{const[e,o]=l("devcore_vimMode",!1);return t.jsxs("div",{className:"h-full flex flex-col items-center justify-center p-4 sm:p-6 lg:p-8 text-center",children:[t.jsxs("header",{className:"mb-8",children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(a,{}),t.jsx("span",{className:"ml-3",children:"VIM Mode Toggle"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Enable or disable VIM keybindings in the editor."})]}),t.jsxs("div",{className:"flex items-center justify-center gap-4",children:[t.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[t.jsx("input",{type:"checkbox",checked:e,onChange:()=>o(!e),className:"sr-only peer"}),t.jsx("div",{className:"w-14 h-7 bg-slate-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[4px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-6 after:w-6 after:transition-all peer-checked:bg-cyan-500"})]}),t.jsx("span",{className:`text-xl font-bold ${e?"text-cyan-400":"text-slate-500"}`,children:e?"VIM Mode Enabled":"VIM Mode Disabled"})]})]})};export{bt as VimModeToggle};
|
| 2 |
+
//# sourceMappingURL=VimModeToggle-lJVgk91h.js.map
|
assets/VimModeToggle-lJVgk91h.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"VimModeToggle-lJVgk91h.js","sources":["../../components/features/VimModeToggle.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { TerminalIcon } from '../icons/FeatureIcons.tsx';\n\nconst useLocalStorage = (key: string, initialValue: any) => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) { return initialValue; }\n });\n const setValue = (value: any) => {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n };\n return [storedValue, setValue];\n};\n\nexport const VimModeToggle: React.FC = () => {\n const [vimEnabled, setVimEnabled] = useLocalStorage('devcore_vimMode', false);\n\n return (\n <div className=\"h-full flex flex-col items-center justify-center p-4 sm:p-6 lg:p-8 text-center\">\n <header className=\"mb-8\">\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <TerminalIcon />\n <span className=\"ml-3\">VIM Mode Toggle</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Enable or disable VIM keybindings in the editor.</p>\n </header>\n <div className=\"flex items-center justify-center gap-4\">\n <label className=\"relative inline-flex items-center cursor-pointer\">\n <input type=\"checkbox\" checked={vimEnabled} onChange={() => setVimEnabled(!vimEnabled)} className=\"sr-only peer\" />\n <div className=\"w-14 h-7 bg-slate-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[4px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-6 after:w-6 after:transition-all peer-checked:bg-cyan-500\"></div>\n </label>\n <span className={`text-xl font-bold ${vimEnabled ? 'text-cyan-400' : 'text-slate-500'}`}>\n {vimEnabled ? 'VIM Mode Enabled' : 'VIM Mode Disabled'}\n </span>\n </div>\n </div>\n );\n};"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","value","valueToStore","VimModeToggle","vimEnabled","setVimEnabled","jsxs","jsx","TerminalIcon"],"mappings":"4xEAGA,MAAMA,EAAkB,CAACC,EAAaC,IAAsB,CACxD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,IAAM,CACjD,GAAI,CACA,MAAMC,EAAO,OAAO,aAAa,QAAQL,CAAG,EAC5C,OAAOK,EAAO,KAAK,MAAMA,CAAI,EAAIJ,CACrC,MAAgB,CAAE,OAAOA,CAAc,CAC3C,CAAC,EAMD,MAAO,CAACC,EALUI,GAAe,CAC7B,MAAMC,EAAeD,aAAiB,SAAWA,EAAMJ,CAAW,EAAII,EACtEH,EAAeI,CAAY,EAC3B,OAAO,aAAa,QAAQP,EAAK,KAAK,UAAUO,CAAY,CAAC,CACjE,CAC6B,CACjC,EAEaC,GAA0B,IAAM,CACzC,KAAM,CAACC,EAAYC,CAAa,EAAIX,EAAgB,kBAAmB,EAAK,EAE5E,OACIY,EAAAA,KAAC,MAAA,CAAI,UAAU,iFACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,iBAAA,CAAe,CAAA,EAC1C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,kDAAA,CAAgD,CAAA,EACvF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACV,SAAA,CAAAA,EAAAA,KAAC,QAAA,CAAM,UAAU,mDACd,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,KAAK,WAAW,QAASH,EAAY,SAAU,IAAMC,EAAc,CAACD,CAAU,EAAG,UAAU,cAAA,CAAe,EACjHG,EAAAA,IAAC,MAAA,CAAI,UAAU,6UAAA,CAA8U,CAAA,EACjW,EACAA,EAAAA,IAAC,OAAA,CAAK,UAAW,qBAAqBH,EAAa,gBAAkB,gBAAgB,GAChF,SAAAA,EAAa,mBAAqB,mBAAA,CACvC,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/WorkspaceTeleporter-CMMIpJEX.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as i,j as t}from"./react-_fH1j4AW.js";import{f as a}from"./index-Nqm_ElTk.js";import"./@braintree-9Zuj5s7N.js";import"./react-dom-B47xkeQg.js";import"./scheduler-DYLXRpC5.js";import"./mermaid-CwNlsT42.js";import"./dayjs-LlU9W_sF.js";import"./d3-transition-593SbTzI.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-C52G7wmG.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-Dc8HCWOS.js";import"./dompurify-J5RlrwSC.js";import"./dagre-d3-es-CXvdFQqV.js";import"./lodash-es-CKQobiyk.js";import"./d3-shape-C6amFesj.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-BS_sNva5.js";import"./cytoscape-Copgxxlq.js";import"./cytoscape-cose-bilkent-DNVwk4oY.js";import"./cose-base-HlRMd3jM.js";import"./layout-base-BVPXtQQC.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";const l=[{name:"Work Project",path:"/Users/dev/work/project-a"},{name:"Side Hustle",path:"/Users/dev/personal/side-hustle"},{name:"Open Source",path:"/Users/dev/oss/cool-lib"},{name:"dotfiles",path:"/Users/dev/.dotfiles"}],jt=()=>{const[s,p]=i.useState("Work Project"),[r,o]=i.useState(""),m=e=>{p(e),o(`Teleported to ${e}!`),setTimeout(()=>o(""),2e3)};return t.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8",children:[t.jsxs("header",{className:"mb-6 flex justify-between items-center",children:[t.jsxs("div",{children:[t.jsxs("h1",{className:"text-3xl font-bold text-slate-100 flex items-center",children:[t.jsx(a,{}),t.jsx("span",{className:"ml-3",children:"Workspace Teleporter"})]}),t.jsx("p",{className:"text-slate-400 mt-1",children:"Instantly switch between your project workspaces."})]}),r&&t.jsx("span",{className:"text-green-400 bg-green-500/10 px-3 py-1 rounded-md",children:r})]}),t.jsx("div",{className:"flex-grow bg-slate-900/50 p-4 rounded-lg overflow-y-auto",children:t.jsx("div",{className:"space-y-3",children:l.map(e=>t.jsxs("button",{onClick:()=>m(e.name),disabled:s===e.name,className:"w-full text-left p-4 rounded-lg transition-colors bg-slate-800 hover:bg-slate-700/50 disabled:bg-cyan-500/20 disabled:ring-2 disabled:ring-cyan-500 disabled:cursor-default",children:[t.jsx("p",{className:"font-bold text-slate-200",children:e.name}),t.jsx("p",{className:"text-xs text-slate-400 font-mono mt-1",children:e.path})]},e.name))})})]})};export{jt as WorkspaceTeleporter};
|
| 2 |
+
//# sourceMappingURL=WorkspaceTeleporter-CMMIpJEX.js.map
|
assets/WorkspaceTeleporter-CMMIpJEX.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"WorkspaceTeleporter-CMMIpJEX.js","sources":["../../components/features/WorkspaceTeleporter.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { CloudIcon } from '../icons/FeatureIcons.tsx';\n\nconst workspaces = [\n { name: 'Work Project', path: '/Users/dev/work/project-a' },\n { name: 'Side Hustle', path: '/Users/dev/personal/side-hustle' },\n { name: 'Open Source', path: '/Users/dev/oss/cool-lib' },\n { name: 'dotfiles', path: '/Users/dev/.dotfiles' },\n];\n\nexport const WorkspaceTeleporter: React.FC = () => {\n const [active, setActive] = useState('Work Project');\n const [feedback, setFeedback] = useState('');\n\n const teleport = (name: string) => {\n setActive(name);\n setFeedback(`Teleported to ${name}!`);\n setTimeout(() => setFeedback(''), 2000);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8\">\n <header className=\"mb-6 flex justify-between items-center\">\n <div>\n <h1 className=\"text-3xl font-bold text-slate-100 flex items-center\">\n <CloudIcon />\n <span className=\"ml-3\">Workspace Teleporter</span>\n </h1>\n <p className=\"text-slate-400 mt-1\">Instantly switch between your project workspaces.</p>\n </div>\n {feedback && <span className=\"text-green-400 bg-green-500/10 px-3 py-1 rounded-md\">{feedback}</span>}\n </header>\n <div className=\"flex-grow bg-slate-900/50 p-4 rounded-lg overflow-y-auto\">\n <div className=\"space-y-3\">\n {workspaces.map(ws => (\n <button\n key={ws.name}\n onClick={() => teleport(ws.name)}\n disabled={active === ws.name}\n className=\"w-full text-left p-4 rounded-lg transition-colors bg-slate-800 hover:bg-slate-700/50 disabled:bg-cyan-500/20 disabled:ring-2 disabled:ring-cyan-500 disabled:cursor-default\"\n >\n <p className=\"font-bold text-slate-200\">{ws.name}</p>\n <p className=\"text-xs text-slate-400 font-mono mt-1\">{ws.path}</p>\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n};"],"names":["workspaces","WorkspaceTeleporter","active","setActive","useState","feedback","setFeedback","teleport","name","jsxs","jsx","CloudIcon","ws"],"mappings":"4xEAGA,MAAMA,EAAa,CACf,CAAE,KAAM,eAAgB,KAAM,2BAAA,EAC9B,CAAE,KAAM,cAAe,KAAM,iCAAA,EAC7B,CAAE,KAAM,cAAe,KAAM,yBAAA,EAC7B,CAAE,KAAM,WAAY,KAAM,sBAAA,CAC9B,EAEaC,GAAgC,IAAM,CAC/C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,cAAc,EAC7C,CAACC,EAAUC,CAAW,EAAIF,EAAAA,SAAS,EAAE,EAErCG,EAAYC,GAAiB,CAC/BL,EAAUK,CAAI,EACdF,EAAY,iBAAiBE,CAAI,GAAG,EACpC,WAAW,IAAMF,EAAY,EAAE,EAAG,GAAI,CAC1C,EAEA,OACIG,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,yCACd,SAAA,CAAAA,OAAC,MAAA,CACG,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAU,EACXD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,sBAAA,CAAoB,CAAA,EAC/C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,mDAAA,CAAiD,CAAA,EACxF,EACEL,GAAYK,EAAAA,IAAC,OAAA,CAAK,UAAU,sDAAuD,SAAAL,CAAA,CAAS,CAAA,EAClG,EACAK,EAAAA,IAAC,MAAA,CAAI,UAAU,2DACX,SAAAA,EAAAA,IAAC,OAAI,UAAU,YACd,SAAAV,EAAW,IAAIY,GACZH,EAAAA,KAAC,SAAA,CAEG,QAAS,IAAMF,EAASK,EAAG,IAAI,EAC/B,SAAUV,IAAWU,EAAG,KACxB,UAAU,8KAEV,SAAA,CAAAF,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA4B,SAAAE,EAAG,KAAK,EACjDF,EAAAA,IAAC,IAAA,CAAE,UAAU,wCAAyC,WAAG,IAAA,CAAK,CAAA,CAAA,EANzDE,EAAG,IAAA,CAQf,EACD,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/micromark-CTBPIv-_.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{c as fn}from"./micromark-util-combine-extensions-Bka6Sc1c.js";import{f as K}from"./micromark-factory-space-x2vfxbz5.js";import{m as V}from"./micromark-util-character-Bcm1tP9o.js";import{s as G,p as dn}from"./micromark-util-chunked-DrRIdSP-.js";import{b as hn,c as pn,a as xn,l as b,d as mn,e as H,f as Z,t as Q,s as nn,h as gn,g as kn,i as rn,j as sn,k as wn,m as J,n as bn,o as Cn,p as vn,q as _n,r as In,u as yn,v as U}from"./micromark-core-commonmark-AH8VCgT7.js";import{r as Sn}from"./micromark-util-resolve-all-PQCKh0dx.js";import{s as An}from"./micromark-util-subtokenize-QwsxNXk2.js";const zn={tokenize:Fn};function Fn(n){const t=n.attempt(this.parser.constructs.contentInitial,e,r);let i;return t;function e(l){if(l===null){n.consume(l);return}return n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),K(n,t,"linePrefix")}function r(l){return n.enter("paragraph"),s(l)}function s(l){const d=n.enter("chunkText",{contentType:"text",previous:i});return i&&(i.next=d),i=d,u(l)}function u(l){if(l===null){n.exit("chunkText"),n.exit("paragraph"),n.consume(l);return}return V(l)?(n.consume(l),n.exit("chunkText"),s):(n.consume(l),u)}}const Tn={tokenize:En},en={tokenize:On};function En(n){const t=this,i=[];let e=0,r,s,u;return l;function l(a){if(e<i.length){const k=i[e];return t.containerState=k[1],n.attempt(k[0].continuation,d,o)(a)}return o(a)}function d(a){if(e++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,r&&T();const k=t.events.length;let w=k,m;for(;w--;)if(t.events[w][0]==="exit"&&t.events[w][1].type==="chunkFlow"){m=t.events[w][1].end;break}S(e);let C=k;for(;C<t.events.length;)t.events[C][1].end=Object.assign({},m),C++;return G(t.events,w+1,0,t.events.slice(k)),t.events.length=C,o(a)}return l(a)}function o(a){if(e===i.length){if(!r)return x(a);if(r.currentConstruct&&r.currentConstruct.concrete)return y(a);t.interrupt=!!(r.currentConstruct&&!r._gfmTableDynamicInterruptHack)}return t.containerState={},n.check(en,h,p)(a)}function h(a){return r&&T(),S(e),x(a)}function p(a){return t.parser.lazy[t.now().line]=e!==i.length,u=t.now().offset,y(a)}function x(a){return t.containerState={},n.attempt(en,v,y)(a)}function v(a){return e++,i.push([t.currentConstruct,t.containerState]),x(a)}function y(a){if(a===null){r&&T(),S(0),n.consume(a);return}return r=r||t.parser.flow(t.now()),n.enter("chunkFlow",{contentType:"flow",previous:s,_tokenizer:r}),O(a)}function O(a){if(a===null){B(n.exit("chunkFlow"),!0),S(0),n.consume(a);return}return V(a)?(n.consume(a),B(n.exit("chunkFlow")),e=0,t.interrupt=void 0,l):(n.consume(a),O)}function B(a,k){const w=t.sliceStream(a);if(k&&w.push(null),a.previous=s,s&&(s.next=a),s=a,r.defineSkip(a.start),r.write(w),t.parser.lazy[a.start.line]){let m=r.events.length;for(;m--;)if(r.events[m][1].start.offset<u&&(!r.events[m][1].end||r.events[m][1].end.offset>u))return;const C=t.events.length;let A=C,j,z;for(;A--;)if(t.events[A][0]==="exit"&&t.events[A][1].type==="chunkFlow"){if(j){z=t.events[A][1].end;break}j=!0}for(S(e),m=C;m<t.events.length;)t.events[m][1].end=Object.assign({},z),m++;G(t.events,A+1,0,t.events.slice(C)),t.events.length=m}}function S(a){let k=i.length;for(;k-- >a;){const w=i[k];t.containerState=w[1],w[0].exit.call(t,n)}i.length=a}function T(){r.write([null]),s=void 0,r=void 0,t.containerState._closeFlow=void 0}}function On(n,t,i){return K(n,n.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}const Bn={tokenize:jn};function jn(n){const t=this,i=n.attempt(hn,e,n.attempt(this.parser.constructs.flowInitial,r,K(n,n.attempt(this.parser.constructs.flow,r,n.attempt(pn,r)),"linePrefix")));return i;function e(s){if(s===null){n.consume(s);return}return n.enter("lineEndingBlank"),n.consume(s),n.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(s){if(s===null){n.consume(s);return}return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),t.currentConstruct=void 0,i}}const Pn={resolveAll:un()},Ln=on("string"),$n=on("text");function on(n){return{tokenize:t,resolveAll:un(n==="text"?Mn:void 0)};function t(i){const e=this,r=this.parser.constructs[n],s=i.attempt(r,u,l);return u;function u(h){return o(h)?s(h):l(h)}function l(h){if(h===null){i.consume(h);return}return i.enter("data"),i.consume(h),d}function d(h){return o(h)?(i.exit("data"),s(h)):(i.consume(h),d)}function o(h){if(h===null)return!0;const p=r[h];let x=-1;if(p)for(;++x<p.length;){const v=p[x];if(!v.previous||v.previous.call(e,e.previous))return!0}return!1}}}function un(n){return t;function t(i,e){let r=-1,s;for(;++r<=i.length;)s===void 0?i[r]&&i[r][1].type==="data"&&(s=r,r++):(!i[r]||i[r][1].type!=="data")&&(r!==s+2&&(i[s][1].end=i[r-1][1].end,i.splice(s+2,r-s-2),r=s+2),s=void 0);return n?n(i,e):i}}function Mn(n,t){let i=0;for(;++i<=n.length;)if((i===n.length||n[i][1].type==="lineEnding")&&n[i-1][1].type==="data"){const e=n[i-1][1],r=t.sliceStream(e);let s=r.length,u=-1,l=0,d;for(;s--;){const o=r[s];if(typeof o=="string"){for(u=o.length;o.charCodeAt(u-1)===32;)l++,u--;if(u)break;u=-1}else if(o===-2)d=!0,l++;else if(o!==-1){s++;break}}if(l){const o={type:i===n.length||d||l<2?"lineSuffix":"hardBreakTrailing",start:{line:e.end.line,column:e.end.column-l,offset:e.end.offset-l,_index:e.start._index+s,_bufferIndex:s?u:e.start._bufferIndex+u},end:Object.assign({},e.end)};e.end=Object.assign({},o.start),e.start.offset===e.end.offset?Object.assign(e,o):(n.splice(i,0,["enter",o,t],["exit",o,t]),i+=2)}i++}return n}function Nn(n,t,i){let e=Object.assign(i?Object.assign({},i):{line:1,column:1,offset:0},{_index:0,_bufferIndex:-1});const r={},s=[];let u=[],l=[];const d={consume:T,enter:a,exit:k,attempt:C(w),check:C(m),interrupt:C(m,{interrupt:!0})},o={previous:null,code:null,containerState:{},events:[],parser:n,sliceStream:v,sliceSerialize:x,now:y,defineSkip:O,write:p};let h=t.tokenize.call(o,d);return t.resolveAll&&s.push(t),o;function p(c){return u=dn(u,c),B(),u[u.length-1]!==null?[]:(A(t,0),o.events=Sn(s,o.events,o),o.events)}function x(c,f){return Dn(v(c),f)}function v(c){return Rn(u,c)}function y(){const{line:c,column:f,offset:_,_index:I,_bufferIndex:E}=e;return{line:c,column:f,offset:_,_index:I,_bufferIndex:E}}function O(c){r[c.line]=c.column,z()}function B(){let c;for(;e._index<u.length;){const f=u[e._index];if(typeof f=="string")for(c=e._index,e._bufferIndex<0&&(e._bufferIndex=0);e._index===c&&e._bufferIndex<f.length;)S(f.charCodeAt(e._bufferIndex));else S(f)}}function S(c){h=h(c)}function T(c){V(c)?(e.line++,e.column=1,e.offset+=c===-3?2:1,z()):c!==-1&&(e.column++,e.offset++),e._bufferIndex<0?e._index++:(e._bufferIndex++,e._bufferIndex===u[e._index].length&&(e._bufferIndex=-1,e._index++)),o.previous=c}function a(c,f){const _=f||{};return _.type=c,_.start=y(),o.events.push(["enter",_,o]),l.push(_),_}function k(c){const f=l.pop();return f.end=y(),o.events.push(["exit",f,o]),f}function w(c,f){A(c,f.from)}function m(c,f){f.restore()}function C(c,f){return _;function _(I,E,P){let N,L,W,R;return Array.isArray(I)?D(I):"tokenize"in I?D([I]):ln(I);function ln(g){return q;function q(F){const $=F!==null&&g[F],M=F!==null&&g.null,cn=[...Array.isArray($)?$:$?[$]:[],...Array.isArray(M)?M:M?[M]:[]];return D(cn)(F)}}function D(g){return N=g,L=0,g.length===0?P:X(g[L])}function X(g){return q;function q(F){return R=j(),W=g,g.partial||(o.currentConstruct=g),g.name&&o.parser.constructs.disable.null.includes(g.name)?Y():g.tokenize.call(f?Object.assign(Object.create(o),f):o,d,an,Y)(F)}}function an(g){return c(W,R),E}function Y(g){return R.restore(),++L<N.length?X(N[L]):P}}}function A(c,f){c.resolveAll&&!s.includes(c)&&s.push(c),c.resolve&&G(o.events,f,o.events.length-f,c.resolve(o.events.slice(f),o)),c.resolveTo&&(o.events=c.resolveTo(o.events,o))}function j(){const c=y(),f=o.previous,_=o.currentConstruct,I=o.events.length,E=Array.from(l);return{restore:P,from:I};function P(){e=c,o.previous=f,o.currentConstruct=_,o.events.length=I,l=E,z()}}function z(){e.line in r&&e.column<2&&(e.column=r[e.line],e.offset+=r[e.line]-1)}}function Rn(n,t){const i=t.start._index,e=t.start._bufferIndex,r=t.end._index,s=t.end._bufferIndex;let u;if(i===r)u=[n[i].slice(e,s)];else{if(u=n.slice(i,r),e>-1){const l=u[0];typeof l=="string"?u[0]=l.slice(e):u.shift()}s>0&&u.push(n[r].slice(0,s))}return u}function Dn(n,t){let i=-1;const e=[];let r;for(;++i<n.length;){const s=n[i];let u;if(typeof s=="string")u=s;else switch(s){case-5:{u="\r";break}case-4:{u=`
|
| 2 |
+
`;break}case-3:{u=`\r
|
| 3 |
+
`;break}case-2:{u=t?" ":" ";break}case-1:{if(!t&&r)continue;u=" ";break}default:u=String.fromCharCode(s)}r=s===-2,e.push(u)}return e.join("")}const qn={42:b,43:b,45:b,48:b,49:b,50:b,51:b,52:b,53:b,54:b,55:b,56:b,57:b,62:xn},Hn={91:mn},Qn={[-2]:H,[-1]:H,32:H},Un={35:kn,42:Q,45:[nn,Q],60:gn,61:nn,95:Q,96:Z,126:Z},Gn={38:sn,92:rn},Jn={[-5]:U,[-4]:U,[-3]:U,33:yn,38:sn,42:J,60:[_n,In],91:vn,92:[Cn,rn],93:bn,95:J,96:wn},Kn={null:[J,Pn]},Vn={null:[42,95]},Wn={null:[]},Xn=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:Vn,contentInitial:Hn,disable:Wn,document:qn,flow:Un,flowInitial:Qn,insideSpan:Kn,string:Gn,text:Jn},Symbol.toStringTag,{value:"Module"}));function se(n){const i=fn([Xn,...(n||{}).extensions||[]]),e={defined:[],lazy:{},constructs:i,content:r(zn),document:r(Tn),flow:r(Bn),string:r(Ln),text:r($n)};return e;function r(s){return u;function u(l){return Nn(e,s,l)}}}const tn=/[\0\t\n\r]/g;function oe(){let n=1,t="",i=!0,e;return r;function r(s,u,l){const d=[];let o,h,p,x,v;for(s=t+s.toString(u),p=0,t="",i&&(s.charCodeAt(0)===65279&&p++,i=void 0);p<s.length;){if(tn.lastIndex=p,o=tn.exec(s),x=o&&o.index!==void 0?o.index:s.length,v=s.charCodeAt(x),!o){t=s.slice(p);break}if(v===10&&p===x&&e)d.push(-3),e=void 0;else switch(e&&(d.push(-5),e=void 0),p<x&&(d.push(s.slice(p,x)),n+=x-p),v){case 0:{d.push(65533),n++;break}case 9:{for(h=Math.ceil(n/4)*4,d.push(-2);n++<h;)d.push(-1);break}case 10:{d.push(-4),n=1;break}default:e=!0,n=1}p=x+1}return l&&(e&&d.push(-5),t&&d.push(t),d.push(null)),d}}function ue(n){for(;!An(n););return n}export{se as a,oe as b,ue as p};
|
| 4 |
+
//# sourceMappingURL=micromark-CTBPIv-_.js.map
|
assets/micromark-CTBPIv-_.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"micromark-CTBPIv-_.js","sources":["../../node_modules/micromark/lib/initialize/content.js","../../node_modules/micromark/lib/initialize/document.js","../../node_modules/micromark/lib/initialize/flow.js","../../node_modules/micromark/lib/initialize/text.js","../../node_modules/micromark/lib/create-tokenizer.js","../../node_modules/micromark/lib/constructs.js","../../node_modules/micromark/lib/parse.js","../../node_modules/micromark/lib/preprocess.js","../../node_modules/micromark/lib/postprocess.js"],"sourcesContent":["/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array<StackItem>} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record<string, number>} */\n const columnStart = {}\n /** @type {Array<Construct>} */\n const resolveAllConstructs = []\n /** @type {Array<Chunk>} */\n let chunks = []\n /** @type {Array<Token>} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array<Construct>} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array<Construct>} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'end' | 'start'>} token\n * @returns {Array<Chunk>}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array<Chunk>} */\n let view\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array<string>} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array<Chunk>}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n"],"names":["content","initializeContent","effects","contentStart","afterContentStartConstruct","paragraphInitial","previous","code","factorySpace","lineStart","token","data","markdownLineEnding","document","initializeDocument","containerConstruct","tokenizeContainer","self","stack","continued","childFlow","childToken","lineStartOffset","start","item","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","point","exitContainers","index","splice","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","eof","stream","seen","size","entry","ok","nok","flow","initializeFlow","initial","blankLine","atBlankEnding","afterConstruct","resolver","createResolver","string","initializeFactory","text","field","initializeText","resolveAllLineSuffixes","constructs","notText","atBreak","list","extraResolver","resolveAllText","events","context","enter","eventIndex","chunks","bufferIndex","tabs","chunk","createTokenizer","parser","initialize","from","columnStart","resolveAllConstructs","consume","exit","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","sliceStream","sliceSerialize","now","defineSkip","write","state","slice","push","main","addResult","resolveAll","expandTabs","serializeChunks","sliceChunks","line","column","offset","_index","_bufferIndex","value","accountForPotentialSkip","chunkIndex","go","type","fields","construct","info","_","onreturn","hook","returnState","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","map","def","all","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startIndex","startBufferIndex","endIndex","endBufferIndex","view","head","result","atTab","blockQuote","contentInitial","definition","flowInitial","codeIndented","headingAtx","thematicBreak","setextUnderline","htmlFlow","codeFenced","characterReference","characterEscape","lineEnding","labelStartImage","attention","autolink","htmlText","labelStartLink","hardBreakEscape","labelEnd","codeText","insideSpan","resolveText","attentionMarkers","disable","parse","options","combineExtensions","defaultConstructs","create","creator","search","preprocess","buffer","atCarriageReturn","preprocessor","encoding","end","match","next","startPosition","endPosition","postprocess","subtokenize"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
|