@dotdirfm/ui 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dotdir.js CHANGED
@@ -110,7 +110,7 @@ Press **Cancel** to stop. Files already copied will remain at the destination.
110
110
  Files are being moved to the destination.
111
111
 
112
112
  Press **Cancel** to stop. Files already moved will remain at the destination and will not be restored automatically.
113
- `};function ge(){let e=(0,c.useContext)(fe),t=e?.dialog??null;if(!t)return null;let n=me(t,e);if(!n)return null;let r=he[t.type];return(0,l.jsx)(ee,{helpText:r,children:n})}function _e(){let e=(0,c.useContext)(fe);if(!e)throw Error(`useDialog must be used within DialogProvider`);return e}var ve=(0,d.atom)(null);function B(){let e=(0,d.useAtomValue)(ve);if(!e)throw Error(`Bridge not initialized. Make sure to call initBridge() before rendering.`);return e}function ye({bridge:e,children:t}){let[n,r]=(0,d.useAtom)(ve);return(0,c.useEffect)(()=>{r(e)},[e,r]),n?(0,l.jsx)(l.Fragment,{children:t}):null}var be=[{command:`dotdir.toggleHiddenFiles`,title:`Toggle Hidden Files`,category:`View`},{command:`dotdir.togglePanels`,title:`Toggle Panels`,category:`View`},{command:`dotdir.showExtensions`,title:`Show Extensions`,shortTitle:`Plugins`,category:`View`},{command:`dotdir.showCommandPalette`,title:`Show All Commands`,category:`View`},{command:`dotdir.closeViewer`,title:`Close Viewer`,category:`View`},{command:`dotdir.closeEditor`,title:`Close Editor`,category:`View`},{command:`dotdir.switchPanel`,title:`Switch Panel`,category:`Navigation`},{command:`dotdir.focusLeftPanel`,title:`Focus Left Panel`,category:`Navigation`},{command:`dotdir.focusRightPanel`,title:`Focus Right Panel`,category:`Navigation`},{command:`dotdir.cancelNavigation`,title:`Cancel Navigation`,category:`Navigation`},{command:`dotdir.goToParent`,title:`Go to Parent Directory`,category:`Navigation`},{command:`dotdir.goHome`,title:`Go to Home Directory`,category:`Navigation`},{command:`dotdir.refresh`,title:`Refresh`,category:`File`},{command:`dotdir.newTab`,title:`New Tab`,category:`File`},{command:`dotdir.closeTab`,title:`Close Tab`,category:`File`},{command:`dotdir.previewInOppositePanel`,title:`Show Preview in Opposite Panel`,category:`File`},{command:`dotdir.openCurrentFolderInOppositePanelCurrentTab`,title:`Open Current Folder in Opposite Panel (Current Tab)`,category:`File`},{command:`dotdir.openCurrentFolderInOppositePanelNewTab`,title:`Open Current Folder in Opposite Panel (New Tab)`,category:`File`},{command:`dotdir.openSelectedFolderInOppositePanelCurrentTab`,title:`Open Selected Folder in Opposite Panel (Current Tab)`,category:`File`},{command:`dotdir.openSelectedFolderInOppositePanelNewTab`,title:`Open Selected Folder in Opposite Panel (New Tab)`,category:`File`},{command:`dotdir.openCreateFile`,title:`Open / Create File`,shortTitle:`New File`,category:`File`},{command:`dotdir.makeFolder`,title:`Make Folder`,shortTitle:`MkDir`,category:`File`},{command:`dotdir.viewFile`,title:`View File`,shortTitle:`View`,category:`File`},{command:`dotdir.editFile`,title:`Edit File`,shortTitle:`Edit`,category:`File`},{command:`dotdir.exit`,title:`Exit`,shortTitle:`Quit`,category:`Application`},{command:`terminal.execute`,title:`Execute in Terminal`,category:`Terminal`},{command:`list.cursorUp`,title:`Cursor Up`,category:`Navigation`},{command:`list.cursorDown`,title:`Cursor Down`,category:`Navigation`},{command:`list.cursorLeft`,title:`Cursor Left (Previous Column)`,category:`Navigation`},{command:`list.cursorRight`,title:`Cursor Right (Next Column)`,category:`Navigation`},{command:`list.cursorHome`,title:`Cursor to First`,category:`Navigation`},{command:`list.cursorEnd`,title:`Cursor to Last`,category:`Navigation`},{command:`list.cursorPageUp`,title:`Cursor Page Up`,category:`Navigation`},{command:`list.cursorPageDown`,title:`Cursor Page Down`,category:`Navigation`},{command:`list.selectUp`,title:`Select Up`,category:`Navigation`},{command:`list.selectDown`,title:`Select Down`,category:`Navigation`},{command:`list.selectLeft`,title:`Select Left`,category:`Navigation`},{command:`list.selectRight`,title:`Select Right`,category:`Navigation`},{command:`list.selectHome`,title:`Select to First`,category:`Navigation`},{command:`list.selectEnd`,title:`Select to Last`,category:`Navigation`},{command:`list.selectPageUp`,title:`Select Page Up`,category:`Navigation`},{command:`list.selectPageDown`,title:`Select Page Down`,category:`Navigation`},{command:`list.execute`,title:`Execute in Terminal`,category:`Navigation`},{command:`list.open`,title:`Open`,category:`Navigation`},{command:`list.viewFile`,title:`View File`,shortTitle:`View`,category:`Navigation`},{command:`list.editFile`,title:`Edit File`,shortTitle:`Edit`,category:`Navigation`},{command:`list.moveToTrash`,title:`Move to Trash`,shortTitle:`Trash`,category:`File`},{command:`list.permanentDelete`,title:`Permanently Delete`,shortTitle:`Del Perm`,category:`File`},{command:`list.copy`,title:`Copy`,shortTitle:`Copy`,category:`File`},{command:`list.move`,title:`Move`,shortTitle:`Move`,category:`File`},{command:`list.rename`,title:`Rename`,shortTitle:`Rename`,category:`File`},{command:`list.pasteFilename`,title:`Paste Filename to Command Line`,category:`File`},{command:`list.pastePath`,title:`Paste Path to Command Line`,category:`File`},{command:`commandLine.execute`,title:`Execute Command Line`,category:`Command Line`},{command:`commandLine.clear`,title:`Clear Command Line`,category:`Command Line`},{command:`commandLine.deleteLeft`,title:`Delete Left`,category:`Command Line`},{command:`commandLine.deleteRight`,title:`Delete Right`,category:`Command Line`},{command:`commandLine.moveWordLeft`,title:`Move Word Left`,category:`Command Line`},{command:`commandLine.moveWordRight`,title:`Move Word Right`,category:`Command Line`},{command:`commandLine.home`,title:`Move to Start`,category:`Command Line`},{command:`commandLine.end`,title:`Move to End`,category:`Command Line`},{command:`commandLine.selectAll`,title:`Select All`,category:`Command Line`},{command:`commandLine.selectLeft`,title:`Extend Selection Left`,category:`Command Line`},{command:`commandLine.selectRight`,title:`Extend Selection Right`,category:`Command Line`},{command:`commandLine.selectHome`,title:`Extend Selection to Start`,category:`Command Line`},{command:`commandLine.selectEnd`,title:`Extend Selection to End`,category:`Command Line`},{command:`commandLine.copy`,title:`Copy Selection`,category:`Command Line`},{command:`commandLine.cut`,title:`Cut Selection`,category:`Command Line`},{command:`commandLine.paste`,title:`Paste from Clipboard`,category:`Command Line`}],V=new class e{contributions=new Map;handlers=new Map;keybindingLayers={default:[],extension:[],user:[]};contextGetter=()=>({});contextValues={};listeners=new Set;batchDepth=0;batchDirty=!1;beginBatch(){this.batchDepth++}endBatch(){this.batchDepth--,this.batchDepth===0&&this.batchDirty&&(this.batchDirty=!1,this.notifyListeners())}setContext(e,t){this.contextValues[e]!==t&&(this.contextValues[e]=t,this.batchDepth>0?this.batchDirty=!0:this.notifyListeners())}getContext(e){return this.contextValues[e]}registerContributions(e){for(let t of e)this.contributions.set(t.command,t);return this.notifyListeners(),()=>{for(let t of e)this.contributions.delete(t.command);this.notifyListeners()}}registerCommand(e,t){return this.handlers.set(e,t),this.notifyListeners(),()=>{this.handlers.delete(e),this.notifyListeners()}}registerKeybinding(e,t=`default`){return this.keybindingLayers[t].push(e),this.notifyListeners(),()=>{let n=this.keybindingLayers[t],r=n.indexOf(e);r>=0&&n.splice(r,1),this.notifyListeners()}}setLayerKeybindings(e,t){this.keybindingLayers[e]=t,this.notifyListeners()}clearLayerKeybindings(e){this.keybindingLayers[e]=[],this.notifyListeners()}setContextGetter(e){this.contextGetter=e}async executeCommand(e,...t){let n=this.handlers.get(e);if(!n){console.warn(`Command not found: ${e}`);return}try{await n(...t)}catch(t){console.error(`Command ${e} failed:`,t)}}getCommand(e){let t=this.contributions.get(e);if(t)return{id:t.command,title:t.title,shortTitle:t.shortTitle,category:t.category,icon:t.icon}}getAllCommands(){return Array.from(this.contributions.values()).map(e=>({id:e.command,title:e.title,shortTitle:e.shortTitle,category:e.category,icon:e.icon}))}getKeybindings(){let e=new Map;for(let t of[`default`,`extension`,`user`])for(let n of this.keybindingLayers[t]){let t=`${this.normalizeKey(this.isMac()?n.mac??n.key:n.key)}|${n.when??``}`;e.set(t,n)}return Array.from(e.values())}getKeybindingsForLayer(e){return[...this.keybindingLayers[e]]}getKeybindingForCommand(e){return this.getKeybindings().find(t=>t.command===e)}evaluateWhen(t){if(!t)return!0;let n=this.contextGetter(),r=v.current,i={...n,...this.contextValues,focusPanel:r===`panel`,focusViewer:r===`viewer`,focusEditor:r===`editor`,focusTerminal:r===`terminal`,focusCommandPalette:r===`commandPalette`,focusModal:r===`modal`};return e.evalWhen(t,i)}static evalWhen(e,t){try{return e.split(/\s*&&\s*/).every(e=>e.trim().split(/\s*\|\|\s*/).some(e=>{let n=e.trim(),r=n.startsWith(`!`),i=r?n.slice(1):n;return r?!t[i]:!!t[i]}))}catch{return!0}}handleKeyboardEvent(e){let t=this.eventToKeyCombo(e);if(!t)return!1;for(let n of[`user`,`extension`,`default`])for(let r of this.keybindingLayers[n])if(this.normalizeKey(this.isMac()?r.mac??r.key:r.key)===t&&this.evaluateWhen(r.when))return e.preventDefault(),e.stopPropagation(),this.executeCommand(r.command),!0;return!1}isMac(){return navigator.platform.toUpperCase().includes(`MAC`)}physicalCodeToKeyPart(e){if(e.startsWith(`Key`)&&e.length===4)return e[3].toLowerCase();if(e.startsWith(`Digit`))return e.slice(5);let t=/^Numpad(\d)$/.exec(e);if(t)return t[1];let n=/^F(\d{1,2})$/.exec(e);if(n)return`f${n[1]}`;let r={Space:`space`,Enter:`enter`,NumpadEnter:`enter`,Tab:`tab`,Escape:`escape`,Backspace:`backspace`,Delete:`delete`,Insert:`insert`,ArrowUp:`up`,ArrowDown:`down`,ArrowLeft:`left`,ArrowRight:`right`,Home:`home`,End:`end`,PageUp:`pageup`,PageDown:`pagedown`,Minus:`-`,Equal:`=`,BracketLeft:`[`,BracketRight:`]`,Backslash:`\\`,Semicolon:`;`,Quote:`'`,Comma:`,`,Period:`.`,Slash:`/`,Backquote:"`",IntlBackslash:`\\`};return r[e]?r[e]:null}keyStringToKeyPart(e){if(!e||[`Control`,`Alt`,`Shift`,`Meta`].includes(e))return null;if(e.length===1)return e.toLowerCase();let t=e.toLowerCase();return t===` `?t=`space`:t===`arrowup`?t=`up`:t===`arrowdown`?t=`down`:t===`arrowleft`?t=`left`:t===`arrowright`?t=`right`:t===`escape`?t=`escape`:t===`enter`?t=`enter`:t===`backspace`?t=`backspace`:t===`delete`?t=`delete`:t===`tab`&&(t=`tab`),t}eventToKeyCombo(e){if([`Control`,`Alt`,`Shift`,`Meta`].includes(e.key))return null;let t=[];(e.ctrlKey||e.metaKey)&&t.push(`ctrl`),e.altKey&&t.push(`alt`),e.shiftKey&&t.push(`shift`);let n=(e.code&&this.physicalCodeToKeyPart(e.code))??this.keyStringToKeyPart(e.key);return n?(t.push(n),t.join(`+`)):null}normalizeKey(e){return e.toLowerCase().replace(/cmd/g,`ctrl`).replace(/meta/g,`ctrl`).replace(/mod/g,`ctrl`).split(`+`).map(e=>e.trim()).sort((e,t)=>{let n=[`ctrl`,`alt`,`shift`],r=n.indexOf(e),i=n.indexOf(t);return r>=0&&i>=0?r-i:r>=0?-1:i>=0?1:0}).join(`+`)}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){for(let e of this.listeners)e()}};function xe(e){let t=navigator.platform.toUpperCase().includes(`MAC`);return(t?e.mac??e.key:e.key).split(`+`).map(e=>{let n=e.trim().toLowerCase();if(t){if(n===`ctrl`||n===`cmd`||n===`mod`)return`⌘`;if(n===`alt`)return`⌥`;if(n===`shift`)return`⇧`}else{if(n===`ctrl`||n===`cmd`||n===`mod`)return`Ctrl`;if(n===`alt`)return`Alt`;if(n===`shift`)return`Shift`}return n===`enter`?`↵`:n===`escape`?`Esc`:n===`backspace`?`⌫`:n===`delete`?`Del`:n===`up`?`↑`:n===`down`?`↓`:n===`left`?`←`:n===`right`?`→`:n===`space`?`Space`:n===`tab`?`Tab`:n.toUpperCase()}).join(t?``:`+`)}var Se=(0,d.atom)(!1),Ce=(0,d.atom)(void 0),we=(0,d.atom)(void 0),Te=(0,d.atom)([]),Ee=(0,d.atom)(!1),De=(0,d.atom)([]),Oe=(0,d.atom)(!1),ke=(0,d.atom)(`dark`),Ae=(0,d.atom)(!0);(0,d.atom)(!0);var je=(0,d.atom)(0),Me=(0,d.atom)(null),Ne=(0,d.atom)(`left`),Pe=(0,d.atom)(!1),Fe=(0,d.atom)(!1),Ie=(0,d.atom)(null),Le=(0,d.atom)(null),Re=(0,d.atom)(``),ze=(0,d.atom)(null),Be=(0,d.atom)(null),Ve=`_disabled_11mfr_28`,He={"action-bar":`_action-bar_11mfr_1`,"action-bar-item":`_action-bar-item_11mfr_13`,disabled:Ve,"action-bar-key":`_action-bar-key_11mfr_40`,"action-bar-label":`_action-bar-label_11mfr_41`};function Ue(e,t,n){let r=[];return e&&r.push(`ctrl`),n&&r.push(`alt`),t&&r.push(`shift`),r.length>0?r.join(`+`)+`+`:``}function We(){let[e,t]=(0,c.useState)([]),[n,r]=(0,c.useState)({ctrl:!1,shift:!1,alt:!1}),i=(0,c.useCallback)(()=>{let e=Ue(n.ctrl,n.shift,n.alt),r=V.getKeybindings(),i=[];for(let t=1;t<=12;t++){let n=e+`f${t}`,a=r.find(e=>e.key.toLowerCase().replace(/\s/g,``)===n);if(a&&V.evaluateWhen(a.when)){let e=V.getCommand(a.command);i.push({fKey:t,command:e,keybinding:a});continue}i.push({fKey:t})}t(i)},[n]);(0,c.useEffect)(()=>(i(),V.onChange(i)),[i]),(0,c.useEffect)(()=>{let e=e=>{r({ctrl:e.ctrlKey||e.metaKey,shift:e.shiftKey,alt:e.altKey})},t=e=>{r({ctrl:e.ctrlKey||e.metaKey,shift:e.shiftKey,alt:e.altKey})},n=()=>{r({ctrl:!1,shift:!1,alt:!1})};return window.addEventListener(`keydown`,e),window.addEventListener(`keyup`,t),window.addEventListener(`blur`,n),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keyup`,t),window.removeEventListener(`blur`,n)}},[]);let a=(0,c.useCallback)(e=>{e.command&&V.executeCommand(e.command.id)},[]);return(0,l.jsx)(`div`,{className:He[`action-bar`],children:e.map(e=>(0,l.jsxs)(`div`,{className:C(He,`action-bar-item`,!e.command&&`disabled`),onClick:()=>a(e),children:[(0,l.jsxs)(`span`,{className:He[`action-bar-key`],children:[`F`,e.fKey]}),(0,l.jsx)(`span`,{className:He[`action-bar-label`],children:e.command?e.command.shortTitle??e.command.title:``})]},e.fKey))})}function Ge(e,t,n){return t.map(t=>e.registerKeybinding(t,n))}var Ke=[{command:`dotdir.toggleHiddenFiles`,key:`ctrl+.`,mac:`cmd+.`},{command:`dotdir.togglePanels`,key:`ctrl+o`,mac:`cmd+o`,when:`!terminalCommandRunning`},{command:`dotdir.showExtensions`,key:`f11`},{command:`dotdir.switchPanel`,key:`tab`,when:`focusPanel && !dialogOpen`},{command:`dotdir.cancelNavigation`,key:`escape`,when:`focusPanel`},{command:`dotdir.goToParent`,key:`alt+pageup`,when:`focusPanel`},{command:`dotdir.goHome`,key:`ctrl+home`,mac:`cmd+home`},{command:`dotdir.newTab`,key:`ctrl+t`,mac:`cmd+t`,when:`focusPanel`},{command:`dotdir.closeTab`,key:`ctrl+w`,mac:`cmd+w`,when:`focusPanel`},{command:`dotdir.previewInOppositePanel`,key:`ctrl+shift+o`,mac:`cmd+shift+o`,when:`focusPanel && listItemIsFile`},{command:`dotdir.refresh`,key:`ctrl+r`,mac:`cmd+r`,when:`focusPanel`},{command:`dotdir.openCreateFile`,key:`shift+f4`,when:`focusPanel`},{command:`dotdir.makeFolder`,key:`f7`,when:`focusPanel`},{command:`dotdir.showCommandPalette`,key:`cmd+shift+p`},{command:`dotdir.showCommandPalette`,key:`cmd+p`},{command:`dotdir.closeViewer`,key:`escape`,when:`focusViewer`},{command:`dotdir.closeEditor`,key:`escape`,when:`focusEditor`},{command:`dotdir.exit`,key:`f10`},{command:`dotdir.exit`,key:`cmd+q`,mac:`cmd+q`}],qe=[{command:`commandLine.execute`,key:`enter`,when:`focusPanel && commandLineHasText`},{command:`commandLine.clear`,key:`escape`,when:`focusPanel && commandLineHasText`},{command:`commandLine.deleteLeft`,key:`backspace`,when:`focusPanel && commandLineHasText`},{command:`commandLine.deleteRight`,key:`delete`,when:`focusPanel && commandLineHasText`},{command:`commandLine.moveWordLeft`,key:`ctrl+left`,when:`focusPanel && commandLineHasText`},{command:`commandLine.moveWordRight`,key:`ctrl+right`,when:`focusPanel && commandLineHasText`},{command:`commandLine.home`,key:`home`,when:`focusPanel && commandLineHasText`},{command:`commandLine.end`,key:`end`,when:`focusPanel && commandLineHasText`},{command:`commandLine.selectAll`,key:`ctrl+a`,when:`focusPanel && commandLineHasText`},{command:`commandLine.copy`,key:`ctrl+c`,when:`focusPanel && commandLineHasText`},{command:`commandLine.cut`,key:`ctrl+x`,when:`focusPanel && commandLineHasText`},{command:`commandLine.paste`,key:`ctrl+v`,when:`focusPanel`}],Je=[{command:`list.cursorUp`,key:`up`,when:`focusPanel`},{command:`list.cursorDown`,key:`down`,when:`focusPanel`},{command:`list.cursorLeft`,key:`left`,when:`focusPanel`},{command:`list.cursorRight`,key:`right`,when:`focusPanel`},{command:`list.cursorHome`,key:`home`,when:`focusPanel`},{command:`list.cursorEnd`,key:`end`,when:`focusPanel`},{command:`list.cursorPageUp`,key:`pageup`,when:`focusPanel`},{command:`list.cursorPageDown`,key:`pagedown`,when:`focusPanel`},{command:`list.selectUp`,key:`shift+up`,when:`focusPanel`},{command:`list.selectDown`,key:`shift+down`,when:`focusPanel`},{command:`list.selectLeft`,key:`shift+left`,when:`focusPanel`},{command:`list.selectRight`,key:`shift+right`,when:`focusPanel`},{command:`list.selectHome`,key:`shift+home`,when:`focusPanel`},{command:`list.selectEnd`,key:`shift+end`,when:`focusPanel`},{command:`list.selectPageUp`,key:`shift+pageup`,when:`focusPanel`},{command:`list.selectPageDown`,key:`shift+pagedown`,when:`focusPanel`},{command:`list.execute`,key:`enter`,when:`focusPanel && listItemIsExecutable && !commandLineHasText`},{command:`list.open`,key:`enter`,when:`focusPanel && !listItemIsExecutable && !commandLineHasText`},{command:`list.open`,key:`alt+pagedown`,when:`focusPanel`},{command:`list.viewFile`,key:`f3`,when:`focusPanel && listItemHasViewer`},{command:`list.editFile`,key:`f4`,when:`focusPanel && listItemHasEditor`},{command:`list.moveToTrash`,key:`f8`,when:`focusPanel`},{command:`list.permanentDelete`,key:`shift+delete`,when:`focusPanel`},{command:`list.copy`,key:`f5`,when:`focusPanel`},{command:`list.move`,key:`f6`,when:`focusPanel`},{command:`list.rename`,key:`shift+f6`,when:`focusPanel`},{command:`list.pasteFilename`,key:`ctrl+enter`,when:`focusPanel`},{command:`list.pastePath`,key:`ctrl+f`,when:`focusPanel`}];function Ye(e){return Qe(e,Ke,`default`)}function Xe(e){return Qe(e,qe,`default`)}function Ze(e){return Qe(e,Je,`default`)}function Qe(e,t,n){return Ge(e,t,n)}function $e(e,t){return e.registerKeybinding(t,`extension`)}function et(e,t){return Ge(e,t,`extension`)}var tt=`_hidden_l0nwk_20`,nt=`_active_l0nwk_145`,H={"terminal-and-panels":`_terminal-and-panels_l0nwk_1`,"command-line":`_command-line_l0nwk_7`,hidden:tt,"command-line-prompt":`_command-line-prompt_l0nwk_24`,"command-line-input":`_command-line-input_l0nwk_35`,"command-line-text":`_command-line-text_l0nwk_42`,"command-line-cursor":`_command-line-cursor_l0nwk_46`,"command-line-selected":`_command-line-selected_l0nwk_66`,"terminal-background":`_terminal-background_l0nwk_71`,"terminal-panel":`_terminal-panel_l0nwk_82`,"terminal-body":`_terminal-body_l0nwk_92`,"terminal-container":`_terminal-container_l0nwk_101`,"terminal-toolbar":`_terminal-toolbar_l0nwk_108`,"terminal-tabs":`_terminal-tabs_l0nwk_122`,"terminal-tab":`_terminal-tab_l0nwk_122`,active:nt,"terminal-tab-add":`_terminal-tab-add_l0nwk_150`,"terminal-tab-status":`_terminal-tab-status_l0nwk_155`,"status-running":`_status-running_l0nwk_163`,"status-starting":`_status-starting_l0nwk_167`,"status-error":`_status-error_l0nwk_171`,"status-exited":`_status-exited_l0nwk_175`,"terminal-tab-label":`_terminal-tab-label_l0nwk_179`,"terminal-tab-close":`_terminal-tab-close_l0nwk_185`,"terminal-profile-picker":`_terminal-profile-picker_l0nwk_190`,"terminal-profile-label":`_terminal-profile-label_l0nwk_197`,"terminal-profile-shell":`_terminal-profile-shell_l0nwk_213`,"terminal-status-error":`_terminal-status-error_l0nwk_222`,"terminal-loading":`_terminal-loading_l0nwk_230`};function rt(){let e=(0,d.useAtomValue)(Re),t=(0,d.useAtomValue)(Ae),n=(0,d.useAtomValue)(ze),r=(0,d.useSetAtom)(Be),[i,a]=(0,c.useState)(``),[o,s]=(0,c.useState)(0),[u,f]=(0,c.useState)(0),p=(0,c.useRef)(!1),m=(0,c.useRef)(null),h=(0,c.useRef)(i),g=(0,c.useRef)(o),_=(0,c.useRef)(u),v=(0,c.useRef)(null);h.current=i,g.current=o,_.current=u,n&&(v.current=n),(0,c.useEffect)(()=>(r(()=>e=>{let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n),o=r+e.length;a(t=>t.slice(0,r)+e+t.slice(i)),s(o),f(o)}),()=>r(()=>()=>{})),[r]),(0,c.useEffect)(()=>{V.setContext(`commandLineHasText`,t&&i.length>0)},[t,i]);let y=(0,c.useCallback)(()=>{let e=g.current,t=_.current;if(e===t)return!1;let n=Math.min(e,t),r=Math.max(e,t);return a(e=>e.slice(0,n)+e.slice(r)),s(n),f(n),!0},[]),b=(0,c.useCallback)((e,t)=>{s(e),t||f(e)},[]);(0,c.useEffect)(()=>{let e=[];return e.push(V.registerCommand(`commandLine.execute`,()=>{let e=h.current.trim();e&&(v.current?.(e),a(``),s(0),f(0))})),e.push(V.registerCommand(`commandLine.clear`,()=>{g.current===_.current?(a(``),s(0),f(0)):f(g.current)})),e.push(V.registerCommand(`commandLine.deleteLeft`,()=>{let e=g.current;e===_.current?e>0&&(a(t=>t.slice(0,e-1)+t.slice(e)),s(e-1),f(e-1)):y()})),e.push(V.registerCommand(`commandLine.deleteRight`,()=>{if(!y()){let e=g.current;e<h.current.length&&a(t=>t.slice(0,e)+t.slice(e+1))}})),e.push(V.registerCommand(`commandLine.moveWordLeft`,()=>{let e=h.current,t=g.current;for(;t>0&&e[t-1]===` `;)t--;for(;t>0&&e[t-1]!==` `;)t--;b(t,!1)})),e.push(V.registerCommand(`commandLine.moveWordRight`,()=>{let e=h.current,t=g.current;for(;t<e.length&&e[t]!==` `;)t++;for(;t<e.length&&e[t]===` `;)t++;b(t,!1)})),e.push(V.registerCommand(`commandLine.home`,()=>b(0,!1))),e.push(V.registerCommand(`commandLine.end`,()=>b(h.current.length,!1))),e.push(V.registerCommand(`commandLine.selectAll`,()=>{h.current.length!==0&&(f(0),s(h.current.length))})),e.push(V.registerCommand(`commandLine.selectLeft`,()=>b(Math.max(0,g.current-1),!0))),e.push(V.registerCommand(`commandLine.selectRight`,()=>b(Math.min(h.current.length,g.current+1),!0))),e.push(V.registerCommand(`commandLine.selectHome`,()=>b(0,!0))),e.push(V.registerCommand(`commandLine.selectEnd`,()=>b(h.current.length,!0))),e.push(V.registerCommand(`commandLine.copy`,()=>{let e=g.current,t=_.current;if(e===t)return;let n=Math.min(e,t),r=Math.max(e,t);navigator.clipboard.writeText(h.current.slice(n,r)).catch(()=>{})})),e.push(V.registerCommand(`commandLine.cut`,()=>{let e=g.current,t=_.current;if(e===t)return;let n=Math.min(e,t),r=Math.max(e,t);navigator.clipboard.writeText(h.current.slice(n,r)).catch(()=>{}),y()})),e.push(V.registerCommand(`commandLine.paste`,()=>{navigator.clipboard.readText().then(e=>{if(!e)return;let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n),o=r+e.length;a(t=>t.slice(0,r)+e+t.slice(i)),s(o),f(o)}).catch(()=>{})})),()=>{for(let t of e)t()}},[y,b]),(0,c.useEffect)(()=>{if(!t)return;let e=[];return e.push(...Xe(V)),()=>{for(let t of e)t()}},[t]),(0,c.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.target;if(t&&!t.closest?.(`.${H[`terminal-container`]}`)&&!t.closest?.(`dialog`)&&!(e.ctrlKey||e.metaKey)&&!e.altKey&&!e.metaKey&&e.key.length===1){e.preventDefault(),e.stopPropagation();let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n);a(t=>t.slice(0,r)+e.key+t.slice(i)),s(r+1),f(r+1)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let x=(0,c.useCallback)((e,t)=>{let n=m.current;if(!n)return h.current.length;let r=n.getBoundingClientRect(),i=document.elementFromPoint(e,t);if(!i||!n.contains(i))return e<r.left?0:h.current.length;let a=i;for(;a&&a!==n&&!a.hasAttribute(`data-start`);)a=a.parentElement;if(!a||a===n||!a.hasAttribute(`data-start`))return e<r.left?0:h.current.length;let o=parseInt(a.getAttribute(`data-start`),10),s=a.firstChild;if(!(s instanceof Text)||!s.textContent?.length)return o;let c=s.textContent.length,l=document.createRange(),u=0,d=c;for(;u<d;){let t=u+d>>1;l.setStart(s,t),l.setEnd(s,t+1),l.getBoundingClientRect().right<=e?u=t+1:d=t}if(u<c){l.setStart(s,u),l.setEnd(s,u+1);let t=l.getBoundingClientRect();e>=t.left+t.width/2&&u++}return Math.min(o+u,h.current.length)},[]),S=(0,c.useCallback)(e=>{e.preventDefault();let t=x(e.clientX,e.clientY);s(t),f(t),p.current=!0;let n=e=>{p.current&&s(x(e.clientX,e.clientY))},r=()=>{p.current=!1,window.removeEventListener(`mousemove`,n),window.removeEventListener(`mouseup`,r)};window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[x]),w=e.length>40?`…`+e.slice(e.length-39):e,T=Math.min(o,u)<Math.max(o,u),E;return E=T?o<=u?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-selected`],"data-start":o,children:i.slice(o,u)}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":u,children:i.slice(u)})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,u)}),(0,l.jsx)(`span`,{className:H[`command-line-selected`],"data-start":u,children:i.slice(u,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":o,children:i.slice(o)})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":o,children:i.slice(o)})]}),(0,l.jsxs)(`div`,{className:C(H,`command-line`,!t&&`hidden`),children:[(0,l.jsxs)(`span`,{className:H[`command-line-prompt`],children:[w,`>`]}),(0,l.jsx)(`span`,{ref:m,className:H[`command-line-input`],onMouseDown:S,children:E})]})}var it={"command-palette-dialog":`_command-palette-dialog_2w2i0_1`,"command-palette":`_command-palette_2w2i0_1`,"command-item-keybinding":`_command-item-keybinding_2w2i0_73`,"command-item-title":`_command-item-title_2w2i0_78`};function at({open:e,onOpenChange:t}){let n=(0,c.useRef)(null),[r,i]=(0,c.useState)(``),[a,o]=(0,c.useState)([]),[s,u]=(0,c.useState)([]);(0,c.useEffect)(()=>{if(e){let e=requestAnimationFrame(()=>{n.current?.focus()});return()=>cancelAnimationFrame(e)}},[e]),(0,c.useEffect)(()=>{let t=()=>{o(V.getAllCommands()),u(V.getKeybindings())};if(t(),e)return V.onChange(t)},[e]);let d=(0,c.useMemo)(()=>a.map(e=>({command:e,keybinding:s.find(t=>t.command===e.id),displayTitle:e.category?`${e.category}: ${e.title}`:e.title})),[a,s]),p=(0,c.useMemo)(()=>{let e=new Map;for(let t of d){let n=t.command.category??`General`;e.has(n)||e.set(n,[]),e.get(n).push(t)}return Array.from(e.entries()).sort((e,t)=>e[0].localeCompare(t[0]))},[d]),m=(0,c.useCallback)(e=>{t(!1),i(``),V.executeCommand(e)},[t]);(0,c.useEffect)(()=>{e||i(``)},[e]),(0,c.useEffect)(()=>{if(e)return v.push(`commandPalette`),()=>v.pop(`commandPalette`)},[e]);let h=(0,c.useCallback)(e=>{e.stopPropagation()},[]);return e?(0,l.jsx)(D,{className:it[`command-palette-dialog`],onClose:()=>t(!1),initialFocusRef:n,placement:`top`,children:(0,l.jsxs)(f.Command,{className:it[`command-palette`],onKeyDown:h,shouldFilter:!0,children:[(0,l.jsx)(f.Command.Input,{ref:n,value:r,onValueChange:i,placeholder:`Type a command or search...`,...b}),(0,l.jsxs)(f.Command.List,{children:[(0,l.jsx)(f.Command.Empty,{children:`No results found.`}),p.map(([e,t])=>(0,l.jsx)(f.Command.Group,{heading:e,children:t.map(({command:e,keybinding:t,displayTitle:n})=>(0,l.jsxs)(f.Command.Item,{value:n,onSelect:()=>m(e.id),children:[(0,l.jsx)(`span`,{className:it[`command-item-title`],children:e.title}),t&&(0,l.jsx)(`span`,{className:it[`command-item-keybinding`],children:xe(t)})]},e.id))},e))]})]})}):null}function ot(){let[e,t]=(0,d.useAtom)(Fe);return(0,c.useEffect)(()=>{let n=n=>{if(e&&n.key===`Escape`){n.preventDefault(),n.stopPropagation(),t(!1);return}if(e&&(n.metaKey||n.ctrlKey)&&n.key.toLowerCase()===`p`){n.preventDefault(),n.stopPropagation(),t(e=>!e);return}};return window.addEventListener(`keydown`,n,!0),()=>window.removeEventListener(`keydown`,n,!0)},[e]),{open:e,setOpen:t}}var st=/^[A-Za-z]:$/,ct=/^[A-Za-z]:\/$/;function lt(e){return e.startsWith(`//`)}function ut(e){return lt(e)?`//${e.slice(2).replace(/\/+/g,`/`)}`:e.replace(/\/+/g,`/`)}function dt(e){return e.startsWith(`/`)||lt(e)||/^[A-Za-z]:\//.test(e)}function U(e){if(!e)return e;let t=ut(e.replace(/\\/g,`/`));return t=t.replace(/\/\.\//g,`/`).replace(/^\.\//,``),t.endsWith(`/.`)&&(t=t.slice(0,-2)),st.test(t)&&(t=`${t}/`),t.length>1&&t.endsWith(`/`)&&!ct.test(t)&&(t=t.replace(/\/+$/,``)),t}function ft(e){let t=U(e);return lt(t)?t.slice(2).split(`/`).filter(Boolean).length===2:!1}function pt(e){let t=U(e);return t===`/`||ct.test(t)||ft(t)}function W(e){let t=U(e);if(!t)return`.`;if(pt(t))return t;let n=t.replace(/\/+$/,``),r=n.lastIndexOf(`/`);if(r<0)return`.`;if(r===0)return`/`;let i=n.slice(0,r);return st.test(i)?`${i}/`:i||`/`}function G(...e){let t=``;for(let n of e){if(!n)continue;let e=U(n);if(!t||dt(e)){t=e;continue}t=U(`${t.replace(/\/+$/,``)}/${e.replace(/^\/+/,``)}`)}return t}function mt(e){let t=ut(e.replace(/\\/g,`/`));if(!t)return t;let n=/^([A-Za-z]):(\/.*)?$/i.exec(t);if(n){let e=n[1].toUpperCase(),t=ht((n[2]??`/`).replace(/^\//,``).split(`/`).filter(e=>e!==``),!0);return t.length===0?`${e}:/`:`${e}:/${t.join(`/`)}`}if(lt(t)){let e=t.slice(2).split(`/`).filter(Boolean);if(e.length<2)return t;let n=`//${e[0]}/${e[1]}`,r=ht(e.slice(2),!0);return r.length?`${n}/${r.join(`/`)}`:n}let r=t.startsWith(`/`),i=ht((r?t.slice(1):t).split(`/`).filter(e=>e!==``),r);return r?i.length?`/${i.join(`/`)}`:`/`:i.length?i.join(`/`):`.`}function ht(e,t){let n=[];for(let r of e)r===`.`||r===``||(r===`..`?n.length>0?n.pop():t||n.push(`..`):n.push(r));return n}function K(e){let t=U(e);if(!t||pt(t))return``;let n=t.replace(/\/+$/,``),r=n.lastIndexOf(`/`),i=r<0?n:n.slice(r+1);return i.endsWith(`\0`)?i.slice(0,-1):i}var gt=new Set([`.exe`,`.com`,`.bat`,`.cmd`,`.msi`,`.scr`,`.ps1`,`.vbs`,`.js`,`.wsf`]);function _t(e,t){if(e&73)return!0;let n=t.lastIndexOf(`.`);if(n<0)return!1;let r=t.slice(n).toLowerCase();return gt.has(r)}var vt=`\0`;function yt(e){let t=e.indexOf(vt);if(t>=0){let n=e.slice(0,t),r=e.slice(t+1),i=yt(n);if(i.length>0&&(i[i.length-1]={label:i[i.length-1].label,path:n+vt}),r&&r!==`/`){let e=r.replace(/^\//,``).split(`/`).filter(Boolean),t=``;for(let r of e)t=t+`/`+r,i.push({label:r,path:n+vt+t})}return i}let n=U(e);if(!n)return[];let r=[];if(/^[A-Za-z]:\//.test(n)){let e=n.slice(0,3),t=n.slice(3),i=t?n.slice(0,2):e.replace(`/`,`\\`);if(r.push({label:i,path:e}),!t)return r;let a=t.split(`/`).filter(Boolean),o=e;for(let e of a)o=o.replace(/\/?$/,``)+`/`+e,r.push({label:e,path:o});return r}if(lt(n)){let e=n.slice(2).replace(/\/+$/,``).split(`/`).filter(Boolean);if(e.length>=2){r.push({label:`\\\\`+e[0]+`\\`+e[1],path:`//`+e[0]+`/`+e[1]});let t=`//`+e[0]+`/`+e[1];for(let n=2;n<e.length;n++)t=t+`/`+e[n],r.push({label:e[n],path:t})}return r}if(n.startsWith(`/`)){r.push({label:`/`,path:`/`});let e=n.slice(1).split(`/`).filter(Boolean),t=`/`;for(let n of e)t=t.replace(/\/?$/,``)+`/`+n,r.push({label:n,path:t});return r}let i=n.split(`/`).filter(Boolean),a=``;for(let e of i)a=a?a+`/`+e:e,r.push({label:e,path:a});return r}async function bt(e,t){return e.fs.readFile(U(t))}async function xt(e,t){return bt(e,t)}async function St(e,t){let n=await bt(e,t);return new TextDecoder().decode(n)}var Ct=0,wt=class{#e;#t=new Map;#n=new Map;#r=null;#i=0;constructor(e,t){this.bridge=e,this.#e=t}#a(){this.#r||=this.bridge.fs.onFsChange(e=>{this.#o(e)})}async observe(e){this.#a();let t=U(e);if(this.#n.has(t))return;let n=this.#i,r=`fso-${Ct++}`;this.#t.set(r,t),this.#n.set(t,r);let i=await this.bridge.fs.watch(r,t);if(n!==this.#i){i&&this.bridge.fs.unwatch(r);return}i||(this.#t.delete(r),this.#n.delete(t),this.#e([{root:{path:t},changedHandle:null,relativePathComponents:[],type:`errored`}],this))}unobserve(e){let t=U(e),n=this.#n.get(t);n!=null&&(this.bridge.fs.unwatch(n),this.#t.delete(n),this.#n.delete(t))}sync(e){this.#a();let t=new Set(e);for(let[e,n]of this.#n)t.has(e)||(this.bridge.fs.unwatch(n),this.#t.delete(n),this.#n.delete(e));for(let e of t)this.#n.has(e)||this.observe(e)}disconnect(){this.#i++;for(let e of this.#t.keys())this.bridge.fs.unwatch(e);this.#t.clear(),this.#n.clear(),this.#r&&=(this.#r(),null)}#o(e){let t=this.#t.get(e.watchId);if(!t)return;let n=e.name?{path:G(t,e.name),name:e.name}:null,r=e.name?[e.name]:[];this.#e([{root:{path:t},changedHandle:n,relativePathComponents:r,type:e.type}],this)}},Tt=new Map;function Et(e){return{async readFile(t){return xt(e,t)},async readFileRange(t,n,r){let i=await e.fs.open(t);try{return await e.fs.read(i,n,r)}finally{await e.fs.close(i)}}}}function Dt(e,t,n){let r=t+``+n,i=Tt.get(r);if(i)return i;let a=(async()=>{let r=await St(e,G(t,n)),i=Et(e);return new Promise((e,t)=>{let a=setTimeout(()=>{t(Error(`fsProvider "${n}" did not register within 5 s`))},5e3),o=new Blob([r],{type:`application/javascript`}),s=URL.createObjectURL(o),c=document.createElement(`script`);c.src=s,c.onerror=()=>{clearTimeout(a),URL.revokeObjectURL(s),t(Error(`Failed to load fsProvider script "${n}"`))},c.onload=()=>{URL.revokeObjectURL(s),clearTimeout(a);let r=window.__dotdirProviderReady;if(typeof r!=`function`){t(Error(`fsProvider "${n}" did not set window.__dotdirProviderReady`));return}window.__dotdirProviderReady=void 0;try{e(r(i))}catch(e){t(e)}},document.head.appendChild(c)})})();return a.catch(()=>Tt.delete(r)),Tt.set(r,a),a}function Ot(){Tt.clear()}var kt=null;function At(e){kt=e}function q(){return kt}var jt=null;function Mt(e){jt=e}function Nt(){return jt??document.documentElement}function Pt(e){return e.includes(`\0`)}function Ft(e){let t=e.lastIndexOf(`\0`);if(t<0)throw Error(`Not a container path: `+JSON.stringify(e));let n=e.slice(0,t),r=e.slice(t+1);return{containerFile:n,innerPath:r.startsWith(`/`)?r:`/`+r}}function It(e,t){let n=t.startsWith(`/`)?t:`/`+t;return n.length>1&&n.endsWith(`/`)&&(n=n.slice(0,-1)),e+`\0`+n}var Lt=[],Rt=(0,c.createContext)(null);function zt(e){return e.split(`/`).map(e=>encodeURIComponent(e)).join(`/`)}function Bt(e){return e.replace(/\\/g,`/`).replace(/(^|\/)([A-Za-z]):(?=\/|$)/g,`$1$2/`)}function Vt(e,t){let n=e.startsWith(`/`)?e:`/${e}`;return t===`extension-directory`?`/_ext${n}`:n}var Ht=(e,t=`file`)=>{let n=Vt(e,t);return`__TAURI_INTERNALS__`in window?typeof navigator<`u`&&/Windows/i.test(navigator.userAgent)?`http://vfs.localhost${zt(Bt(n))}`:`vfs://vfs${zt(n)}`:`${window.location.origin}/vfs/${zt(n.replace(/^\/+/,``))}`};function Ut(e){return Lt.push(e),()=>{let t=Lt.lastIndexOf(e);t>=0&&Lt.splice(t,1)}}function Wt(){return(0,c.useContext)(Rt)??Ht}function Gt(e,t){if(e===`*`||e===`*.*`)return!0;if(e.startsWith(`*.`)){let n=e.slice(1);return t.toLowerCase().endsWith(n.toLowerCase())}return t.toLowerCase()===e.toLowerCase()}function Kt(e,t){return e.some(e=>Gt(e,t))}function qt(e,t){let n=e.filter(e=>Kt(e.contribution.patterns,t));return n.length===0?null:(n.sort((e,t)=>(t.contribution.priority??0)-(e.contribution.priority??0)),n[0])}var Jt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}getAll(){return this.entries}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Yt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}getAll(){return this.entries}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Xt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Zt=new Jt,Qt=new Yt,$t=new Xt;function en(e){Zt.clear(),Qt.clear(),$t.clear();for(let t of e){if(t.viewers)for(let e of t.viewers)Zt.register(e,t.dirPath);if(t.editors)for(let e of t.editors)Qt.register(e,t.dirPath);if(t.fsProviders)for(let e of t.fsProviders)$t.register(e,t.dirPath)}Zt.notifyListeners(),Qt.notifyListeners(),$t.notifyListeners()}var tn=[{cssVar:`--bg`,keys:[`editor.background`]},{cssVar:`--fg`,keys:[`editor.foreground`,`foreground`]},{cssVar:`--bg-secondary`,keys:[`sideBar.background`,`editorGroupHeader.tabsBackground`]},{cssVar:`--fg-secondary`,keys:[`sideBar.foreground`,`foreground`]},{cssVar:`--fg-muted`,keys:[`descriptionForeground`,`tab.inactiveForeground`]},{cssVar:`--border`,keys:[`panel.border`,`sideBar.border`,`widget.border`,`editorGroup.border`]},{cssVar:`--border-active`,keys:[`focusBorder`]},{cssVar:`--entry-hover`,keys:[`list.hoverBackground`]},{cssVar:`--entry-selected`,keys:[`list.activeSelectionBackground`,`list.focusBackground`,`selection.background`]},{cssVar:`--entry-selected-fg`,keys:[`list.activeSelectionForeground`,`list.focusForeground`]},{cssVar:`--entry-selected-inactive`,keys:[`list.inactiveSelectionBackground`]},{cssVar:`--entry-selected-inactive-fg`,keys:[`list.inactiveSelectionForeground`]},{cssVar:`--error-bg`,keys:[`inputValidation.errorBackground`]},{cssVar:`--error-fg`,keys:[`errorForeground`,`editorError.foreground`]},{cssVar:`--accent`,keys:[`button.background`,`textLink.foreground`,`focusBorder`]},{cssVar:`--accent-fg`,keys:[`button.foreground`]},{cssVar:`--action-bar-border`,keys:[`activityBar.border`]},{cssVar:`--action-bar-bg`,keys:[`activityBar.background`]},{cssVar:`--action-bar-fg`,keys:[`activityBar.foreground`]},{cssVar:`--action-bar-badge-bg`,keys:[`activityBarBadge.background`]},{cssVar:`--action-bar-badge-fg`,keys:[`activityBarBadge.foreground`]}];async function nn(e,t,n=3){let r=(0,p.parse)(await St(e,t),void 0,{allowTrailingComma:!0});if(r.include&&n>0){let i=G(W(t),r.include);try{let t=await nn(e,i,n-1);r.colors={...t.colors,...r.colors},!r.tokenColors&&t.tokenColors&&(r.tokenColors=t.tokenColors)}catch{}}return r}var rn=[],an=0,on=null,sn=[];function cn(){return on}function ln(e){return sn.push(e),()=>{sn=sn.filter(t=>t!==e)}}function un(){if(on)for(let e of sn)e(on)}function dn(e){fn();let t=Nt().style;for(let n of tn)for(let r of n.keys){let i=e[r];if(i){t.setProperty(n.cssVar,i),rn.push(n.cssVar);break}}}function fn(){an++;let e=Nt().style;for(let t of rn)e.removeProperty(t);rn=[];let t=on!==null;if(on=null,t)for(let e of sn)e({kind:Nt().dataset.theme===`light`?`light`:`dark`})}function pn(e){return e===`vs`||e===`hc-light`?`light`:`dark`}async function mn(e,t,n){let r=++an,i=await nn(e,t);return r===an?(i.colors&&dn(i.colors),on={kind:n?pn(n):i.type===`light`?`light`:`dark`,colors:i.colors,tokenColors:i.tokenColors},un(),i):i}var hn={"file-viewer":`_file-viewer_1gb4m_1`,"file-viewer-inline":`_file-viewer-inline_1gb4m_17`,"file-viewer-overlay":`_file-viewer-overlay_1gb4m_30`,"file-editor-overlay":`_file-editor-overlay_1gb4m_31`,"file-editor":`_file-editor_1gb4m_31`};async function gn(e,t,n,r){let{containerFile:i,innerPath:a}=Ft(t),o=$t.resolve(K(i));if(!o)throw Error(`No fsProvider registered for "${K(i)}"`);if(o.contribution.runtime===`backend`&&e.fsProvider){let t=G(o.extensionDirPath,o.contribution.entry);return e.fsProvider.readFileRange(t,i,a,n,r)}let s=await Dt(e,o.extensionDirPath,o.contribution.entry);if(!s.readFileRange)throw Error(`Provider does not support readFileRange`);return s.readFileRange(i,a,n,r)}function _n(e){let{extensionDirPath:t,entry:n,kind:r,props:i,onClose:a,className:o,style:s,active:u}=e,d=B(),f=Wt(),p=(0,c.useRef)(null),[m,h]=(0,c.useState)(null),[g,_]=(0,c.useState)(!0),y=(0,c.useRef)(a);y.current=a;let b=r===`viewer`&&!!i.inline,x=r===`viewer`&&!b,S=(0,c.useRef)(null),C=(0,c.useRef)(!1),w=(0,c.useRef)(!1);(0,c.useEffect)(()=>{b&&(S.current=document.activeElement,C.current=!1,w.current=!1)},[b]),(0,c.useEffect)(()=>{if(!x||g||w.current)return;w.current=!0;let e=p.current;e&&setTimeout(()=>{try{e.focus(),e.contentWindow?.focus?.()}catch{}},0)},[x,g]),(0,c.useEffect)(()=>{if(!b)return;let e=e=>{let t=e;if(!t)return!1;let n=t.tagName?.toLowerCase();return n===`input`||n===`textarea`||n===`select`||n===`button`||t.isContentEditable},t=t=>{if(t.key===`Tab`&&!(t.ctrlKey||t.metaKey||t.altKey)&&!t.shiftKey){if(C.current){t.preventDefault(),t.stopPropagation();return}if(v.current===`panel`&&!e(t.target)){t.preventDefault(),t.stopPropagation(),C.current=!0,v.push(`viewer`);try{p.current?.focus(),p.current?.contentWindow?.focus?.()}catch{}}}};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[b]);let T=(0,c.useRef)(null),E=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(u!==!1)return;let e=p.current;if(e){let t=r===`viewer`?{filePath:``,fileName:``,fileSize:0}:{filePath:``,fileName:``,langId:`plaintext`};try{e.contentWindow?.postMessage({type:`dotdir:update`,props:t},`*`)}catch{}}let t=T.current;t&&(d.fs.close(t.fd).catch(()=>{}),T.current=null)},[u,r]);let D=(0,c.useRef)(e.kind===`viewer`?e.onExecuteCommand:void 0);e.kind===`viewer`&&(D.current=e.onExecuteCommand);let O=(0,c.useRef)(e.kind===`editor`?e.onDirtyChange:void 0);e.kind===`editor`&&(O.current=e.onDirtyChange);let k=(0,c.useCallback)(()=>({async readFile(e){let t=U(e);return Pt(t)?gn(d,t,0,64*1024*1024):d.fs.readFile(t)},async readFileRange(e,t,n){let r=U(e);if(Pt(r))return gn(d,r,t,n);let i=T.current,a=i;if(!a||a.path!==r){if(i)try{await d.fs.close(i.fd)}catch{}a={fd:await d.fs.open(r),size:(await d.fs.stat(r)).size,path:r},T.current=a}let o=Math.max(0,Math.floor(t)),s=Math.max(0,Math.floor(n)),c=Math.max(0,a.size-o),l=Math.min(s,c);return l===0?new ArrayBuffer(0):d.fs.read(a.fd,o,l)},async readFileText(e){let t=U(e);if(Pt(t)){let t=await this.readFile(e);return new TextDecoder().decode(t)}return St(d,t)},async statFile(e){let t=U(e);if(Pt(t))return{size:(await gn(d,t,0,64*1024*1024)).byteLength,mtimeMs:0};let n=await d.fs.stat(t),r=T.current;return r&&r.path===t&&r.size!==n.size&&(r.size=n.size),n},onFileChange(e){let t=E.current;if(!t)return()=>{};let n=U(t),r=W(n),i=K(n),a=`viewer-${Math.random().toString(36).slice(2)}`,o=!1,s=d.fs.onFsChange(t=>{if(!o&&!(t.watchId!==a||!t.name)&&t.name===i&&(t.type===`modified`||t.type===`appeared`)){let t=T.current;t&&t.path===n&&(d.fs.close(t.fd).catch(()=>{}),T.current=null),e()}});return(async()=>{await d.fs.watch(a,r)||(o=!0,s())})(),()=>{o||(o=!0,d.fs.unwatch(a),s())}},async writeFile(e,t){await d.fs.writeFile(e,t)},async getTheme(){return d.theme.get()},getColorTheme(){return cn()},onThemeChange(e){let t=ln(e);return()=>t()},onClose(){y.current()},async executeCommand(e,t){let n=D.current;if(!n)throw Error(`No command handler registered`);return n(e,t)},registerCommand(e,t){return V.registerCommand(e,t)},registerKeybinding(e){return $e(V,{command:e.command,key:e.key,mac:e.mac,when:e.when})},async getExtensionResourceUrl(e){throw U(e).replace(/^\/+/,``).includes(`..`)?Error(`Invalid extension resource path`):Error(`Extension resource URL not available in mount-point mode`)}}),[]),A=(0,c.useCallback)(()=>{let e={};try{let t=getComputedStyle(Nt());for(let n=0;n<t.length;n++){let r=t[n];if(!r||!r.startsWith(`--`))continue;let i=t.getPropertyValue(r);i&&(e[r]=i.trim())}}catch{}return e},[]);(0,c.useEffect)(()=>{let e=!1,a=p.current;if(!a)return;_(!0),h(null);let o=k(),s=a.contentWindow;if(!s)return;let c=U(n.replace(/^\.\//,``))||`index.js`,l=G(t,c),u=f(l),m=/\.mjs(?:\?|$)/i.test(c),g=1,y=new Map,x=new Map,w=new Map,D=new Map,O=t=>{if(t.source!==s)return;let n=t.data;if(!(!n||typeof n!=`object`)){if(n.type===`ext:commandResult`){let e=Number(n.callId),t=y.get(e);if(!t)return;y.delete(e),n.error?t.reject(Error(String(n.error))):t.resolve();return}if(n.type===`ext:call`){let e=n.id,t=String(n.method??``),r=Array.isArray(n.args)?n.args:[];(async()=>{try{let n=o[t];if(typeof n!=`function`)throw Error(`Host method not found: ${t}`);let i=await n.apply(o,r);s.postMessage({type:`host:reply`,id:e,result:i},`*`)}catch(t){let n=t instanceof Error?t.message:t&&typeof t==`object`&&`message`in t?String(t.message):String(t);s.postMessage({type:`host:reply`,id:e,error:n},`*`)}})().catch(()=>{});return}if(n.type===`ext:subscribe`){let e=String(n.cbId??``),t=String(n.method??``);if(!e||x.has(e))return;if(t===`onFileChange`){if(!o.onFileChange)return;let t=o.onFileChange(()=>{try{s.postMessage({type:`host:callback`,cbId:e},`*`)}catch{}});x.set(e,t);return}if(t===`onThemeChange`){if(!o.onThemeChange)return;let t=o.onThemeChange(t=>{try{s.postMessage({type:`host:callback`,cbId:e,payload:t},`*`)}catch{}});x.set(e,t);return}return}if(n.type===`ext:unsubscribe`){let e=String(n.cbId??``),t=x.get(e);if(t){try{t()}catch{}x.delete(e)}return}if(n.type===`ext:registerCommand`){let e=String(n.handlerId??``),t=String(n.commandId??``);if(!e||!t||w.has(e))return;let r=V.registerCommand(t,async(...t)=>{let n=g++;await new Promise((r,i)=>{y.set(n,{resolve:r,reject:i}),s.postMessage({type:`host:runCommand`,handlerId:e,callId:n,args:t},`*`)})});w.set(e,r);return}if(n.type===`ext:unregisterCommand`){let e=String(n.handlerId??``),t=w.get(e);if(t){try{t()}catch{}w.delete(e)}return}if(n.type===`ext:registerKeybinding`){let e=String(n.bindingId??``),t=n.binding;if(!e||!t||typeof t!=`object`||D.has(e))return;let r=$e(V,{command:t.command,key:t.key,mac:t.mac,when:t.when});D.set(e,r);return}if(n.type===`ext:unregisterKeybinding`){let e=String(n.bindingId??``),t=D.get(e);if(t){try{t()}catch{}D.delete(e)}return}if(n.type===`dotdir:bootstrap-ready`)N();else if(n.type===`dotdir:ready`)e||_(!1);else if(n.type===`dotdir:error`)e||(h(String(n.message??`Extension error`)),_(!1));else if(n.type===`dotdir:iframeKeyDown`)try{let e=String(n.key??``).toLowerCase();if(b&&e===`tab`&&C.current){C.current=!1;try{v.pop(`viewer`)}catch{}try{S.current?.focus?.()}catch{}return}if(b&&!C.current)return;let t={key:n.key,ctrlKey:!!n.ctrlKey,metaKey:!!n.metaKey,altKey:!!n.altKey,shiftKey:!!n.shiftKey,repeat:!!n.repeat,preventDefault(){},stopPropagation(){}};V.handleKeyboardEvent(t)}catch{}}};window.addEventListener(`message`,O);let j=()=>{try{a.contentWindow?.postMessage({type:`dotdir:themeVars`,themeVars:A()},`*`)}catch{}},ee=ln(()=>j()),M=!1,N=async()=>{if(M)return;M=!0,E.current=i.filePath;let t;if(m)try{t=await St(d,l)}catch(t){e||(h(`Failed to read ESM entry: ${t instanceof Error?t.message:t&&typeof t==`object`&&`message`in t?String(t.message):String(t)}`),_(!1));return}a.contentWindow?.postMessage({type:`dotdir:init`,kind:r,entryUrl:u,entryScript:t,props:i,themeVars:A(),colorTheme:o.getColorTheme?.()??null},`*`)},te=()=>{setTimeout(()=>{!e&&!M&&(h(`Extension bootstrap did not respond`),_(!1))},3e3)};return a.addEventListener(`load`,te),()=>{e=!0,window.removeEventListener(`message`,O),a.removeEventListener(`load`,te),ee();try{a.contentWindow?.postMessage({type:`dotdir:dispose`},`*`)}catch{}for(let[,e]of x)try{e()}catch{}x.clear();for(let[,e]of w)try{e()}catch{}w.clear();for(let[,e]of D)try{e()}catch{}D.clear(),y.clear();let t=T.current;t&&(d.fs.close(t.fd).catch(()=>{}),T.current=null)}},[t,n,r,k,A]);let j=(0,c.useRef)(i);if((0,c.useEffect)(()=>{if(u===!1){j.current=null;return}let e=p.current;if(!(!e||g||m)&&j.current!==i){j.current=i,E.current=i.filePath;try{e.contentWindow?.postMessage({type:`dotdir:update`,props:i},`*`)}catch{}}},[i,r,g,m,u]),m)return(0,l.jsxs)(`div`,{className:o,style:{...s,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--error-fg, #f44)`},children:[`Failed to load `,r,`: `,m]});let ee=f(W(G(t,U(n.replace(/^\.\//,``))||`index.js`)),`extension-directory`);return(0,l.jsxs)(`div`,{className:o,style:{...s,position:`relative`},children:[g&&(0,l.jsxs)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--fg-muted, #888)`},children:[`Loading `,r,`…`]}),ee&&(0,l.jsx)(`iframe`,{ref:p,src:ee,sandbox:`allow-scripts allow-top-navigation-to-custom-protocols`,style:{width:`100%`,height:`100%`,border:`none`,display:g?`none`:`block`,background:`transparent`},title:`${r} extension`})]})}function vn({extensionDirPath:e,entry:t,filePath:n,fileName:r,fileSize:i,inline:a,visible:o,onClose:s,onExecuteCommand:u}){let d=(0,c.useRef)(!1),f=(0,c.useRef)(null),p=o??!0,m=(0,c.useCallback)(()=>{v.set(`panel`);let e=(t=0)=>{let n=f.current;if(n&&n.isConnected)try{n.focus({preventScroll:!0});return}catch{try{n.focus();return}catch{}}let r=q();if(r){r.focus();return}t<2&&requestAnimationFrame(()=>e(t+1))};requestAnimationFrame(()=>e())},[]),h=(0,c.useCallback)(()=>{s(),m()},[s,m]);(0,c.useEffect)(()=>{if(!a){if(p)d.current||=(f.current=document.activeElement,v.push(`viewer`),!0);else if(d.current){try{v.pop(`viewer`)}catch{}d.current=!1}}},[a,p]),(0,c.useEffect)(()=>()=>{if(d.current){try{v.pop(`viewer`)}catch{}d.current=!1}},[]);let g=(0,c.useMemo)(()=>({filePath:n,fileName:r,fileSize:i,inline:a}),[n,r,i,a]),_=(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`6px 10px`,borderBottom:`1px solid var(--border, #333)`,flexShrink:0,minHeight:38,boxSizing:`border-box`},children:[(0,l.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},title:r,children:r}),(0,l.jsx)(`button`,{type:`button`,title:`Close (Esc)`,onClick:h,style:{background:`transparent`,border:`none`,cursor:`pointer`,fontSize:18,padding:`0 8px`,flexShrink:0,color:`inherit`},"aria-label":`Close`,children:`×`})]}),y=(0,l.jsx)(_n,{kind:`viewer`,extensionDirPath:e,entry:t,props:g,active:p,onClose:h,onExecuteCommand:u,style:{width:`100%`,height:`100%`}});return a?(0,l.jsx)(`div`,{className:`${hn[`file-viewer`]} ${hn[`file-viewer-inline`]}`,style:{display:`flex`,flexDirection:`column`,height:`100%`},children:(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:y})}):(0,l.jsx)(`div`,{className:hn[`file-viewer-overlay`],style:{display:p?`flex`:`none`},children:(0,l.jsxs)(`div`,{className:hn[`file-viewer`],style:{display:`flex`,flexDirection:`column`,padding:0},children:[_,(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:y})]})})}function yn({extensionDirPath:e,entry:t,filePath:n,fileName:r,langId:i,visible:a,onClose:o,onDirtyChange:s,languages:u,grammars:d}){let[f,p]=(0,c.useState)(i),m=(0,c.useRef)(!1),h=(0,c.useRef)(null),g=a??!0,_=(0,c.useCallback)(()=>{v.set(`panel`);let e=(t=0)=>{let n=h.current;if(n&&n.isConnected)try{n.focus({preventScroll:!0});return}catch{try{n.focus();return}catch{}}let r=q();if(r){r.focus();return}t<2&&requestAnimationFrame(()=>e(t+1))};requestAnimationFrame(()=>e())},[]),y=(0,c.useCallback)(()=>{o(),_()},[o,_]);(0,c.useEffect)(()=>{p(i)},[i]),(0,c.useEffect)(()=>{if(g)m.current||=(h.current=document.activeElement,v.push(`editor`),!0);else if(m.current){try{v.pop(`editor`)}catch{}m.current=!1}},[g]),(0,c.useEffect)(()=>()=>{if(m.current){try{v.pop(`editor`)}catch{}m.current=!1}},[]);let b=(0,c.useMemo)(()=>({filePath:n,fileName:r,langId:f,extensionDirPath:e,languages:u,grammars:d,inline:!1}),[n,r,f,e,u,d]),x=e=>{let t=e.target.value;p(t)},S=(0,c.useMemo)(()=>{let e=u??[],t=new Set;return e.filter(e=>t.has(e.id)?!1:(t.add(e.id),!0))},[u]),C=S.length>0;return(0,l.jsx)(`div`,{className:hn[`file-editor-overlay`],style:{display:g?`flex`:`none`},children:(0,l.jsxs)(`div`,{className:hn[`file-editor`],style:{display:`flex`,flexDirection:`column`,padding:0},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`6px 10px`,borderBottom:`1px solid var(--border, #333)`,flexShrink:0,minHeight:38,boxSizing:`border-box`},children:[(0,l.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},title:r,children:r}),C&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`label`,{htmlFor:`editor-lang-select`,style:{whiteSpace:`nowrap`},children:`Language:`}),(0,l.jsxs)(`select`,{id:`editor-lang-select`,value:f,onChange:x,style:{minWidth:120,padding:`2px 6px`},children:[(0,l.jsx)(`option`,{value:`plaintext`,children:`Plain Text`}),S.map(e=>(0,l.jsx)(`option`,{value:e.id,children:e.aliases?.[0]??e.id},e.id))]})]}),(0,l.jsx)(`button`,{type:`button`,title:`Close (Esc)`,onClick:y,style:{background:`transparent`,border:`none`,cursor:`pointer`,fontSize:18,padding:`0 8px`,flexShrink:0,color:`inherit`},"aria-label":`Close`,children:`×`})]}),(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:(0,l.jsx)(_n,{kind:`editor`,extensionDirPath:e,entry:t,props:b,active:g,onClose:y,onDirtyChange:s,style:{width:`100%`,height:`100%`}})})]})})}var bn="(function(){let e=/^[A-Za-z]:$/,t=/^[A-Za-z]:\\/$/;function n(e){return e.startsWith(`//`)}function r(e){return n(e)?`//${e.slice(2).replace(/\\/+/g,`/`)}`:e.replace(/\\/+/g,`/`)}function i(e){return e.startsWith(`/`)||n(e)||/^[A-Za-z]:\\//.test(e)}function a(n){if(!n)return n;let i=r(n.replace(/\\\\/g,`/`));return i=i.replace(/\\/\\.\\//g,`/`).replace(/^\\.\\//,``),i.endsWith(`/.`)&&(i=i.slice(0,-2)),e.test(i)&&(i=`${i}/`),i.length>1&&i.endsWith(`/`)&&!t.test(i)&&(i=i.replace(/\\/+$/,``)),i}function o(e){let t=a(e);return n(t)?t.slice(2).split(`/`).filter(Boolean).length===2:!1}function s(e){let n=a(e);return n===`/`||t.test(n)||o(n)}function c(t){let n=a(t);if(!n)return`.`;if(s(n))return n;let r=n.replace(/\\/+$/,``),i=r.lastIndexOf(`/`);if(i<0)return`.`;if(i===0)return`/`;let o=r.slice(0,i);return e.test(o)?`${o}/`:o||`/`}function l(...e){let t=``;for(let n of e){if(!n)continue;let e=a(n);if(!t||i(e)){t=e;continue}t=a(`${t.replace(/\\/+$/,``)}/${e.replace(/^\\/+/,``)}`)}return t}let u=0,d=new Map,f=new Map,p=new Map,m=new Map;function h(e){return new Promise((t,n)=>{let r=u++;d.set(r,{resolve:t,reject:n}),self.postMessage({type:`readFile`,id:r,path:e})})}function g(e){return`${e.ref.publisher}.${e.ref.name}.${e.ref.version}`}function _(e,t){let n=e.manifest.activationEvents??[];return n.length===0?t===`*`:n.includes(`*`)||n.includes(t)}async function v(e){let t=await h(e);if(t==null)throw Error(`Browser script not found: ${e}`);let n=URL.createObjectURL(new Blob([t],{type:`text/javascript`}));try{return await import(n)}finally{URL.revokeObjectURL(n)}}async function y(e){let t=g(e);if(p.has(t)||!e.manifest.browser)return;let n=a(e.manifest.browser).replace(/^\\/+/,``),r=await v(l(e.dirPath,n)),i=r.activate??r.default?.activate,o=r.deactivate??r.default?.deactivate;if(typeof i!=`function`){console.warn(`[ExtHost] ${t} browser entry has no activate() export`);return}let s=[],c={commands:{registerCommand:(e,t)=>{m.set(e,t);let n={dispose:()=>{m.get(e)===t&&m.delete(e)}};return s.push(n),n},registerKeybinding:e=>({dispose(){}})}},u={subscriptions:s,dotdir:c};self.dotdir=c,await i(u),p.set(t,{subscriptions:s,deactivate:o})}async function b(e){for(let t of f.values())if(t.manifest.browser&&_(t,e))try{await y(t)}catch(e){console.error(`[ExtHost] activate failed:`,g(t),e)}}async function x(e,t){await b(`onCommand:${e}`);let n=m.get(e);n&&await n(...t)}function S(e){return`${e.publisher}-${e.name}-${e.version}`}async function C(e){try{let t=await h(l(e,`package.json`));if(t===null)return null;let n=JSON.parse(t),r={publisher:n.publisher||`unknown`,name:n.name||`unknown`,version:n.version||`0.0.0`},i,a;if(n.contributes?.iconTheme?.path){let t=l(e,n.contributes.iconTheme.path);i=t,a=c(t)}let o=n.contributes?.languages,s;if(n.contributes?.grammars?.length){s=[];for(let t of n.contributes.grammars)try{let n=l(e,t.path);s.push({contribution:t,path:n})}catch{}}let u;n.contributes?.themes?.length&&(u=n.contributes.themes.map((t,n)=>({id:t.id||`${t.label}#${n}`,label:t.label,uiTheme:t.uiTheme,jsonPath:l(e,t.path)})));let d=n.contributes?.viewers,f=n.contributes?.editors,p=n.contributes?.commands,m=n.contributes?.keybindings,g=n.contributes?.fsProviders,_;if(n.contributes?.shellIntegrations?.length){_=[];for(let t of n.contributes.shellIntegrations){let n=await h(l(e,t.scriptPath));n!==null&&_.push({shell:t.shell,label:t.label,script:n,executableCandidates:t.executableCandidates??[],platforms:t.platforms,hiddenCdTemplate:t.hiddenCdTemplate,cwdEscape:t.cwdEscape,lineEnding:t.lineEnding,spawnArgs:t.spawnArgs,scriptArg:t.scriptArg})}}return{ref:r,manifest:n,dirPath:e,iconThemeFssPath:i,iconThemeBasePath:a,colorThemes:u,languages:o,grammarRefs:s,viewers:d,editors:f,commands:p,keybindings:m,fsProviders:g,shellIntegrations:_}}catch{return null}}async function w(e){let t=[],n=l(e,`.dotdir`,`extensions`),r;try{let e=await h(l(n,`extensions.json`));if(e===null)return t;let i=JSON.parse(e);r=Array.isArray(i)?i:[]}catch{return t}for(let e of r){if(!e.publisher||!e.name||!e.version)continue;let r=await C(e.path?a(e.path):l(n,S(e)));r&&t.push(r)}console.log(`[ExtHost] loaded`,t.length,`extensions; FSS:`,t.filter(e=>e.iconThemeFss).map(e=>`${e.ref.publisher}.${e.ref.name}`),`vscode:`,t.filter(e=>e.vscodeIconThemePath).map(e=>`${e.ref.publisher}.${e.ref.name}`)),f.clear();for(let e of t)f.set(g(e),e);return t}self.onmessage=e=>{let t=e.data;if(t.type===`start`)w(t.homePath).then(async e=>{await b(`*`),self.postMessage({type:`loaded`,extensions:e})}).catch(e=>{let t=e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e);self.postMessage({type:`error`,message:t})});else if(t.type===`activateByEvent`){let e=Number(t.requestId);b(String(t.event??``)).then(()=>{self.postMessage({type:`requestResult`,requestId:e,result:null})}).catch(t=>{let n=t instanceof Error?t.message:String(t);self.postMessage({type:`requestResult`,requestId:e,error:n})})}else if(t.type===`executeCommand`){let e=Number(t.requestId);x(String(t.command??``),Array.isArray(t.args)?t.args:[]).then(()=>{self.postMessage({type:`requestResult`,requestId:e,result:null})}).catch(t=>{let n=t instanceof Error?t.message:String(t);self.postMessage({type:`requestResult`,requestId:e,error:n})})}else if(t.type===`readFileResult`){let e=d.get(t.id);e&&(d.delete(t.id),t.error?e.resolve(null):e.resolve(t.data))}}})();",xn=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,bn],{type:`text/javascript;charset=utf-8`});function Sn(e){let t;try{if(t=xn&&(self.URL||self.webkitURL).createObjectURL(xn),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(bn),{name:e?.name})}}var Cn=class{worker=null;homePath=null;listeners=[];starting=!1;nextRequestId=1;pendingRequests=new Map;constructor(e){this.bridge=e}onLoaded(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}async start(){if(!this.starting){this.starting=!0;try{this.homePath||=await this.bridge.utils.getHomePath(),this.spawnWorker()}finally{this.starting=!1}}}async restart(){this.worker?.terminate(),this.worker=null;for(let[,e]of this.pendingRequests)e.reject(Error(`Extension host restarted`));this.pendingRequests.clear(),await this.start()}dispose(){this.worker?.terminate(),this.worker=null;for(let[,e]of this.pendingRequests)e.reject(Error(`Extension host disposed`));this.pendingRequests.clear(),this.listeners=[]}async activateByEvent(e){await this.request({type:`activateByEvent`,event:e})}async executeCommand(e,t=[]){await this.request({type:`executeCommand`,command:e,args:t})}spawnWorker(){let e=new Sn;e.onmessage=t=>{let n=t.data;if(n.type===`readFile`)this.handleFileRead(e,n.id,n.path);else if(n.type===`loaded`){let e=n.extensions,t=e.filter(e=>e.iconThemeFss).map(e=>`${e.ref.publisher}.${e.ref.name}`),r=e.filter(e=>e.vscodeIconThemePath).map(e=>`${e.ref.publisher}.${e.ref.name}`);console.log(`[ExtHost] loaded`,e.length,`extensions; FSS:`,t,`vscode:`,r);for(let t of this.listeners)t(e)}else if(n.type===`error`)console.error(`[ExtensionHost] Worker error:`,n.message);else if(n.type===`requestResult`){let e=Number(n.requestId),t=this.pendingRequests.get(e);if(!t)return;this.pendingRequests.delete(e),n.error?t.reject(Error(String(n.error))):t.resolve(n.result)}},e.onerror=e=>{console.error(`[ExtensionHost] Worker runtime error:`,e)},this.worker=e,(async()=>{e.postMessage({type:`start`,homePath:this.homePath})})()}async request(e){if(this.worker||await this.start(),!this.worker)throw Error(`Extension host is not running`);let t=this.nextRequestId++;return await new Promise((n,r)=>{this.pendingRequests.set(t,{resolve:n,reject:r}),this.worker.postMessage({...e,requestId:t})})}async handleFileRead(e,t,n){try{let r=U(n),i=await St(this.bridge,r);console.log(`[ExtHost] readFile ok`,r),e.postMessage({type:`readFileResult`,id:t,data:i})}catch(r){console.error(`[ExtHost] readFile failed`,n,r),e.postMessage({type:`readFileResult`,id:t,data:null,error:`read failed`})}}},wn=(0,d.atom)(e=>{let t=e(ve);if(!t)throw Error(`Bridge not initialized.`);return new Cn(t)});function Tn(){return(0,d.useAtomValue)(wn)}var En=`https://dotdir.dev`;function Dn(e){return`${e.publisher}-${e.name}-${e.version}`}async function On(e){return G(await e.utils.getHomePath(),`.dotdir`,`extensions`)}async function kn(e){let t=await On(e);try{let n=await St(e,G(t,`extensions.json`)),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}async function An(e,t){let n=await On(e);await e.fs.writeFile(G(n,`extensions.json`),JSON.stringify(t,null,2))}async function jn(e=``,t=1){let n=new URLSearchParams({page:String(t),pageSize:`30`});e&&n.set(`q`,e);let r=await fetch(`${En}/api/extensions/search?${n}`);if(!r.ok)throw Error(`Failed to search marketplace`);return r.json()}async function Mn(e){let t=new DecompressionStream(`deflate-raw`),n=t.writable.getWriter(),r=t.readable.getReader();n.write(e),n.close();let i=[];for(;;){let{done:e,value:t}=await r.read();if(e)break;i.push(t)}let a=i.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.length;return o}async function Nn(e){let t=new Uint8Array(e),n=new Map,r=e=>t[e]|t[e+1]<<8,i=e=>(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0,a=-1;for(let e=t.length-22;e>=Math.max(0,t.length-65557);e--)if(i(e)===101010256){a=e;break}if(a===-1)throw Error(`Invalid ZIP archive`);let o=i(a+16),s=r(a+10),c=o;for(let e=0;e<s&&i(c)===33639248;e++){let e=r(c+10),a=i(c+20),o=r(c+28),s=r(c+30),l=r(c+32),u=i(c+42),d=new TextDecoder().decode(t.slice(c+46,c+46+o));if(c+=46+o+s+l,d.endsWith(`/`))continue;let f=r(u+26),p=r(u+28),m=u+30+f+p,h=t.slice(m,m+a),g;if(e===0)g=h;else if(e===8)g=await Mn(h);else continue;n.set(d,g)}return n}function Pn(e){let t=[...e];if(t.length===0)return``;let n=t[0],r=n.indexOf(`/`);if(r===-1)return``;let i=n.slice(0,r+1);return t.every(e=>e.startsWith(i))?i:``}async function Fn(e,t,n,r){let i=`${En}/api/extensions/${t}/${n}/${r}/download`,a=await fetch(i);if(!a.ok)throw Error(`Download failed: ${a.statusText}`);let o=await Nn(await a.arrayBuffer()),s=await On(e),c={publisher:t,name:n,version:r},l=G(s,Dn(c)),u=Pn(o.keys());for(let[t,n]of o){let r=u?t.slice(u.length):t;r&&await e.fs.writeBinaryFile(G(l,r),n)}let d=(await kn(e)).filter(e=>!(e.publisher===t&&e.name===n));d.push(c),await An(e,d)}async function In(e){let t=new Uint8Array(e),n=new Map,r=e=>t[e]|t[e+1]<<8,i=e=>(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0,a=-1;for(let e=t.length-22;e>=Math.max(0,t.length-65557);e--)if(i(e)===101010256){a=e;break}if(a===-1)throw Error(`Invalid VSIX archive`);let o=i(a+16),s=r(a+10),c=o;for(let e=0;e<s&&i(c)===33639248;e++){let e=r(c+10),a=i(c+20),o=r(c+28),s=r(c+30),l=r(c+32),u=i(c+42),d=new TextDecoder().decode(t.slice(c+46,c+46+o));if(c+=46+o+s+l,d.endsWith(`/`)||!d.startsWith(`extension/`))continue;let f=r(u+26),p=r(u+28),m=u+30+f+p,h=t.slice(m,m+a),g;if(e===0)g=h;else if(e===8)g=await Mn(h);else continue;let _=d.slice(10);_&&n.set(_,g)}return n}async function Ln(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),3e4),o;try{o=await fetch(r,{signal:i.signal})}catch(e){if(clearTimeout(a),e instanceof Error&&e.name===`AbortError`)throw Error(`Download timed out - VS Code marketplace may be blocked by CORS`);let t=e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e);throw Error(`Download failed: ${t}`)}if(clearTimeout(a),!o.ok)throw Error(`Download failed: ${o.status} ${o.statusText}`);let s=await In(await o.arrayBuffer()),c=s.get(`package.json`);if(!c)throw Error(`Invalid VSIX: no package.json`);let l=JSON.parse(new TextDecoder().decode(c)).version||`0.0.0`,u=await On(e),d={publisher:t,name:n,version:l},f=G(u,Dn(d));for(let[t,n]of s){let r=G(f,t),i=t.split(`.`).pop()?.toLowerCase()??``;[`json`,`txt`,`md`,`js`,`ts`,`css`,`html`,`xml`,`yaml`,`yml`,`tmLanguage`,`tmGrammar`].includes(i)||t.endsWith(`.tmLanguage.json`)||t.endsWith(`.language-configuration.json`)?await e.fs.writeFile(r,new TextDecoder().decode(n)):await e.fs.writeBinaryFile(r,n)}let p=(await kn(e)).filter(e=>!(e.publisher===t&&e.name===n));p.push(d),await An(e,p)}async function Rn(e,t){if(!await e.fs.exists(t))return;let n=await e.fs.delete.start([t]);await new Promise((t,r)=>{let i=e.fs.delete.onProgress(e=>{if(e.deleteId!==n)return;let a=e.event;a.kind===`done`?(i(),t()):a.kind===`error`&&(i(),r(Error(a.message)))})})}async function zn(e,t,n){let r=await kn(e),i=r.find(e=>e.publisher===t&&e.name===n);i&&!i.path&&await Rn(e,G(await On(e),Dn(i))),await An(e,r.filter(e=>!(e.publisher===t&&e.name===n)))}function Bn(e){return e.iconThemeFss||e.iconThemeFssPath||e.vscodeIconThemePath?`${e.ref.publisher}.${e.ref.name}`:null}function Vn(e,t){return`${e.ref.publisher}.${e.ref.name}:${t}`}function Hn(e,t){for(let n of e)if(n.colorThemes){for(let e of n.colorThemes)if(Vn(n,e.id)===t)return{ext:n,theme:e}}return null}var Un=`https://marketplace.visualstudio.com/_apis/public/gallery`;async function Wn(e,t=1){let n={filters:[{criteria:[{filterType:8,value:`Microsoft.VisualStudio.Code`},...e?[{filterType:10,value:e}]:[]],pageNumber:t,pageSize:30,sortBy:e?0:4,sortOrder:0}],assetTypes:[],flags:914},r=await fetch(`${Un}/extensionquery`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json;api-version=7.1-preview.1`},body:JSON.stringify(n)});if(!r.ok)throw Error(`VS Code marketplace request failed`);let i=(await r.json()).results?.[0]?.extensions??[];return{extensions:i,total:i.length}}function Gn(e){return e.statistics?.find(e=>e.statisticName===`install`)?.value??0}function Kn(e){return e.versions?.[0]?.version??null}function qn(e){let t=e.versions?.[0];return t?`${t.assetUri}/Microsoft.VisualStudio.Services.VSIXPackage`:null}function Jn(e){let t=e.versions?.[0];return t?`${t.assetUri}/Microsoft.VisualStudio.Services.Icons.Default`:null}async function Yn(e,t){let{name:n,getPath:r,validate:i,defaultValue:a,onLoad:o}=t,s=a,c=null,l=null,u=null,d=new Set;function f(){for(let e of d)try{e(s)}catch(e){console.error(`[${n}] Listener error:`,e)}}async function m(){try{let t=c??await r();c=t;let a=await St(e,t),l=[],u=(0,p.parse)(a,l,{allowTrailingComma:!0});if(l.length>0){console.error(`[${n}] Parse errors:`);for(let e of l)console.error(` - ${(0,p.printParseErrorCode)(e.error)} at offset ${e.offset}`);return}let d=i(u);if(d===null)return;s=d,console.log(`[${n}] Loaded`),o?.(s),f()}catch(e){e&&typeof e.message==`string`&&(e.message===`ENOENT`||e.message?.includes(`not found`)||e.name===`NotFoundError`)?(s=a,o?.(s),f()):console.error(`[${n}] Failed to load:`,e)}}async function h(){try{let t=c??await r();c=t;let i=W(t),a=K(t);l=`${n}-${Date.now()}`,await e.fs.watch(l,i),u=e.fs.onFsChange(e=>{e.watchId===l&&e.name===a&&(console.log(`[${n}] Detected change, reloading...`),m())})}catch(e){console.error(`[${n}] Failed to setup watch:`,e)}}return await m(),await h(),{getValue:()=>s,setValue(e){s=e},onChange(e){return d.add(e),()=>d.delete(e)},async dispose(){if(u&&=(u(),null),l){try{await e.fs.unwatch(l)}catch{}l=null}d.clear()}}}var Xn=null,Zn=null,Qn=null;function $n(e){return typeof e!=`object`||!e||Array.isArray(e)?(console.error(`[userSettings] settings.json must be an object`),null):e}function er(e,t){if(!Xn)return;let n={...Xn.getValue(),...t};Xn.setValue(n),Qn&&clearTimeout(Qn),Qn=setTimeout(()=>{Qn=null,tr(e,n)},500)}async function tr(e,t){try{Zn||=G(await e.utils.getHomePath(),`.dotdir`,`settings.json`),await e.fs.writeFile(Zn,JSON.stringify(t,null,2))}catch(e){console.error(`[userSettings] Failed to save settings:`,e)}}function nr(e){return Xn?.onChange(e)??(()=>{})}async function rr(e){return Xn=await Yn(e,{name:`userSettings`,getPath:async()=>G(await e.utils.getHomePath(),`.dotdir`,`settings.json`),validate:$n,defaultValue:{}}),Xn.getValue()}var ir=(0,d.atom)({}),ar=(0,d.atom)(!1),or=null;function sr(){let e=(0,d.useAtomValue)(ir),t=(0,d.useAtomValue)(ar),n=(0,d.useSetAtom)(ir),r=(0,d.useSetAtom)(ar),i=B();return(0,c.useEffect)(()=>(or||=rr(i),or.then(e=>{n(e),r(!0)}),nr(n)),[n,r,i]),{settings:e,ready:t,updateSettings:(0,c.useCallback)(e=>{n(t=>({...t,...e})),er(i,e)},[n])}}var cr=`_active_jpq35_71`,lr=`_install_jpq35_261`,ur=`_uninstall_jpq35_266`,dr=`_installed_jpq35_276`,J={"ext-panel":`_ext-panel_jpq35_1`,"ext-panel-header":`_ext-panel-header_jpq35_17`,"ext-panel-title":`_ext-panel-title_jpq35_28`,"ext-panel-close":`_ext-panel-close_jpq35_34`,"ext-panel-tabs":`_ext-panel-tabs_jpq35_49`,"ext-tab":`_ext-tab_jpq35_55`,active:cr,"ext-search":`_ext-search_jpq35_76`,"ext-source-selector":`_ext-source-selector_jpq35_82`,"ext-source-btn":`_ext-source-btn_jpq35_88`,"ext-error":`_ext-error_jpq35_129`,"ext-list":`_ext-list_jpq35_137`,"ext-empty":`_ext-empty_jpq35_143`,"ext-item":`_ext-item_jpq35_150`,"ext-icon":`_ext-icon_jpq35_162`,"ext-info":`_ext-info_jpq35_184`,"ext-name":`_ext-name_jpq35_189`,"ext-publisher":`_ext-publisher_jpq35_198`,"ext-desc":`_ext-desc_jpq35_204`,"ext-meta":`_ext-meta_jpq35_214`,"ext-theme-badge":`_ext-theme-badge_jpq35_223`,"ext-actions":`_ext-actions_jpq35_234`,"ext-btn":`_ext-btn_jpq35_241`,install:lr,uninstall:ur,installed:dr,"ext-color-themes":`_ext-color-themes_jpq35_281`,"ext-color-theme-btn":`_ext-color-theme-btn_jpq35_288`,"ext-color-theme-indicator":`_ext-color-theme-indicator_jpq35_296`};function fr(e){return e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e)}function pr(){let e=B(),t=(0,d.useSetAtom)(Se),[n,r]=(0,d.useAtom)(Ce),[i,a]=(0,d.useAtom)(we),o=(0,d.useAtomValue)(Te),s=(0,c.useRef)(null),u=Tn(),[f,p]=(0,c.useState)(`marketplace`),[m,h]=(0,c.useState)(`vscode`),[g,_]=(0,c.useState)(``),[y,x]=(0,c.useState)([]),[S,w]=(0,c.useState)([]),[T,E]=(0,c.useState)(!1),[O,k]=(0,c.useState)(null),[A,j]=(0,c.useState)(``),ee=(0,c.useRef)(null),{settings:M,updateSettings:N}=sr();(0,c.useEffect)(()=>(v.push(`modal`),()=>{v.pop(`modal`)}),[t]);let te=(0,c.useCallback)(async(e,t)=>{E(!0),j(``);try{t===`vscode`?(w((await Wn(e)).extensions),x([])):(x((await jn(e)).extensions),w([]))}catch{j(`Could not reach ${t===`vscode`?`VS Code`:`.dir`} marketplace`)}E(!1)},[]);(0,c.useEffect)(()=>{te(``,m)},[te,m]);let ne=e=>{_(e),ee.current&&clearTimeout(ee.current),ee.current=setTimeout(()=>te(e,m),300)},P=async t=>{let n=qn(t);if(n){k(`${t.publisher.publisherName}.${t.extensionName}`),j(``);try{await Ln(e,t.publisher.publisherName,t.extensionName,n),u.restart()}catch(e){j(`Install failed: ${fr(e)}`)}k(null)}},F=new Set(o.map(e=>`${e.ref.publisher}.${e.ref.name}`)),I=async t=>{if(t.latest_version){k(`${t.publisher.username}.${t.name}`),j(``);try{await Fn(e,t.publisher.username,t.name,t.latest_version.version),u.restart()}catch(e){j(`Install failed: ${fr(e)}`)}k(null)}},L=async t=>{let o=`${t.publisher}.${t.name}`;k(o),j(``);try{await zn(e,t.publisher,t.name);let s=!1;n===o&&(delete M.iconTheme,r(void 0),s=!0),i?.startsWith(o+`:`)&&(delete M.colorTheme,a(void 0),s=!0),s&&N(M),u.restart()}catch(e){j(`Uninstall failed: ${fr(e)}`)}k(null)},re=async e=>{let t=Bn(e);if(!t)return;let i=t===n?void 0:t;i?M.iconTheme=i:delete M.iconTheme,N(M),r(i)},ie=async(e,t)=>{let n=Vn(e,t),r=n===i?void 0:n;r?M.colorTheme=r:delete M.colorTheme,N(M),a(r)},ae=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(1)} MB`;return(0,l.jsxs)(D,{className:J[`ext-panel`],onClose:()=>t(!1),initialFocusRef:s,children:[(0,l.jsxs)(`div`,{className:J[`ext-panel-header`],children:[(0,l.jsx)(`span`,{className:J[`ext-panel-title`],children:`Extensions`}),(0,l.jsx)(`button`,{className:J[`ext-panel-close`],onClick:()=>t(!1),children:`✕`})]}),(0,l.jsxs)(`div`,{className:J[`ext-panel-tabs`],children:[(0,l.jsx)(`button`,{className:C(J,`ext-tab`,f===`marketplace`&&`active`),onClick:()=>p(`marketplace`),children:`Marketplace`}),(0,l.jsxs)(`button`,{className:C(J,`ext-tab`,f===`installed`&&`active`),onClick:()=>p(`installed`),children:[`Installed (`,o.length,`)`]})]}),f===`marketplace`&&(0,l.jsxs)(`div`,{className:J[`ext-search`],children:[(0,l.jsxs)(`div`,{className:J[`ext-source-selector`],children:[(0,l.jsx)(`button`,{className:C(J,`ext-source-btn`,m===`vscode`&&`active`),onClick:()=>{h(`vscode`),_(``)},children:`VS Code`}),(0,l.jsx)(`button`,{className:C(J,`ext-source-btn`,m===`dotdir`&&`active`),onClick:()=>{h(`dotdir`),_(``)},children:`.dir`})]}),(0,l.jsx)(`input`,{ref:s,type:`text`,placeholder:`Search extensions...`,value:g,onChange:e=>ne(e.target.value),...b})]}),A&&(0,l.jsx)(`div`,{className:J[`ext-error`],children:A}),(0,l.jsxs)(`div`,{className:J[`ext-list`],children:[f===`marketplace`&&m===`dotdir`&&(T?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`Searching...`}):y.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions found`}):y.map(e=>{let t=`${e.publisher.username}.${e.name}`,n=F.has(t),r=O===t;return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:e.icon_url?(0,l.jsx)(`img`,{src:e.icon_url,width:36,height:36,alt:``}):e.display_name[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.display_name}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.publisher.display_name||e.publisher.username}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.description}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[e.latest_version&&(0,l.jsxs)(`span`,{children:[`v`,e.latest_version.version]}),e.latest_version&&(0,l.jsx)(`span`,{children:ae(e.latest_version.archive_size)}),(0,l.jsxs)(`span`,{children:[`↓ `,e.total_downloads]})]})]}),(0,l.jsx)(`div`,{className:J[`ext-actions`],children:n?(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`installed`),disabled:!0,children:`Installed`}):(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`install`),disabled:r||!e.latest_version,onClick:()=>I(e),children:r?`Installing...`:`Install`})})]},e.id)})),f===`marketplace`&&m===`vscode`&&(T?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`Searching...`}):S.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions found`}):S.map(e=>{let t=`${e.publisher.publisherName}.${e.extensionName}`,n=F.has(t),r=O===t,i=Kn(e),a=Jn(e),o=Gn(e);return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:a?(0,l.jsx)(`img`,{src:a,width:36,height:36,alt:``}):e.displayName[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.displayName}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.publisher.displayName||e.publisher.publisherName}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.shortDescription}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[i&&(0,l.jsxs)(`span`,{children:[`v`,i]}),(0,l.jsxs)(`span`,{children:[`↓ `,o.toLocaleString()]})]})]}),(0,l.jsx)(`div`,{className:J[`ext-actions`],children:n?(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`installed`),disabled:!0,children:`Installed`}):(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`install`),disabled:r||!i,onClick:()=>P(e),children:r?`Installing...`:`Install`})})]},t)})),f===`installed`&&(o.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions installed`}):o.map(e=>{let t=`${e.ref.publisher}.${e.ref.name}`,r=O===t,a=Bn(e),o=a!=null&&a===n,s=e.colorThemes&&e.colorThemes.length>0;return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:e.iconUrl?(0,l.jsx)(`img`,{src:e.iconUrl,width:36,height:36,alt:``}):(e.manifest.displayName||e.manifest.name)[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.manifest.displayName||e.manifest.name}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.manifest.publisher}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.manifest.description||``}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[(0,l.jsxs)(`span`,{children:[`v`,e.ref.version]}),a&&(0,l.jsx)(`span`,{className:C(J,`ext-theme-badge`,o&&`active`),children:o?`● Icon theme`:`Icon theme`}),s&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.colorThemes.length,` color theme`,e.colorThemes.length>1?`s`:``]}),e.languages&&e.languages.length>0&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.languages.length,` language`,e.languages.length>1?`s`:``]}),e.grammarRefs&&e.grammarRefs.length>0&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.grammarRefs.length,` grammar`,e.grammarRefs.length>1?`s`:``]})]}),s&&(0,l.jsx)(`div`,{className:J[`ext-color-themes`],children:e.colorThemes.map(t=>{let n=Vn(e,t.id)===i;return(0,l.jsxs)(`button`,{className:C(J,`ext-btn`,`ext-color-theme-btn`,n?`installed`:`install`),onClick:()=>ie(e,t.id),children:[(0,l.jsx)(`span`,{className:J[`ext-color-theme-indicator`],"data-ui-theme":t.uiTheme}),t.label,n&&` ●`]},t.id)})})]}),(0,l.jsxs)(`div`,{className:J[`ext-actions`],children:[a&&(0,l.jsx)(`button`,{className:C(J,`ext-btn`,o?`installed`:`install`),onClick:()=>re(e),children:o?`Deactivate`:`Activate`}),(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`uninstall`),disabled:r,onClick:()=>L(e.ref),children:r?`Removing...`:`Uninstall`})]})]},t)}))]})]})}var Y=new class{tail=Promise.resolve();enqueue(e){this.tail=this.tail.then(async()=>{try{let t=e();t&&typeof t.then==`function`&&(await t,await new Promise(e=>setTimeout(e,0)))}catch{}})}},mr=200,hr=new Map,gr=new Map;function _r(e){return e.startsWith(`/`)||/^[A-Za-z]:/.test(e)}function vr(e){return`data:image/svg+xml,${encodeURIComponent(e)}`}function yr(e){let t=hr.get(e);t!==void 0&&(hr.delete(e),hr.set(e,t))}function br(){for(;hr.size>mr;){let e=hr.keys().next().value;hr.delete(e)}}async function xr(e,t){let n=U(t);try{let r=await St(e,n);hr.set(t,vr(r)),br()}catch(e){throw console.warn(`[IconCache] loadIconAbsolute failed`,n,e),e}}async function Sr(e){let t=await fetch(`/icons/${e}`);if(!t.ok)return;let n=await t.text();hr.set(e,vr(n)),br()}function Cr(e){return e===`_default`||e.startsWith(`_default_`)}async function wr(e,t){let n=[];for(let r of t){if(Cr(r)||hr.has(r))continue;if(gr.has(r)){n.push(gr.get(r));continue}let t=(async()=>{try{_r(r)?await xr(e,r):await Sr(r)}catch(e){console.warn(`[IconCache] loadIcons failed for`,r.slice(-60),e)}finally{gr.delete(r)}})();gr.set(r,t),n.push(t)}await Promise.all(n)}function Tr(e){let t=hr.get(e);return t!==void 0&&yr(e),t}function Er(e){return`data:image/svg+xml,${encodeURIComponent(e)}`}var Dr=class{theme=null;loadingIcons=new Map;themeKind=`dark`;constructor(e){this.bridge=e}async load(e){let t=await St(this.bridge,e);this.theme={json:JSON.parse(t),basePath:W(e),iconCache:new Map}}setTheme(e){this.themeKind=e}clear(){this.theme=null,this.loadingIcons.clear()}isLoaded(){return this.theme!==null}getEffectiveMap(e,t){return this.themeKind===`light`&&t!==void 0?t:e}resolveIcon(e,t,n,r,i){if(!this.theme)return null;let{json:a}=this.theme,o=this.themeKind===`light`?a.light:void 0,s;if(t){let t=this.getEffectiveMap(n?a.folderNamesExpanded:a.folderNames,n?o?.folderNamesExpanded:o?.folderNames);s=t?.[e]?t[e]:t?.[e.toLowerCase()]?t[e.toLowerCase()]:r?this.getEffectiveMap(n?a.rootFolderExpanded:a.rootFolder,void 0)??this.getEffectiveMap(n?a.folderExpanded:a.folder,n?o?.folderExpanded:o?.folder):this.getEffectiveMap(n?a.folderExpanded:a.folder,n?o?.folderExpanded:o?.folder)}else{let t=this.getEffectiveMap(a.fileNames,o?.fileNames);if(t?.[e])s=t[e];else if(t?.[e.toLowerCase()])s=t[e.toLowerCase()];else{let t=this.getEffectiveMap(a.fileExtensions,o?.fileExtensions);if(t){let n=e.split(`.`);for(let e=1;e<n.length;e++){let r=n.slice(e).join(`.`).toLowerCase();if(t[r]){s=t[r];break}}}!s&&i&&a.languageIds?.[i]&&(s=a.languageIds[i]),s||=this.getEffectiveMap(a.file,o?.file)}}if(!s)return null;let c=a.iconDefinitions[s];return c?.iconPath?G(this.theme.basePath,c.iconPath):null}async loadIcon(e){if(!this.theme)return null;let t=this.theme.iconCache.get(e);if(t)return t;let n=this.loadingIcons.get(e);if(n)return n;let r=(async()=>{try{let t=await xt(this.bridge,e),n=e.split(`.`).pop()?.toLowerCase()??``,r;if(n===`svg`)r=Er(new TextDecoder().decode(t));else{let e=n===`png`?`image/png`:n===`jpg`||n===`jpeg`?`image/jpeg`:n===`webp`?`image/webp`:`application/octet-stream`,i=new Blob([t],{type:e});r=URL.createObjectURL(i)}return this.theme?.iconCache.set(e,r),r}catch{return null}finally{this.loadingIcons.delete(e)}})();return this.loadingIcons.set(e,r),r}async preloadIcons(e){await Promise.all(e.map(e=>this.loadIcon(e)))}getCachedIcon(e){return this.theme?.iconCache.get(e)??null}},Or=(0,d.atom)(e=>{let t=e(ve);if(!t)throw Error(`Bridge not initialized.`);return new Dr(t)});function kr(){return(0,d.useAtomValue)(Or)}var Ar={folder:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M10%204H4c-1.1%200-2%20.9-2%202v12c0%201.1.9%202%202%202h16c1.1%200%202-.9%202-2V8c0-1.1-.9-2-2-2h-8l-2-2z%22%2F%3E%3C%2Fsvg%3E`,folderOpen:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M20%206h-8l-2-2H4c-1.1%200-2%20.9-2%202v12c0%201.1.9%202%202%202h16c1.1%200%202-.9%202-2V8c0-1.1-.9-2-2-2zm0%2012H4V8h16v10z%22%2F%3E%3C%2Fsvg%3E`,file:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M14%202H6c-1.1%200-2%20.9-2%202v16c0%201.1.9%202%202%202h12c1.1%200%202-.9%202-2V8l-6-6zm4%2018H6V4h7v5h5v11z%22%2F%3E%3C%2Fsvg%3E`},jr=`fss`,Mr=[];function Nr(){let e=kr();return{setIconTheme:async(t,n)=>{if(jr=t,t===`vscode`&&n)try{await e.load(n),Ir()}catch{jr=`none`,Ir()}else e.clear(),Ir()}}}function Pr(){let e=kr();return{setIconThemeKind:t=>{e.setTheme(t)}}}function Fr(e){return Mr.push(e),()=>{Mr=Mr.filter(t=>t!==e)}}function Ir(){for(let e of Mr)e()}function Lr(){let e=kr();return(t,n,r,i,a,o)=>{let s=n?r?Ar.folderOpen:Ar.folder:Ar.file;if(jr===`vscode`&&e.isLoaded()){let o=e.resolveIcon(t,n,r,i,a);return o?{path:o,url:e.getCachedIcon(o),fallbackUrl:s}:{path:`_default`,url:s,fallbackUrl:s}}return jr===`fss`&&o?{path:o,url:Tr(o)??null,fallbackUrl:s}:{path:`_default`,url:s,fallbackUrl:s}}}function Rr(){let e=kr(),t=B();return async n=>{jr===`vscode`&&e.isLoaded()?await e.preloadIcons(n):await wr(t,n)}}function zr(){let e=kr();return t=>t===`_default_folder`?Ar.folder:t===`_default_folder_open`?Ar.folderOpen:t===`_default_file`?Ar.file:jr===`vscode`&&e.isLoaded()?e.getCachedIcon(t):Tr(t)??null}var Br=null;function Vr(e){Br=e}function Hr(){return Br}var Ur=(0,m.createLayer)(`
113
+ `};function ge(){let e=(0,c.useContext)(fe),t=e?.dialog??null;if(!t)return null;let n=me(t,e);if(!n)return null;let r=he[t.type];return(0,l.jsx)(ee,{helpText:r,children:n})}function _e(){let e=(0,c.useContext)(fe);if(!e)throw Error(`useDialog must be used within DialogProvider`);return e}var ve=(0,d.atom)(null);function B(){let e=(0,d.useAtomValue)(ve);if(!e)throw Error(`Bridge not initialized. Make sure to call initBridge() before rendering.`);return e}function ye({bridge:e,children:t}){let[n,r]=(0,d.useAtom)(ve);return(0,c.useEffect)(()=>{r(e)},[e,r]),n?(0,l.jsx)(l.Fragment,{children:t}):null}var be=[{command:`dotdir.toggleHiddenFiles`,title:`Toggle Hidden Files`,category:`View`},{command:`dotdir.togglePanels`,title:`Toggle Panels`,category:`View`},{command:`dotdir.showExtensions`,title:`Show Extensions`,shortTitle:`Plugins`,category:`View`},{command:`dotdir.showCommandPalette`,title:`Show All Commands`,category:`View`},{command:`dotdir.closeViewer`,title:`Close Viewer`,category:`View`},{command:`dotdir.closeEditor`,title:`Close Editor`,category:`View`},{command:`dotdir.switchPanel`,title:`Switch Panel`,category:`Navigation`},{command:`dotdir.focusLeftPanel`,title:`Focus Left Panel`,category:`Navigation`},{command:`dotdir.focusRightPanel`,title:`Focus Right Panel`,category:`Navigation`},{command:`dotdir.cancelNavigation`,title:`Cancel Navigation`,category:`Navigation`},{command:`dotdir.goToParent`,title:`Go to Parent Directory`,category:`Navigation`},{command:`dotdir.goHome`,title:`Go to Home Directory`,category:`Navigation`},{command:`dotdir.refresh`,title:`Refresh`,category:`File`},{command:`dotdir.newTab`,title:`New Tab`,category:`File`},{command:`dotdir.closeTab`,title:`Close Tab`,category:`File`},{command:`dotdir.previewInOppositePanel`,title:`Show Preview in Opposite Panel`,category:`File`},{command:`dotdir.openCurrentFolderInOppositePanelCurrentTab`,title:`Open Current Folder in Opposite Panel (Current Tab)`,category:`File`},{command:`dotdir.openCurrentFolderInOppositePanelNewTab`,title:`Open Current Folder in Opposite Panel (New Tab)`,category:`File`},{command:`dotdir.openSelectedFolderInOppositePanelCurrentTab`,title:`Open Selected Folder in Opposite Panel (Current Tab)`,category:`File`},{command:`dotdir.openSelectedFolderInOppositePanelNewTab`,title:`Open Selected Folder in Opposite Panel (New Tab)`,category:`File`},{command:`dotdir.openCreateFile`,title:`Open / Create File`,shortTitle:`New File`,category:`File`},{command:`dotdir.makeFolder`,title:`Make Folder`,shortTitle:`MkDir`,category:`File`},{command:`dotdir.viewFile`,title:`View File`,shortTitle:`View`,category:`File`},{command:`dotdir.editFile`,title:`Edit File`,shortTitle:`Edit`,category:`File`},{command:`dotdir.exit`,title:`Exit`,shortTitle:`Quit`,category:`Application`},{command:`terminal.execute`,title:`Execute in Terminal`,category:`Terminal`},{command:`list.cursorUp`,title:`Cursor Up`,category:`Navigation`},{command:`list.cursorDown`,title:`Cursor Down`,category:`Navigation`},{command:`list.cursorLeft`,title:`Cursor Left (Previous Column)`,category:`Navigation`},{command:`list.cursorRight`,title:`Cursor Right (Next Column)`,category:`Navigation`},{command:`list.cursorHome`,title:`Cursor to First`,category:`Navigation`},{command:`list.cursorEnd`,title:`Cursor to Last`,category:`Navigation`},{command:`list.cursorPageUp`,title:`Cursor Page Up`,category:`Navigation`},{command:`list.cursorPageDown`,title:`Cursor Page Down`,category:`Navigation`},{command:`list.selectUp`,title:`Select Up`,category:`Navigation`},{command:`list.selectDown`,title:`Select Down`,category:`Navigation`},{command:`list.selectLeft`,title:`Select Left`,category:`Navigation`},{command:`list.selectRight`,title:`Select Right`,category:`Navigation`},{command:`list.selectHome`,title:`Select to First`,category:`Navigation`},{command:`list.selectEnd`,title:`Select to Last`,category:`Navigation`},{command:`list.selectPageUp`,title:`Select Page Up`,category:`Navigation`},{command:`list.selectPageDown`,title:`Select Page Down`,category:`Navigation`},{command:`list.execute`,title:`Execute in Terminal`,category:`Navigation`},{command:`list.open`,title:`Open`,category:`Navigation`},{command:`list.viewFile`,title:`View File`,shortTitle:`View`,category:`Navigation`},{command:`list.editFile`,title:`Edit File`,shortTitle:`Edit`,category:`Navigation`},{command:`list.moveToTrash`,title:`Move to Trash`,shortTitle:`Trash`,category:`File`},{command:`list.permanentDelete`,title:`Permanently Delete`,shortTitle:`Del Perm`,category:`File`},{command:`list.copy`,title:`Copy`,shortTitle:`Copy`,category:`File`},{command:`list.move`,title:`Move`,shortTitle:`Move`,category:`File`},{command:`list.rename`,title:`Rename`,shortTitle:`Rename`,category:`File`},{command:`list.pasteFilename`,title:`Paste Filename to Command Line`,category:`File`},{command:`list.pastePath`,title:`Paste Path to Command Line`,category:`File`},{command:`commandLine.execute`,title:`Execute Command Line`,category:`Command Line`},{command:`commandLine.clear`,title:`Clear Command Line`,category:`Command Line`},{command:`commandLine.deleteLeft`,title:`Delete Left`,category:`Command Line`},{command:`commandLine.deleteRight`,title:`Delete Right`,category:`Command Line`},{command:`commandLine.moveWordLeft`,title:`Move Word Left`,category:`Command Line`},{command:`commandLine.moveWordRight`,title:`Move Word Right`,category:`Command Line`},{command:`commandLine.home`,title:`Move to Start`,category:`Command Line`},{command:`commandLine.end`,title:`Move to End`,category:`Command Line`},{command:`commandLine.selectAll`,title:`Select All`,category:`Command Line`},{command:`commandLine.selectLeft`,title:`Extend Selection Left`,category:`Command Line`},{command:`commandLine.selectRight`,title:`Extend Selection Right`,category:`Command Line`},{command:`commandLine.selectHome`,title:`Extend Selection to Start`,category:`Command Line`},{command:`commandLine.selectEnd`,title:`Extend Selection to End`,category:`Command Line`},{command:`commandLine.copy`,title:`Copy Selection`,category:`Command Line`},{command:`commandLine.cut`,title:`Cut Selection`,category:`Command Line`},{command:`commandLine.paste`,title:`Paste from Clipboard`,category:`Command Line`}],V=new class e{contributions=new Map;handlers=new Map;keybindingLayers={default:[],extension:[],user:[]};contextGetter=()=>({});contextValues={};listeners=new Set;batchDepth=0;batchDirty=!1;beginBatch(){this.batchDepth++}endBatch(){this.batchDepth--,this.batchDepth===0&&this.batchDirty&&(this.batchDirty=!1,this.notifyListeners())}setContext(e,t){this.contextValues[e]!==t&&(this.contextValues[e]=t,this.batchDepth>0?this.batchDirty=!0:this.notifyListeners())}getContext(e){return this.contextValues[e]}registerContributions(e){for(let t of e)this.contributions.set(t.command,t);return this.notifyListeners(),()=>{for(let t of e)this.contributions.delete(t.command);this.notifyListeners()}}registerCommand(e,t){return this.handlers.set(e,t),this.notifyListeners(),()=>{this.handlers.delete(e),this.notifyListeners()}}registerKeybinding(e,t=`default`){return this.keybindingLayers[t].push(e),this.notifyListeners(),()=>{let n=this.keybindingLayers[t],r=n.indexOf(e);r>=0&&n.splice(r,1),this.notifyListeners()}}setLayerKeybindings(e,t){this.keybindingLayers[e]=t,this.notifyListeners()}clearLayerKeybindings(e){this.keybindingLayers[e]=[],this.notifyListeners()}setContextGetter(e){this.contextGetter=e}async executeCommand(e,...t){let n=this.handlers.get(e);if(!n){console.warn(`Command not found: ${e}`);return}try{await n(...t)}catch(t){console.error(`Command ${e} failed:`,t)}}getCommand(e){let t=this.contributions.get(e);if(t)return{id:t.command,title:t.title,shortTitle:t.shortTitle,category:t.category,icon:t.icon}}getAllCommands(){return Array.from(this.contributions.values()).map(e=>({id:e.command,title:e.title,shortTitle:e.shortTitle,category:e.category,icon:e.icon}))}getKeybindings(){let e=new Map;for(let t of[`default`,`extension`,`user`])for(let n of this.keybindingLayers[t]){let t=`${this.normalizeKey(this.isMac()?n.mac??n.key:n.key)}|${n.when??``}`;e.set(t,n)}return Array.from(e.values())}getKeybindingsForLayer(e){return[...this.keybindingLayers[e]]}getKeybindingForCommand(e){return this.getKeybindings().find(t=>t.command===e)}evaluateWhen(t){if(!t)return!0;let n=this.contextGetter(),r=v.current,i={...n,...this.contextValues,focusPanel:r===`panel`,focusViewer:r===`viewer`,focusEditor:r===`editor`,focusTerminal:r===`terminal`,focusCommandPalette:r===`commandPalette`,focusModal:r===`modal`};return e.evalWhen(t,i)}static evalWhen(e,t){try{return e.split(/\s*&&\s*/).every(e=>e.trim().split(/\s*\|\|\s*/).some(e=>{let n=e.trim(),r=n.startsWith(`!`),i=r?n.slice(1):n;return r?!t[i]:!!t[i]}))}catch{return!0}}handleKeyboardEvent(e){let t=this.eventToKeyCombo(e);if(!t)return!1;for(let n of[`user`,`extension`,`default`])for(let r of this.keybindingLayers[n])if(this.normalizeKey(this.isMac()?r.mac??r.key:r.key)===t&&this.evaluateWhen(r.when))return e.preventDefault(),e.stopPropagation(),this.executeCommand(r.command),!0;return!1}isMac(){return navigator.platform.toUpperCase().includes(`MAC`)}physicalCodeToKeyPart(e){if(e.startsWith(`Key`)&&e.length===4)return e[3].toLowerCase();if(e.startsWith(`Digit`))return e.slice(5);let t=/^Numpad(\d)$/.exec(e);if(t)return t[1];let n=/^F(\d{1,2})$/.exec(e);if(n)return`f${n[1]}`;let r={Space:`space`,Enter:`enter`,NumpadEnter:`enter`,Tab:`tab`,Escape:`escape`,Backspace:`backspace`,Delete:`delete`,Insert:`insert`,ArrowUp:`up`,ArrowDown:`down`,ArrowLeft:`left`,ArrowRight:`right`,Home:`home`,End:`end`,PageUp:`pageup`,PageDown:`pagedown`,Minus:`-`,Equal:`=`,BracketLeft:`[`,BracketRight:`]`,Backslash:`\\`,Semicolon:`;`,Quote:`'`,Comma:`,`,Period:`.`,Slash:`/`,Backquote:"`",IntlBackslash:`\\`};return r[e]?r[e]:null}keyStringToKeyPart(e){if(!e||[`Control`,`Alt`,`Shift`,`Meta`].includes(e))return null;if(e.length===1)return e.toLowerCase();let t=e.toLowerCase();return t===` `?t=`space`:t===`arrowup`?t=`up`:t===`arrowdown`?t=`down`:t===`arrowleft`?t=`left`:t===`arrowright`?t=`right`:t===`escape`?t=`escape`:t===`enter`?t=`enter`:t===`backspace`?t=`backspace`:t===`delete`?t=`delete`:t===`tab`&&(t=`tab`),t}eventToKeyCombo(e){if([`Control`,`Alt`,`Shift`,`Meta`].includes(e.key))return null;let t=[];(e.ctrlKey||e.metaKey)&&t.push(`ctrl`),e.altKey&&t.push(`alt`),e.shiftKey&&t.push(`shift`);let n=(e.code&&this.physicalCodeToKeyPart(e.code))??this.keyStringToKeyPart(e.key);return n?(t.push(n),t.join(`+`)):null}normalizeKey(e){return e.toLowerCase().replace(/cmd/g,`ctrl`).replace(/meta/g,`ctrl`).replace(/mod/g,`ctrl`).split(`+`).map(e=>e.trim()).sort((e,t)=>{let n=[`ctrl`,`alt`,`shift`],r=n.indexOf(e),i=n.indexOf(t);return r>=0&&i>=0?r-i:r>=0?-1:i>=0?1:0}).join(`+`)}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){for(let e of this.listeners)e()}};function xe(e){let t=navigator.platform.toUpperCase().includes(`MAC`);return(t?e.mac??e.key:e.key).split(`+`).map(e=>{let n=e.trim().toLowerCase();if(t){if(n===`ctrl`||n===`cmd`||n===`mod`)return`⌘`;if(n===`alt`)return`⌥`;if(n===`shift`)return`⇧`}else{if(n===`ctrl`||n===`cmd`||n===`mod`)return`Ctrl`;if(n===`alt`)return`Alt`;if(n===`shift`)return`Shift`}return n===`enter`?`↵`:n===`escape`?`Esc`:n===`backspace`?`⌫`:n===`delete`?`Del`:n===`up`?`↑`:n===`down`?`↓`:n===`left`?`←`:n===`right`?`→`:n===`space`?`Space`:n===`tab`?`Tab`:n.toUpperCase()}).join(t?``:`+`)}var Se=(0,d.atom)(!1),Ce=(0,d.atom)(void 0),we=(0,d.atom)(void 0),Te=(0,d.atom)([]),Ee=(0,d.atom)(!1),De=(0,d.atom)([]),Oe=(0,d.atom)(!1),ke=(0,d.atom)(`dark`),Ae=(0,d.atom)(!0);(0,d.atom)(!0);var je=(0,d.atom)(0),Me=(0,d.atom)(null),Ne=(0,d.atom)(`left`),Pe=(0,d.atom)(!1),Fe=(0,d.atom)(!1),Ie=(0,d.atom)(null),Le=(0,d.atom)(null),Re=(0,d.atom)(``),ze=(0,d.atom)(null),Be=(0,d.atom)(null),Ve=`_disabled_11mfr_28`,He={"action-bar":`_action-bar_11mfr_1`,"action-bar-item":`_action-bar-item_11mfr_13`,disabled:Ve,"action-bar-key":`_action-bar-key_11mfr_40`,"action-bar-label":`_action-bar-label_11mfr_41`};function Ue(e,t,n){let r=[];return e&&r.push(`ctrl`),n&&r.push(`alt`),t&&r.push(`shift`),r.length>0?r.join(`+`)+`+`:``}function We(){let[e,t]=(0,c.useState)([]),[n,r]=(0,c.useState)({ctrl:!1,shift:!1,alt:!1}),i=(0,c.useCallback)(()=>{let e=Ue(n.ctrl,n.shift,n.alt),r=V.getKeybindings(),i=[];for(let t=1;t<=12;t++){let n=e+`f${t}`,a=r.find(e=>e.key.toLowerCase().replace(/\s/g,``)===n);if(a&&V.evaluateWhen(a.when)){let e=V.getCommand(a.command);i.push({fKey:t,command:e,keybinding:a});continue}i.push({fKey:t})}t(i)},[n]);(0,c.useEffect)(()=>(i(),V.onChange(i)),[i]),(0,c.useEffect)(()=>{let e=e=>{r({ctrl:e.ctrlKey||e.metaKey,shift:e.shiftKey,alt:e.altKey})},t=e=>{r({ctrl:e.ctrlKey||e.metaKey,shift:e.shiftKey,alt:e.altKey})},n=()=>{r({ctrl:!1,shift:!1,alt:!1})};return window.addEventListener(`keydown`,e),window.addEventListener(`keyup`,t),window.addEventListener(`blur`,n),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keyup`,t),window.removeEventListener(`blur`,n)}},[]);let a=(0,c.useCallback)(e=>{e.command&&V.executeCommand(e.command.id)},[]);return(0,l.jsx)(`div`,{className:He[`action-bar`],children:e.map(e=>(0,l.jsxs)(`div`,{className:C(He,`action-bar-item`,!e.command&&`disabled`),onClick:()=>a(e),children:[(0,l.jsxs)(`span`,{className:He[`action-bar-key`],children:[`F`,e.fKey]}),(0,l.jsx)(`span`,{className:He[`action-bar-label`],children:e.command?e.command.shortTitle??e.command.title:``})]},e.fKey))})}function Ge(e,t,n){return t.map(t=>e.registerKeybinding(t,n))}var Ke=[{command:`dotdir.toggleHiddenFiles`,key:`ctrl+.`,mac:`cmd+.`},{command:`dotdir.togglePanels`,key:`ctrl+o`,mac:`cmd+o`,when:`!terminalCommandRunning`},{command:`dotdir.showExtensions`,key:`f11`},{command:`dotdir.switchPanel`,key:`tab`,when:`focusPanel && !dialogOpen`},{command:`dotdir.cancelNavigation`,key:`escape`,when:`focusPanel`},{command:`dotdir.goToParent`,key:`alt+pageup`,when:`focusPanel`},{command:`dotdir.goHome`,key:`ctrl+home`,mac:`cmd+home`},{command:`dotdir.newTab`,key:`ctrl+t`,mac:`cmd+t`,when:`focusPanel`},{command:`dotdir.closeTab`,key:`ctrl+w`,mac:`cmd+w`,when:`focusPanel`},{command:`dotdir.previewInOppositePanel`,key:`ctrl+shift+o`,mac:`cmd+shift+o`,when:`focusPanel && listItemIsFile`},{command:`dotdir.refresh`,key:`ctrl+r`,mac:`cmd+r`,when:`focusPanel`},{command:`dotdir.openCreateFile`,key:`shift+f4`,when:`focusPanel`},{command:`dotdir.makeFolder`,key:`f7`,when:`focusPanel`},{command:`dotdir.showCommandPalette`,key:`cmd+shift+p`},{command:`dotdir.showCommandPalette`,key:`cmd+p`},{command:`dotdir.closeViewer`,key:`escape`,when:`focusViewer`},{command:`dotdir.closeEditor`,key:`escape`,when:`focusEditor`},{command:`dotdir.exit`,key:`f10`},{command:`dotdir.exit`,key:`cmd+q`,mac:`cmd+q`}],qe=[{command:`commandLine.execute`,key:`enter`,when:`focusPanel && commandLineHasText`},{command:`commandLine.clear`,key:`escape`,when:`focusPanel && commandLineHasText`},{command:`commandLine.deleteLeft`,key:`backspace`,when:`focusPanel && commandLineHasText`},{command:`commandLine.deleteRight`,key:`delete`,when:`focusPanel && commandLineHasText`},{command:`commandLine.moveWordLeft`,key:`ctrl+left`,when:`focusPanel && commandLineHasText`},{command:`commandLine.moveWordRight`,key:`ctrl+right`,when:`focusPanel && commandLineHasText`},{command:`commandLine.home`,key:`home`,when:`focusPanel && commandLineHasText`},{command:`commandLine.end`,key:`end`,when:`focusPanel && commandLineHasText`},{command:`commandLine.selectAll`,key:`ctrl+a`,when:`focusPanel && commandLineHasText`},{command:`commandLine.copy`,key:`ctrl+c`,when:`focusPanel && commandLineHasText`},{command:`commandLine.cut`,key:`ctrl+x`,when:`focusPanel && commandLineHasText`},{command:`commandLine.paste`,key:`ctrl+v`,when:`focusPanel`}],Je=[{command:`list.cursorUp`,key:`up`,when:`focusPanel`},{command:`list.cursorDown`,key:`down`,when:`focusPanel`},{command:`list.cursorLeft`,key:`left`,when:`focusPanel`},{command:`list.cursorRight`,key:`right`,when:`focusPanel`},{command:`list.cursorHome`,key:`home`,when:`focusPanel`},{command:`list.cursorEnd`,key:`end`,when:`focusPanel`},{command:`list.cursorPageUp`,key:`pageup`,when:`focusPanel`},{command:`list.cursorPageDown`,key:`pagedown`,when:`focusPanel`},{command:`list.selectUp`,key:`shift+up`,when:`focusPanel`},{command:`list.selectDown`,key:`shift+down`,when:`focusPanel`},{command:`list.selectLeft`,key:`shift+left`,when:`focusPanel`},{command:`list.selectRight`,key:`shift+right`,when:`focusPanel`},{command:`list.selectHome`,key:`shift+home`,when:`focusPanel`},{command:`list.selectEnd`,key:`shift+end`,when:`focusPanel`},{command:`list.selectPageUp`,key:`shift+pageup`,when:`focusPanel`},{command:`list.selectPageDown`,key:`shift+pagedown`,when:`focusPanel`},{command:`list.execute`,key:`enter`,when:`focusPanel && listItemIsExecutable && !commandLineHasText`},{command:`list.open`,key:`enter`,when:`focusPanel && !listItemIsExecutable && !commandLineHasText`},{command:`list.open`,key:`alt+pagedown`,when:`focusPanel`},{command:`list.viewFile`,key:`f3`,when:`focusPanel && listItemHasViewer`},{command:`list.editFile`,key:`f4`,when:`focusPanel && listItemHasEditor`},{command:`list.moveToTrash`,key:`f8`,when:`focusPanel`},{command:`list.permanentDelete`,key:`shift+delete`,when:`focusPanel`},{command:`list.copy`,key:`f5`,when:`focusPanel`},{command:`list.move`,key:`f6`,when:`focusPanel`},{command:`list.rename`,key:`shift+f6`,when:`focusPanel`},{command:`list.pasteFilename`,key:`ctrl+enter`,when:`focusPanel`},{command:`list.pastePath`,key:`ctrl+f`,when:`focusPanel`}];function Ye(e){return Qe(e,Ke,`default`)}function Xe(e){return Qe(e,qe,`default`)}function Ze(e){return Qe(e,Je,`default`)}function Qe(e,t,n){return Ge(e,t,n)}function $e(e,t){return e.registerKeybinding(t,`extension`)}function et(e,t){return Ge(e,t,`extension`)}var tt=`_hidden_l0nwk_20`,nt=`_active_l0nwk_145`,H={"terminal-and-panels":`_terminal-and-panels_l0nwk_1`,"command-line":`_command-line_l0nwk_7`,hidden:tt,"command-line-prompt":`_command-line-prompt_l0nwk_24`,"command-line-input":`_command-line-input_l0nwk_35`,"command-line-text":`_command-line-text_l0nwk_42`,"command-line-cursor":`_command-line-cursor_l0nwk_46`,"command-line-selected":`_command-line-selected_l0nwk_66`,"terminal-background":`_terminal-background_l0nwk_71`,"terminal-panel":`_terminal-panel_l0nwk_82`,"terminal-body":`_terminal-body_l0nwk_92`,"terminal-container":`_terminal-container_l0nwk_101`,"terminal-toolbar":`_terminal-toolbar_l0nwk_108`,"terminal-tabs":`_terminal-tabs_l0nwk_122`,"terminal-tab":`_terminal-tab_l0nwk_122`,active:nt,"terminal-tab-add":`_terminal-tab-add_l0nwk_150`,"terminal-tab-status":`_terminal-tab-status_l0nwk_155`,"status-running":`_status-running_l0nwk_163`,"status-starting":`_status-starting_l0nwk_167`,"status-error":`_status-error_l0nwk_171`,"status-exited":`_status-exited_l0nwk_175`,"terminal-tab-label":`_terminal-tab-label_l0nwk_179`,"terminal-tab-close":`_terminal-tab-close_l0nwk_185`,"terminal-profile-picker":`_terminal-profile-picker_l0nwk_190`,"terminal-profile-label":`_terminal-profile-label_l0nwk_197`,"terminal-profile-shell":`_terminal-profile-shell_l0nwk_213`,"terminal-status-error":`_terminal-status-error_l0nwk_222`,"terminal-loading":`_terminal-loading_l0nwk_230`};function rt(){let e=(0,d.useAtomValue)(Re),t=(0,d.useAtomValue)(Ae),n=(0,d.useAtomValue)(ze),r=(0,d.useSetAtom)(Be),[i,a]=(0,c.useState)(``),[o,s]=(0,c.useState)(0),[u,f]=(0,c.useState)(0),p=(0,c.useRef)(!1),m=(0,c.useRef)(null),h=(0,c.useRef)(i),g=(0,c.useRef)(o),_=(0,c.useRef)(u),v=(0,c.useRef)(null);h.current=i,g.current=o,_.current=u,n&&(v.current=n),(0,c.useEffect)(()=>(r(()=>e=>{let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n),o=r+e.length;a(t=>t.slice(0,r)+e+t.slice(i)),s(o),f(o)}),()=>r(()=>()=>{})),[r]),(0,c.useEffect)(()=>{V.setContext(`commandLineHasText`,t&&i.length>0)},[t,i]);let y=(0,c.useCallback)(()=>{let e=g.current,t=_.current;if(e===t)return!1;let n=Math.min(e,t),r=Math.max(e,t);return a(e=>e.slice(0,n)+e.slice(r)),s(n),f(n),!0},[]),b=(0,c.useCallback)((e,t)=>{s(e),t||f(e)},[]);(0,c.useEffect)(()=>{let e=[];return e.push(V.registerCommand(`commandLine.execute`,()=>{let e=h.current.trim();e&&(v.current?.(e),a(``),s(0),f(0))})),e.push(V.registerCommand(`commandLine.clear`,()=>{g.current===_.current?(a(``),s(0),f(0)):f(g.current)})),e.push(V.registerCommand(`commandLine.deleteLeft`,()=>{let e=g.current;e===_.current?e>0&&(a(t=>t.slice(0,e-1)+t.slice(e)),s(e-1),f(e-1)):y()})),e.push(V.registerCommand(`commandLine.deleteRight`,()=>{if(!y()){let e=g.current;e<h.current.length&&a(t=>t.slice(0,e)+t.slice(e+1))}})),e.push(V.registerCommand(`commandLine.moveWordLeft`,()=>{let e=h.current,t=g.current;for(;t>0&&e[t-1]===` `;)t--;for(;t>0&&e[t-1]!==` `;)t--;b(t,!1)})),e.push(V.registerCommand(`commandLine.moveWordRight`,()=>{let e=h.current,t=g.current;for(;t<e.length&&e[t]!==` `;)t++;for(;t<e.length&&e[t]===` `;)t++;b(t,!1)})),e.push(V.registerCommand(`commandLine.home`,()=>b(0,!1))),e.push(V.registerCommand(`commandLine.end`,()=>b(h.current.length,!1))),e.push(V.registerCommand(`commandLine.selectAll`,()=>{h.current.length!==0&&(f(0),s(h.current.length))})),e.push(V.registerCommand(`commandLine.selectLeft`,()=>b(Math.max(0,g.current-1),!0))),e.push(V.registerCommand(`commandLine.selectRight`,()=>b(Math.min(h.current.length,g.current+1),!0))),e.push(V.registerCommand(`commandLine.selectHome`,()=>b(0,!0))),e.push(V.registerCommand(`commandLine.selectEnd`,()=>b(h.current.length,!0))),e.push(V.registerCommand(`commandLine.copy`,()=>{let e=g.current,t=_.current;if(e===t)return;let n=Math.min(e,t),r=Math.max(e,t);navigator.clipboard.writeText(h.current.slice(n,r)).catch(()=>{})})),e.push(V.registerCommand(`commandLine.cut`,()=>{let e=g.current,t=_.current;if(e===t)return;let n=Math.min(e,t),r=Math.max(e,t);navigator.clipboard.writeText(h.current.slice(n,r)).catch(()=>{}),y()})),e.push(V.registerCommand(`commandLine.paste`,()=>{navigator.clipboard.readText().then(e=>{if(!e)return;let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n),o=r+e.length;a(t=>t.slice(0,r)+e+t.slice(i)),s(o),f(o)}).catch(()=>{})})),()=>{for(let t of e)t()}},[y,b]),(0,c.useEffect)(()=>{if(!t)return;let e=[];return e.push(...Xe(V)),()=>{for(let t of e)t()}},[t]),(0,c.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.target;if(t&&!t.closest?.(`.${H[`terminal-container`]}`)&&!t.closest?.(`dialog`)&&!(e.ctrlKey||e.metaKey)&&!e.altKey&&!e.metaKey&&e.key.length===1){e.preventDefault(),e.stopPropagation();let t=g.current,n=_.current,r=Math.min(t,n),i=Math.max(t,n);a(t=>t.slice(0,r)+e.key+t.slice(i)),s(r+1),f(r+1)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let x=(0,c.useCallback)((e,t)=>{let n=m.current;if(!n)return h.current.length;let r=n.getBoundingClientRect(),i=document.elementFromPoint(e,t);if(!i||!n.contains(i))return e<r.left?0:h.current.length;let a=i;for(;a&&a!==n&&!a.hasAttribute(`data-start`);)a=a.parentElement;if(!a||a===n||!a.hasAttribute(`data-start`))return e<r.left?0:h.current.length;let o=parseInt(a.getAttribute(`data-start`),10),s=a.firstChild;if(!(s instanceof Text)||!s.textContent?.length)return o;let c=s.textContent.length,l=document.createRange(),u=0,d=c;for(;u<d;){let t=u+d>>1;l.setStart(s,t),l.setEnd(s,t+1),l.getBoundingClientRect().right<=e?u=t+1:d=t}if(u<c){l.setStart(s,u),l.setEnd(s,u+1);let t=l.getBoundingClientRect();e>=t.left+t.width/2&&u++}return Math.min(o+u,h.current.length)},[]),S=(0,c.useCallback)(e=>{e.preventDefault();let t=x(e.clientX,e.clientY);s(t),f(t),p.current=!0;let n=e=>{p.current&&s(x(e.clientX,e.clientY))},r=()=>{p.current=!1,window.removeEventListener(`mousemove`,n),window.removeEventListener(`mouseup`,r)};window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[x]),w=e.length>40?`…`+e.slice(e.length-39):e,T=Math.min(o,u)<Math.max(o,u),E;return E=T?o<=u?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-selected`],"data-start":o,children:i.slice(o,u)}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":u,children:i.slice(u)})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,u)}),(0,l.jsx)(`span`,{className:H[`command-line-selected`],"data-start":u,children:i.slice(u,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":o,children:i.slice(o)})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":0,children:i.slice(0,o)}),(0,l.jsx)(`span`,{className:H[`command-line-cursor`]}),(0,l.jsx)(`span`,{className:H[`command-line-text`],"data-start":o,children:i.slice(o)})]}),(0,l.jsxs)(`div`,{className:C(H,`command-line`,!t&&`hidden`),children:[(0,l.jsxs)(`span`,{className:H[`command-line-prompt`],children:[w,`>`]}),(0,l.jsx)(`span`,{ref:m,className:H[`command-line-input`],onMouseDown:S,children:E})]})}var it={"command-palette-dialog":`_command-palette-dialog_2w2i0_1`,"command-palette":`_command-palette_2w2i0_1`,"command-item-keybinding":`_command-item-keybinding_2w2i0_73`,"command-item-title":`_command-item-title_2w2i0_78`};function at({open:e,onOpenChange:t}){let n=(0,c.useRef)(null),[r,i]=(0,c.useState)(``),[a,o]=(0,c.useState)([]),[s,u]=(0,c.useState)([]);(0,c.useEffect)(()=>{if(e){let e=requestAnimationFrame(()=>{n.current?.focus()});return()=>cancelAnimationFrame(e)}},[e]),(0,c.useEffect)(()=>{let t=()=>{o(V.getAllCommands()),u(V.getKeybindings())};if(t(),e)return V.onChange(t)},[e]);let d=(0,c.useMemo)(()=>a.map(e=>({command:e,keybinding:s.find(t=>t.command===e.id),displayTitle:e.category?`${e.category}: ${e.title}`:e.title})),[a,s]),p=(0,c.useMemo)(()=>{let e=new Map;for(let t of d){let n=t.command.category??`General`;e.has(n)||e.set(n,[]),e.get(n).push(t)}return Array.from(e.entries()).sort((e,t)=>e[0].localeCompare(t[0]))},[d]),m=(0,c.useCallback)(e=>{t(!1),i(``),V.executeCommand(e)},[t]);(0,c.useEffect)(()=>{e||i(``)},[e]),(0,c.useEffect)(()=>{if(e)return v.push(`commandPalette`),()=>v.pop(`commandPalette`)},[e]);let h=(0,c.useCallback)(e=>{e.stopPropagation()},[]);return e?(0,l.jsx)(D,{className:it[`command-palette-dialog`],onClose:()=>t(!1),initialFocusRef:n,placement:`top`,children:(0,l.jsxs)(f.Command,{className:it[`command-palette`],onKeyDown:h,shouldFilter:!0,children:[(0,l.jsx)(f.Command.Input,{ref:n,value:r,onValueChange:i,placeholder:`Type a command or search...`,...b}),(0,l.jsxs)(f.Command.List,{children:[(0,l.jsx)(f.Command.Empty,{children:`No results found.`}),p.map(([e,t])=>(0,l.jsx)(f.Command.Group,{heading:e,children:t.map(({command:e,keybinding:t,displayTitle:n})=>(0,l.jsxs)(f.Command.Item,{value:n,onSelect:()=>m(e.id),children:[(0,l.jsx)(`span`,{className:it[`command-item-title`],children:e.title}),t&&(0,l.jsx)(`span`,{className:it[`command-item-keybinding`],children:xe(t)})]},e.id))},e))]})]})}):null}function ot(){let[e,t]=(0,d.useAtom)(Fe);return(0,c.useEffect)(()=>{let n=n=>{if(e&&n.key===`Escape`){n.preventDefault(),n.stopPropagation(),t(!1);return}if(e&&(n.metaKey||n.ctrlKey)&&n.key.toLowerCase()===`p`){n.preventDefault(),n.stopPropagation(),t(e=>!e);return}};return window.addEventListener(`keydown`,n,!0),()=>window.removeEventListener(`keydown`,n,!0)},[e]),{open:e,setOpen:t}}var st=/^[A-Za-z]:$/,ct=/^[A-Za-z]:\/$/;function lt(e){return e.startsWith(`//`)}function ut(e){return lt(e)?`//${e.slice(2).replace(/\/+/g,`/`)}`:e.replace(/\/+/g,`/`)}function dt(e){return e.startsWith(`/`)||lt(e)||/^[A-Za-z]:\//.test(e)}function U(e){if(!e)return e;let t=ut(e.replace(/\\/g,`/`));return t=t.replace(/\/\.\//g,`/`).replace(/^\.\//,``),t.endsWith(`/.`)&&(t=t.slice(0,-2)),st.test(t)&&(t=`${t}/`),t.length>1&&t.endsWith(`/`)&&!ct.test(t)&&(t=t.replace(/\/+$/,``)),t}function ft(e){let t=U(e);return lt(t)?t.slice(2).split(`/`).filter(Boolean).length===2:!1}function pt(e){let t=U(e);return t===`/`||ct.test(t)||ft(t)}function W(e){let t=U(e);if(!t)return`.`;if(pt(t))return t;let n=t.replace(/\/+$/,``),r=n.lastIndexOf(`/`);if(r<0)return`.`;if(r===0)return`/`;let i=n.slice(0,r);return st.test(i)?`${i}/`:i||`/`}function G(...e){let t=``;for(let n of e){if(!n)continue;let e=U(n);if(!t||dt(e)){t=e;continue}t=U(`${t.replace(/\/+$/,``)}/${e.replace(/^\/+/,``)}`)}return t}function mt(e){let t=ut(e.replace(/\\/g,`/`));if(!t)return t;let n=/^([A-Za-z]):(\/.*)?$/i.exec(t);if(n){let e=n[1].toUpperCase(),t=ht((n[2]??`/`).replace(/^\//,``).split(`/`).filter(e=>e!==``),!0);return t.length===0?`${e}:/`:`${e}:/${t.join(`/`)}`}if(lt(t)){let e=t.slice(2).split(`/`).filter(Boolean);if(e.length<2)return t;let n=`//${e[0]}/${e[1]}`,r=ht(e.slice(2),!0);return r.length?`${n}/${r.join(`/`)}`:n}let r=t.startsWith(`/`),i=ht((r?t.slice(1):t).split(`/`).filter(e=>e!==``),r);return r?i.length?`/${i.join(`/`)}`:`/`:i.length?i.join(`/`):`.`}function ht(e,t){let n=[];for(let r of e)r===`.`||r===``||(r===`..`?n.length>0?n.pop():t||n.push(`..`):n.push(r));return n}function K(e){let t=U(e);if(!t||pt(t))return``;let n=t.replace(/\/+$/,``),r=n.lastIndexOf(`/`),i=r<0?n:n.slice(r+1);return i.endsWith(`\0`)?i.slice(0,-1):i}var gt=new Set([`.exe`,`.com`,`.bat`,`.cmd`,`.msi`,`.scr`,`.ps1`,`.vbs`,`.js`,`.wsf`]);function _t(e,t){if(e&73)return!0;let n=t.lastIndexOf(`.`);if(n<0)return!1;let r=t.slice(n).toLowerCase();return gt.has(r)}var vt=`\0`;function yt(e){let t=e.indexOf(vt);if(t>=0){let n=e.slice(0,t),r=e.slice(t+1),i=yt(n);if(i.length>0&&(i[i.length-1]={label:i[i.length-1].label,path:n+vt}),r&&r!==`/`){let e=r.replace(/^\//,``).split(`/`).filter(Boolean),t=``;for(let r of e)t=t+`/`+r,i.push({label:r,path:n+vt+t})}return i}let n=U(e);if(!n)return[];let r=[];if(/^[A-Za-z]:\//.test(n)){let e=n.slice(0,3),t=n.slice(3),i=t?n.slice(0,2):e.replace(`/`,`\\`);if(r.push({label:i,path:e}),!t)return r;let a=t.split(`/`).filter(Boolean),o=e;for(let e of a)o=o.replace(/\/?$/,``)+`/`+e,r.push({label:e,path:o});return r}if(lt(n)){let e=n.slice(2).replace(/\/+$/,``).split(`/`).filter(Boolean);if(e.length>=2){r.push({label:`\\\\`+e[0]+`\\`+e[1],path:`//`+e[0]+`/`+e[1]});let t=`//`+e[0]+`/`+e[1];for(let n=2;n<e.length;n++)t=t+`/`+e[n],r.push({label:e[n],path:t})}return r}if(n.startsWith(`/`)){r.push({label:`/`,path:`/`});let e=n.slice(1).split(`/`).filter(Boolean),t=`/`;for(let n of e)t=t.replace(/\/?$/,``)+`/`+n,r.push({label:n,path:t});return r}let i=n.split(`/`).filter(Boolean),a=``;for(let e of i)a=a?a+`/`+e:e,r.push({label:e,path:a});return r}async function bt(e,t){return e.fs.readFile(U(t))}async function xt(e,t){return bt(e,t)}async function St(e,t){let n=await bt(e,t);return new TextDecoder().decode(n)}var Ct=0,wt=class{#e;#t=new Map;#n=new Map;#r=null;#i=0;constructor(e,t){this.bridge=e,this.#e=t}#a(){this.#r||=this.bridge.fs.onFsChange(e=>{this.#o(e)})}async observe(e){this.#a();let t=U(e);if(this.#n.has(t))return;let n=this.#i,r=`fso-${Ct++}`;this.#t.set(r,t),this.#n.set(t,r);let i=await this.bridge.fs.watch(r,t);if(n!==this.#i){i&&this.bridge.fs.unwatch(r);return}i||(this.#t.delete(r),this.#n.delete(t),this.#e([{root:{path:t},changedHandle:null,relativePathComponents:[],type:`errored`}],this))}unobserve(e){let t=U(e),n=this.#n.get(t);n!=null&&(this.bridge.fs.unwatch(n),this.#t.delete(n),this.#n.delete(t))}sync(e){this.#a();let t=new Set(e);for(let[e,n]of this.#n)t.has(e)||(this.bridge.fs.unwatch(n),this.#t.delete(n),this.#n.delete(e));for(let e of t)this.#n.has(e)||this.observe(e)}disconnect(){this.#i++;for(let e of this.#t.keys())this.bridge.fs.unwatch(e);this.#t.clear(),this.#n.clear(),this.#r&&=(this.#r(),null)}#o(e){let t=this.#t.get(e.watchId);if(!t)return;let n=e.name?{path:G(t,e.name),name:e.name}:null,r=e.name?[e.name]:[];this.#e([{root:{path:t},changedHandle:n,relativePathComponents:r,type:e.type}],this)}},Tt=new Map;function Et(e){return{async readFile(t){return xt(e,t)},async readFileRange(t,n,r){let i=await e.fs.open(t);try{return await e.fs.read(i,n,r)}finally{await e.fs.close(i)}}}}function Dt(e,t,n){let r=t+``+n,i=Tt.get(r);if(i)return i;let a=(async()=>{let r=await St(e,G(t,n)),i=Et(e);return new Promise((e,t)=>{let a=setTimeout(()=>{t(Error(`fsProvider "${n}" did not register within 5 s`))},5e3),o=new Blob([r],{type:`application/javascript`}),s=URL.createObjectURL(o),c=document.createElement(`script`);c.src=s,c.onerror=()=>{clearTimeout(a),URL.revokeObjectURL(s),t(Error(`Failed to load fsProvider script "${n}"`))},c.onload=()=>{URL.revokeObjectURL(s),clearTimeout(a);let r=window.__dotdirProviderReady;if(typeof r!=`function`){t(Error(`fsProvider "${n}" did not set window.__dotdirProviderReady`));return}window.__dotdirProviderReady=void 0;try{e(r(i))}catch(e){t(e)}},document.head.appendChild(c)})})();return a.catch(()=>Tt.delete(r)),Tt.set(r,a),a}function Ot(){Tt.clear()}var kt=null;function At(e){kt=e}function q(){return kt}var jt=null;function Mt(e){jt=e}function Nt(){return jt??document.documentElement}function Pt(e){return e.includes(`\0`)}function Ft(e){let t=e.lastIndexOf(`\0`);if(t<0)throw Error(`Not a container path: `+JSON.stringify(e));let n=e.slice(0,t),r=e.slice(t+1);return{containerFile:n,innerPath:r.startsWith(`/`)?r:`/`+r}}function It(e,t){let n=t.startsWith(`/`)?t:`/`+t;return n.length>1&&n.endsWith(`/`)&&(n=n.slice(0,-1)),e+`\0`+n}var Lt=[],Rt=(0,c.createContext)(null);function zt(e){return e.split(`/`).map(e=>encodeURIComponent(e)).join(`/`)}function Bt(e){return e.replace(/\\/g,`/`).replace(/(^|\/)([A-Za-z]):(?=\/|$)/g,`$1$2/`)}function Vt(e,t){let n=e.startsWith(`/`)?e:`/${e}`;return t===`extension-directory`?`/_ext${n}`:n}var Ht=(e,t=`file`)=>{let n=Vt(e,t);return`__TAURI_INTERNALS__`in window?typeof navigator<`u`&&/Windows/i.test(navigator.userAgent)?`http://vfs.localhost${zt(Bt(n))}`:`vfs://vfs${zt(n)}`:`${window.location.origin}/vfs/${zt(n.replace(/^\/+/,``))}`};function Ut(e){return Lt.push(e),()=>{let t=Lt.lastIndexOf(e);t>=0&&Lt.splice(t,1)}}function Wt(){return(0,c.useContext)(Rt)??Ht}function Gt(e,t){if(e===`*`||e===`*.*`)return!0;if(e.startsWith(`*.`)){let n=e.slice(1);return t.toLowerCase().endsWith(n.toLowerCase())}return t.toLowerCase()===e.toLowerCase()}function Kt(e,t){return e.some(e=>Gt(e,t))}function qt(e,t){let n=e.filter(e=>Kt(e.contribution.patterns,t));return n.length===0?null:(n.sort((e,t)=>(t.contribution.priority??0)-(e.contribution.priority??0)),n[0])}var Jt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}getAll(){return this.entries}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Yt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}getAll(){return this.entries}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Xt=class{entries=[];listeners=new Set;clear(){this.entries=[]}register(e,t){this.entries.push({contribution:e,extensionDirPath:t})}resolve(e){return qt(this.entries,e)}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){for(let e of this.listeners)e()}},Zt=new Jt,Qt=new Yt,$t=new Xt;function en(e){Zt.clear(),Qt.clear(),$t.clear();for(let t of e){if(t.viewers)for(let e of t.viewers)Zt.register(e,t.dirPath);if(t.editors)for(let e of t.editors)Qt.register(e,t.dirPath);if(t.fsProviders)for(let e of t.fsProviders)$t.register(e,t.dirPath)}Zt.notifyListeners(),Qt.notifyListeners(),$t.notifyListeners()}var tn=[{cssVar:`--bg`,keys:[`editor.background`]},{cssVar:`--fg`,keys:[`editor.foreground`,`foreground`]},{cssVar:`--bg-secondary`,keys:[`sideBar.background`,`editorGroupHeader.tabsBackground`]},{cssVar:`--fg-secondary`,keys:[`sideBar.foreground`,`foreground`]},{cssVar:`--fg-muted`,keys:[`descriptionForeground`,`tab.inactiveForeground`]},{cssVar:`--border`,keys:[`panel.border`,`sideBar.border`,`widget.border`,`editorGroup.border`]},{cssVar:`--border-active`,keys:[`focusBorder`]},{cssVar:`--entry-hover`,keys:[`list.hoverBackground`]},{cssVar:`--entry-selected`,keys:[`list.activeSelectionBackground`,`list.focusBackground`,`selection.background`]},{cssVar:`--entry-selected-fg`,keys:[`list.activeSelectionForeground`,`list.focusForeground`]},{cssVar:`--entry-selected-inactive`,keys:[`list.inactiveSelectionBackground`]},{cssVar:`--entry-selected-inactive-fg`,keys:[`list.inactiveSelectionForeground`]},{cssVar:`--error-bg`,keys:[`inputValidation.errorBackground`]},{cssVar:`--error-fg`,keys:[`errorForeground`,`editorError.foreground`]},{cssVar:`--accent`,keys:[`button.background`,`textLink.foreground`,`focusBorder`]},{cssVar:`--accent-fg`,keys:[`button.foreground`]},{cssVar:`--action-bar-border`,keys:[`activityBar.border`]},{cssVar:`--action-bar-bg`,keys:[`activityBar.background`]},{cssVar:`--action-bar-fg`,keys:[`activityBar.foreground`]},{cssVar:`--action-bar-badge-bg`,keys:[`activityBarBadge.background`]},{cssVar:`--action-bar-badge-fg`,keys:[`activityBarBadge.foreground`]}];async function nn(e,t,n=3){let r=(0,p.parse)(await St(e,t),void 0,{allowTrailingComma:!0});if(r.include&&n>0){let i=G(W(t),r.include);try{let t=await nn(e,i,n-1);r.colors={...t.colors,...r.colors},!r.tokenColors&&t.tokenColors&&(r.tokenColors=t.tokenColors)}catch{}}return r}var rn=[],an=0,on=null,sn=[];function cn(){return on}function ln(e){return sn.push(e),()=>{sn=sn.filter(t=>t!==e)}}function un(){if(on)for(let e of sn)e(on)}function dn(e){fn();let t=Nt().style;for(let n of tn)for(let r of n.keys){let i=e[r];if(i){t.setProperty(n.cssVar,i),rn.push(n.cssVar);break}}}function fn(){an++;let e=Nt().style;for(let t of rn)e.removeProperty(t);rn=[];let t=on!==null;if(on=null,t)for(let e of sn)e({kind:Nt().dataset.theme===`light`?`light`:`dark`})}function pn(e){return e===`vs`||e===`hc-light`?`light`:`dark`}async function mn(e,t,n){let r=++an,i=await nn(e,t);return r===an?(i.colors&&dn(i.colors),on={kind:n?pn(n):i.type===`light`?`light`:`dark`,colors:i.colors,tokenColors:i.tokenColors},un(),i):i}var hn={"file-viewer":`_file-viewer_1gb4m_1`,"file-viewer-inline":`_file-viewer-inline_1gb4m_17`,"file-viewer-overlay":`_file-viewer-overlay_1gb4m_30`,"file-editor-overlay":`_file-editor-overlay_1gb4m_31`,"file-editor":`_file-editor_1gb4m_31`};async function gn(e,t,n,r){let{containerFile:i,innerPath:a}=Ft(t),o=$t.resolve(K(i));if(!o)throw Error(`No fsProvider registered for "${K(i)}"`);if(o.contribution.runtime===`backend`&&e.fsProvider){let t=G(o.extensionDirPath,o.contribution.entry);return e.fsProvider.readFileRange(t,i,a,n,r)}let s=await Dt(e,o.extensionDirPath,o.contribution.entry);if(!s.readFileRange)throw Error(`Provider does not support readFileRange`);return s.readFileRange(i,a,n,r)}function _n(e){let{extensionDirPath:t,entry:n,kind:r,props:i,onClose:a,className:o,style:s,active:u}=e,d=B(),f=Wt(),p=(0,c.useRef)(null),[m,h]=(0,c.useState)(null),[g,_]=(0,c.useState)(!0),y=(0,c.useRef)(a);y.current=a;let b=r===`viewer`&&!!i.inline,x=r===`viewer`&&!b,S=(0,c.useRef)(null),C=(0,c.useRef)(!1),w=(0,c.useRef)(!1);(0,c.useEffect)(()=>{b&&(S.current=document.activeElement,C.current=!1,w.current=!1)},[b]),(0,c.useEffect)(()=>{if(!x||g||w.current)return;w.current=!0;let e=p.current;e&&setTimeout(()=>{try{e.focus(),e.contentWindow?.focus?.()}catch{}},0)},[x,g]),(0,c.useEffect)(()=>{if(!b)return;let e=e=>{let t=e;if(!t)return!1;let n=t.tagName?.toLowerCase();return n===`input`||n===`textarea`||n===`select`||n===`button`||t.isContentEditable},t=t=>{if(t.key===`Tab`&&!(t.ctrlKey||t.metaKey||t.altKey)&&!t.shiftKey){if(C.current){t.preventDefault(),t.stopPropagation();return}if(v.current===`panel`&&!e(t.target)){t.preventDefault(),t.stopPropagation(),C.current=!0,v.push(`viewer`);try{p.current?.focus(),p.current?.contentWindow?.focus?.()}catch{}}}};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[b]);let T=(0,c.useRef)(null),E=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(u!==!1)return;let e=p.current;if(e){let t=r===`viewer`?{filePath:``,fileName:``,fileSize:0}:{filePath:``,fileName:``,langId:`plaintext`};try{e.contentWindow?.postMessage({type:`dotdir:update`,props:t},`*`)}catch{}}let t=T.current;t&&(d.fs.close(t.fd).catch(()=>{}),T.current=null)},[u,r]);let D=(0,c.useRef)(e.kind===`viewer`?e.onExecuteCommand:void 0);e.kind===`viewer`&&(D.current=e.onExecuteCommand);let O=(0,c.useRef)(e.kind===`editor`?e.onDirtyChange:void 0);e.kind===`editor`&&(O.current=e.onDirtyChange);let k=(0,c.useCallback)(()=>({async readFile(e){let t=U(e);return Pt(t)?gn(d,t,0,64*1024*1024):d.fs.readFile(t)},async readFileRange(e,t,n){let r=U(e);if(Pt(r))return gn(d,r,t,n);let i=T.current,a=i;if(!a||a.path!==r){if(i)try{await d.fs.close(i.fd)}catch{}a={fd:await d.fs.open(r),size:(await d.fs.stat(r)).size,path:r},T.current=a}let o=Math.max(0,Math.floor(t)),s=Math.max(0,Math.floor(n)),c=Math.max(0,a.size-o),l=Math.min(s,c);return l===0?new ArrayBuffer(0):d.fs.read(a.fd,o,l)},async readFileText(e){let t=U(e);if(Pt(t)){let t=await this.readFile(e);return new TextDecoder().decode(t)}return St(d,t)},async statFile(e){let t=U(e);if(Pt(t))return{size:(await gn(d,t,0,64*1024*1024)).byteLength,mtimeMs:0};let n=await d.fs.stat(t),r=T.current;return r&&r.path===t&&r.size!==n.size&&(r.size=n.size),n},onFileChange(e){let t=E.current;if(!t)return()=>{};let n=U(t),r=W(n),i=K(n),a=`viewer-${Math.random().toString(36).slice(2)}`,o=!1,s=d.fs.onFsChange(t=>{if(!o&&!(t.watchId!==a||!t.name)&&t.name===i&&(t.type===`modified`||t.type===`appeared`)){let t=T.current;t&&t.path===n&&(d.fs.close(t.fd).catch(()=>{}),T.current=null),e()}});return(async()=>{await d.fs.watch(a,r)||(o=!0,s())})(),()=>{o||(o=!0,d.fs.unwatch(a),s())}},async writeFile(e,t){await d.fs.writeFile(e,t)},async getTheme(){return d.theme.get()},getColorTheme(){return cn()},onThemeChange(e){let t=ln(e);return()=>t()},onClose(){y.current()},async executeCommand(e,t){let n=D.current;if(!n)throw Error(`No command handler registered`);return n(e,t)},registerCommand(e,t){return V.registerCommand(e,t)},registerKeybinding(e){return $e(V,{command:e.command,key:e.key,mac:e.mac,when:e.when})},async getExtensionResourceUrl(e){throw U(e).replace(/^\/+/,``).includes(`..`)?Error(`Invalid extension resource path`):Error(`Extension resource URL not available in mount-point mode`)}}),[]),A=(0,c.useCallback)(()=>{let e={};try{let t=getComputedStyle(Nt());for(let n=0;n<t.length;n++){let r=t[n];if(!r||!r.startsWith(`--`))continue;let i=t.getPropertyValue(r);i&&(e[r]=i.trim())}}catch{}return e},[]);(0,c.useEffect)(()=>{let e=!1,a=p.current;if(!a)return;_(!0),h(null);let o=k(),s=a.contentWindow;if(!s)return;let c=G(t,U(n.replace(/^\.\//,``))||`index.js`),l=f(c),u=1,m=new Map,g=new Map,y=new Map,x=new Map,w=t=>{if(t.source!==s)return;let n=t.data;if(!(!n||typeof n!=`object`)){if(n.type===`ext:commandResult`){let e=Number(n.callId),t=m.get(e);if(!t)return;m.delete(e),n.error?t.reject(Error(String(n.error))):t.resolve();return}if(n.type===`ext:call`){let e=n.id,t=String(n.method??``),r=Array.isArray(n.args)?n.args:[];(async()=>{try{let n=o[t];if(typeof n!=`function`)throw Error(`Host method not found: ${t}`);let i=await n.apply(o,r);s.postMessage({type:`host:reply`,id:e,result:i},`*`)}catch(t){let n=t instanceof Error?t.message:t&&typeof t==`object`&&`message`in t?String(t.message):String(t);s.postMessage({type:`host:reply`,id:e,error:n},`*`)}})().catch(()=>{});return}if(n.type===`ext:subscribe`){let e=String(n.cbId??``),t=String(n.method??``);if(!e||g.has(e))return;if(t===`onFileChange`){if(!o.onFileChange)return;let t=o.onFileChange(()=>{try{s.postMessage({type:`host:callback`,cbId:e},`*`)}catch{}});g.set(e,t);return}if(t===`onThemeChange`){if(!o.onThemeChange)return;let t=o.onThemeChange(t=>{try{s.postMessage({type:`host:callback`,cbId:e,payload:t},`*`)}catch{}});g.set(e,t);return}return}if(n.type===`ext:unsubscribe`){let e=String(n.cbId??``),t=g.get(e);if(t){try{t()}catch{}g.delete(e)}return}if(n.type===`ext:registerCommand`){let e=String(n.handlerId??``),t=String(n.commandId??``);if(!e||!t||y.has(e))return;let r=V.registerCommand(t,async(...t)=>{let n=u++;await new Promise((r,i)=>{m.set(n,{resolve:r,reject:i}),s.postMessage({type:`host:runCommand`,handlerId:e,callId:n,args:t},`*`)})});y.set(e,r);return}if(n.type===`ext:unregisterCommand`){let e=String(n.handlerId??``),t=y.get(e);if(t){try{t()}catch{}y.delete(e)}return}if(n.type===`ext:registerKeybinding`){let e=String(n.bindingId??``),t=n.binding;if(!e||!t||typeof t!=`object`||x.has(e))return;let r=$e(V,{command:t.command,key:t.key,mac:t.mac,when:t.when});x.set(e,r);return}if(n.type===`ext:unregisterKeybinding`){let e=String(n.bindingId??``),t=x.get(e);if(t){try{t()}catch{}x.delete(e)}return}if(n.type===`dotdir:bootstrap-ready`)ee();else if(n.type===`dotdir:ready`)e||_(!1);else if(n.type===`dotdir:error`)e||(h(String(n.message??`Extension error`)),_(!1));else if(n.type===`dotdir:iframeKeyDown`)try{let e=String(n.key??``).toLowerCase();if(b&&e===`tab`&&C.current){C.current=!1;try{v.pop(`viewer`)}catch{}try{S.current?.focus?.()}catch{}return}if(b&&!C.current)return;let t={key:n.key,ctrlKey:!!n.ctrlKey,metaKey:!!n.metaKey,altKey:!!n.altKey,shiftKey:!!n.shiftKey,repeat:!!n.repeat,preventDefault(){},stopPropagation(){}};V.handleKeyboardEvent(t)}catch{}}};window.addEventListener(`message`,w);let D=()=>{try{a.contentWindow?.postMessage({type:`dotdir:themeVars`,themeVars:A()},`*`)}catch{}},O=ln(()=>D()),j=!1,ee=async()=>{if(j)return;j=!0,E.current=i.filePath;let t;try{t=await St(d,c)}catch(t){e||(h(`Failed to read extension entry: ${t instanceof Error?t.message:t&&typeof t==`object`&&`message`in t?String(t.message):String(t)}`),_(!1));return}a.contentWindow?.postMessage({type:`dotdir:init`,kind:r,entryUrl:l,entryScript:t,props:i,themeVars:A(),colorTheme:o.getColorTheme?.()??null},`*`)},M=()=>{setTimeout(()=>{!e&&!j&&(h(`Extension bootstrap did not respond`),_(!1))},3e3)};return a.addEventListener(`load`,M),()=>{e=!0,window.removeEventListener(`message`,w),a.removeEventListener(`load`,M),O();try{a.contentWindow?.postMessage({type:`dotdir:dispose`},`*`)}catch{}for(let[,e]of g)try{e()}catch{}g.clear();for(let[,e]of y)try{e()}catch{}y.clear();for(let[,e]of x)try{e()}catch{}x.clear(),m.clear();let t=T.current;t&&(d.fs.close(t.fd).catch(()=>{}),T.current=null)}},[t,n,r,k,A]);let j=(0,c.useRef)(i);if((0,c.useEffect)(()=>{if(u===!1){j.current=null;return}let e=p.current;if(!(!e||g||m)&&j.current!==i){j.current=i,E.current=i.filePath;try{e.contentWindow?.postMessage({type:`dotdir:update`,props:i},`*`)}catch{}}},[i,r,g,m,u]),m)return(0,l.jsxs)(`div`,{className:o,style:{...s,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--error-fg, #f44)`},children:[`Failed to load `,r,`: `,m]});let ee=f(W(G(t,U(n.replace(/^\.\//,``))||`index.js`)),`extension-directory`);return(0,l.jsxs)(`div`,{className:o,style:{...s,position:`relative`},children:[g&&(0,l.jsxs)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--fg-muted, #888)`},children:[`Loading `,r,`…`]}),ee&&(0,l.jsx)(`iframe`,{ref:p,src:ee,sandbox:`allow-scripts allow-top-navigation-to-custom-protocols`,style:{width:`100%`,height:`100%`,border:`none`,display:g?`none`:`block`,background:`transparent`},title:`${r} extension`})]})}function vn({extensionDirPath:e,entry:t,filePath:n,fileName:r,fileSize:i,inline:a,visible:o,onClose:s,onExecuteCommand:u}){let d=(0,c.useRef)(!1),f=(0,c.useRef)(null),p=o??!0,m=(0,c.useCallback)(()=>{v.set(`panel`);let e=(t=0)=>{let n=f.current;if(n&&n.isConnected)try{n.focus({preventScroll:!0});return}catch{try{n.focus();return}catch{}}let r=q();if(r){r.focus();return}t<2&&requestAnimationFrame(()=>e(t+1))};requestAnimationFrame(()=>e())},[]),h=(0,c.useCallback)(()=>{s(),m()},[s,m]);(0,c.useEffect)(()=>{if(!a){if(p)d.current||=(f.current=document.activeElement,v.push(`viewer`),!0);else if(d.current){try{v.pop(`viewer`)}catch{}d.current=!1}}},[a,p]),(0,c.useEffect)(()=>()=>{if(d.current){try{v.pop(`viewer`)}catch{}d.current=!1}},[]);let g=(0,c.useMemo)(()=>({filePath:n,fileName:r,fileSize:i,inline:a}),[n,r,i,a]),_=(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`6px 10px`,borderBottom:`1px solid var(--border, #333)`,flexShrink:0,minHeight:38,boxSizing:`border-box`},children:[(0,l.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},title:r,children:r}),(0,l.jsx)(`button`,{type:`button`,title:`Close (Esc)`,onClick:h,style:{background:`transparent`,border:`none`,cursor:`pointer`,fontSize:18,padding:`0 8px`,flexShrink:0,color:`inherit`},"aria-label":`Close`,children:`×`})]}),y=(0,l.jsx)(_n,{kind:`viewer`,extensionDirPath:e,entry:t,props:g,active:p,onClose:h,onExecuteCommand:u,style:{width:`100%`,height:`100%`}});return a?(0,l.jsx)(`div`,{className:`${hn[`file-viewer`]} ${hn[`file-viewer-inline`]}`,style:{display:`flex`,flexDirection:`column`,height:`100%`},children:(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:y})}):(0,l.jsx)(`div`,{className:hn[`file-viewer-overlay`],style:{display:p?`flex`:`none`},children:(0,l.jsxs)(`div`,{className:hn[`file-viewer`],style:{display:`flex`,flexDirection:`column`,padding:0},children:[_,(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:y})]})})}function yn({extensionDirPath:e,entry:t,filePath:n,fileName:r,langId:i,visible:a,onClose:o,onDirtyChange:s,languages:u,grammars:d}){let[f,p]=(0,c.useState)(i),m=(0,c.useRef)(!1),h=(0,c.useRef)(null),g=a??!0,_=(0,c.useCallback)(()=>{v.set(`panel`);let e=(t=0)=>{let n=h.current;if(n&&n.isConnected)try{n.focus({preventScroll:!0});return}catch{try{n.focus();return}catch{}}let r=q();if(r){r.focus();return}t<2&&requestAnimationFrame(()=>e(t+1))};requestAnimationFrame(()=>e())},[]),y=(0,c.useCallback)(()=>{o(),_()},[o,_]);(0,c.useEffect)(()=>{p(i)},[i]),(0,c.useEffect)(()=>{if(g)m.current||=(h.current=document.activeElement,v.push(`editor`),!0);else if(m.current){try{v.pop(`editor`)}catch{}m.current=!1}},[g]),(0,c.useEffect)(()=>()=>{if(m.current){try{v.pop(`editor`)}catch{}m.current=!1}},[]);let b=(0,c.useMemo)(()=>({filePath:n,fileName:r,langId:f,extensionDirPath:e,languages:u,grammars:d,inline:!1}),[n,r,f,e,u,d]),x=e=>{let t=e.target.value;p(t)},S=(0,c.useMemo)(()=>{let e=u??[],t=new Set;return e.filter(e=>t.has(e.id)?!1:(t.add(e.id),!0))},[u]),C=S.length>0;return(0,l.jsx)(`div`,{className:hn[`file-editor-overlay`],style:{display:g?`flex`:`none`},children:(0,l.jsxs)(`div`,{className:hn[`file-editor`],style:{display:`flex`,flexDirection:`column`,padding:0},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`6px 10px`,borderBottom:`1px solid var(--border, #333)`,flexShrink:0,minHeight:38,boxSizing:`border-box`},children:[(0,l.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},title:r,children:r}),C&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`label`,{htmlFor:`editor-lang-select`,style:{whiteSpace:`nowrap`},children:`Language:`}),(0,l.jsxs)(`select`,{id:`editor-lang-select`,value:f,onChange:x,style:{minWidth:120,padding:`2px 6px`},children:[(0,l.jsx)(`option`,{value:`plaintext`,children:`Plain Text`}),S.map(e=>(0,l.jsx)(`option`,{value:e.id,children:e.aliases?.[0]??e.id},e.id))]})]}),(0,l.jsx)(`button`,{type:`button`,title:`Close (Esc)`,onClick:y,style:{background:`transparent`,border:`none`,cursor:`pointer`,fontSize:18,padding:`0 8px`,flexShrink:0,color:`inherit`},"aria-label":`Close`,children:`×`})]}),(0,l.jsx)(`div`,{style:{flex:1,minHeight:0},children:(0,l.jsx)(_n,{kind:`editor`,extensionDirPath:e,entry:t,props:b,active:g,onClose:y,onDirtyChange:s,style:{width:`100%`,height:`100%`}})})]})})}var bn="(function(){let e=/^[A-Za-z]:$/,t=/^[A-Za-z]:\\/$/;function n(e){return e.startsWith(`//`)}function r(e){return n(e)?`//${e.slice(2).replace(/\\/+/g,`/`)}`:e.replace(/\\/+/g,`/`)}function i(e){return e.startsWith(`/`)||n(e)||/^[A-Za-z]:\\//.test(e)}function a(n){if(!n)return n;let i=r(n.replace(/\\\\/g,`/`));return i=i.replace(/\\/\\.\\//g,`/`).replace(/^\\.\\//,``),i.endsWith(`/.`)&&(i=i.slice(0,-2)),e.test(i)&&(i=`${i}/`),i.length>1&&i.endsWith(`/`)&&!t.test(i)&&(i=i.replace(/\\/+$/,``)),i}function o(e){let t=a(e);return n(t)?t.slice(2).split(`/`).filter(Boolean).length===2:!1}function s(e){let n=a(e);return n===`/`||t.test(n)||o(n)}function c(t){let n=a(t);if(!n)return`.`;if(s(n))return n;let r=n.replace(/\\/+$/,``),i=r.lastIndexOf(`/`);if(i<0)return`.`;if(i===0)return`/`;let o=r.slice(0,i);return e.test(o)?`${o}/`:o||`/`}function l(...e){let t=``;for(let n of e){if(!n)continue;let e=a(n);if(!t||i(e)){t=e;continue}t=a(`${t.replace(/\\/+$/,``)}/${e.replace(/^\\/+/,``)}`)}return t}let u=0,d=new Map,f=new Map,p=new Map,m=new Map;function h(e){return new Promise((t,n)=>{let r=u++;d.set(r,{resolve:t,reject:n}),self.postMessage({type:`readFile`,id:r,path:e})})}function g(e){return`${e.ref.publisher}.${e.ref.name}.${e.ref.version}`}function _(e,t){let n=e.manifest.activationEvents??[];return n.length===0?t===`*`:n.includes(`*`)||n.includes(t)}async function v(e){let t=await h(e);if(t==null)throw Error(`Browser script not found: ${e}`);let n=URL.createObjectURL(new Blob([t],{type:`text/javascript`}));try{return await import(n)}finally{URL.revokeObjectURL(n)}}async function y(e){let t=g(e);if(p.has(t)||!e.manifest.browser)return;let n=a(e.manifest.browser).replace(/^\\/+/,``),r=await v(l(e.dirPath,n)),i=r.activate??r.default?.activate,o=r.deactivate??r.default?.deactivate;if(typeof i!=`function`){console.warn(`[ExtHost] ${t} browser entry has no activate() export`);return}let s=[],c={commands:{registerCommand:(e,t)=>{m.set(e,t);let n={dispose:()=>{m.get(e)===t&&m.delete(e)}};return s.push(n),n},registerKeybinding:e=>({dispose(){}})}},u={subscriptions:s,dotdir:c};self.dotdir=c,await i(u),p.set(t,{subscriptions:s,deactivate:o})}async function b(e){for(let t of f.values())if(t.manifest.browser&&_(t,e))try{await y(t)}catch(e){console.error(`[ExtHost] activate failed:`,g(t),e)}}async function x(e,t){await b(`onCommand:${e}`);let n=m.get(e);n&&await n(...t)}function S(e){return`${e.publisher}-${e.name}-${e.version}`}async function C(e){try{let t=await h(l(e,`package.json`));if(t===null)return null;let n=JSON.parse(t),r={publisher:n.publisher||`unknown`,name:n.name||`unknown`,version:n.version||`0.0.0`},i,a;if(n.contributes?.iconTheme?.path){let t=l(e,n.contributes.iconTheme.path);i=t,a=c(t)}let o=n.contributes?.languages,s;if(n.contributes?.grammars?.length){s=[];for(let t of n.contributes.grammars)try{let n=l(e,t.path);s.push({contribution:t,path:n})}catch{}}let u;n.contributes?.themes?.length&&(u=n.contributes.themes.map((t,n)=>({id:t.id||`${t.label}#${n}`,label:t.label,uiTheme:t.uiTheme,jsonPath:l(e,t.path)})));let d=n.contributes?.viewers,f=n.contributes?.editors,p=n.contributes?.commands,m=n.contributes?.keybindings,g=n.contributes?.fsProviders,_;if(n.contributes?.shellIntegrations?.length){_=[];for(let t of n.contributes.shellIntegrations){let n=await h(l(e,t.scriptPath));n!==null&&_.push({shell:t.shell,label:t.label,script:n,executableCandidates:t.executableCandidates??[],platforms:t.platforms,hiddenCdTemplate:t.hiddenCdTemplate,cwdEscape:t.cwdEscape,lineEnding:t.lineEnding,spawnArgs:t.spawnArgs,scriptArg:t.scriptArg})}}return{ref:r,manifest:n,dirPath:e,iconThemeFssPath:i,iconThemeBasePath:a,colorThemes:u,languages:o,grammarRefs:s,viewers:d,editors:f,commands:p,keybindings:m,fsProviders:g,shellIntegrations:_}}catch{return null}}async function w(e){let t=[],n=l(e,`.dotdir`,`extensions`),r;try{let e=await h(l(n,`extensions.json`));if(e===null)return t;let i=JSON.parse(e);r=Array.isArray(i)?i:[]}catch{return t}for(let e of r){if(!e.publisher||!e.name||!e.version)continue;let r=await C(e.path?a(e.path):l(n,S(e)));r&&t.push(r)}console.log(`[ExtHost] loaded`,t.length,`extensions; FSS:`,t.filter(e=>e.iconThemeFss).map(e=>`${e.ref.publisher}.${e.ref.name}`),`vscode:`,t.filter(e=>e.vscodeIconThemePath).map(e=>`${e.ref.publisher}.${e.ref.name}`)),f.clear();for(let e of t)f.set(g(e),e);return t}self.onmessage=e=>{let t=e.data;if(t.type===`start`)w(t.homePath).then(async e=>{await b(`*`),self.postMessage({type:`loaded`,extensions:e})}).catch(e=>{let t=e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e);self.postMessage({type:`error`,message:t})});else if(t.type===`activateByEvent`){let e=Number(t.requestId);b(String(t.event??``)).then(()=>{self.postMessage({type:`requestResult`,requestId:e,result:null})}).catch(t=>{let n=t instanceof Error?t.message:String(t);self.postMessage({type:`requestResult`,requestId:e,error:n})})}else if(t.type===`executeCommand`){let e=Number(t.requestId);x(String(t.command??``),Array.isArray(t.args)?t.args:[]).then(()=>{self.postMessage({type:`requestResult`,requestId:e,result:null})}).catch(t=>{let n=t instanceof Error?t.message:String(t);self.postMessage({type:`requestResult`,requestId:e,error:n})})}else if(t.type===`readFileResult`){let e=d.get(t.id);e&&(d.delete(t.id),t.error?e.resolve(null):e.resolve(t.data))}}})();",xn=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,bn],{type:`text/javascript;charset=utf-8`});function Sn(e){let t;try{if(t=xn&&(self.URL||self.webkitURL).createObjectURL(xn),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(bn),{name:e?.name})}}var Cn=class{worker=null;homePath=null;listeners=[];starting=!1;nextRequestId=1;pendingRequests=new Map;constructor(e){this.bridge=e}onLoaded(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}async start(){if(!this.starting){this.starting=!0;try{this.homePath||=await this.bridge.utils.getHomePath(),this.spawnWorker()}finally{this.starting=!1}}}async restart(){this.worker?.terminate(),this.worker=null;for(let[,e]of this.pendingRequests)e.reject(Error(`Extension host restarted`));this.pendingRequests.clear(),await this.start()}dispose(){this.worker?.terminate(),this.worker=null;for(let[,e]of this.pendingRequests)e.reject(Error(`Extension host disposed`));this.pendingRequests.clear(),this.listeners=[]}async activateByEvent(e){await this.request({type:`activateByEvent`,event:e})}async executeCommand(e,t=[]){await this.request({type:`executeCommand`,command:e,args:t})}spawnWorker(){let e=new Sn;e.onmessage=t=>{let n=t.data;if(n.type===`readFile`)this.handleFileRead(e,n.id,n.path);else if(n.type===`loaded`){let e=n.extensions,t=e.filter(e=>e.iconThemeFss).map(e=>`${e.ref.publisher}.${e.ref.name}`),r=e.filter(e=>e.vscodeIconThemePath).map(e=>`${e.ref.publisher}.${e.ref.name}`);console.log(`[ExtHost] loaded`,e.length,`extensions; FSS:`,t,`vscode:`,r);for(let t of this.listeners)t(e)}else if(n.type===`error`)console.error(`[ExtensionHost] Worker error:`,n.message);else if(n.type===`requestResult`){let e=Number(n.requestId),t=this.pendingRequests.get(e);if(!t)return;this.pendingRequests.delete(e),n.error?t.reject(Error(String(n.error))):t.resolve(n.result)}},e.onerror=e=>{console.error(`[ExtensionHost] Worker runtime error:`,e)},this.worker=e,(async()=>{e.postMessage({type:`start`,homePath:this.homePath})})()}async request(e){if(this.worker||await this.start(),!this.worker)throw Error(`Extension host is not running`);let t=this.nextRequestId++;return await new Promise((n,r)=>{this.pendingRequests.set(t,{resolve:n,reject:r}),this.worker.postMessage({...e,requestId:t})})}async handleFileRead(e,t,n){try{let r=U(n),i=await St(this.bridge,r);console.log(`[ExtHost] readFile ok`,r),e.postMessage({type:`readFileResult`,id:t,data:i})}catch(r){console.error(`[ExtHost] readFile failed`,n,r),e.postMessage({type:`readFileResult`,id:t,data:null,error:`read failed`})}}},wn=(0,d.atom)(e=>{let t=e(ve);if(!t)throw Error(`Bridge not initialized.`);return new Cn(t)});function Tn(){return(0,d.useAtomValue)(wn)}var En=`https://dotdir.dev`;function Dn(e){return`${e.publisher}-${e.name}-${e.version}`}async function On(e){return G(await e.utils.getHomePath(),`.dotdir`,`extensions`)}async function kn(e){let t=await On(e);try{let n=await St(e,G(t,`extensions.json`)),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}async function An(e,t){let n=await On(e);await e.fs.writeFile(G(n,`extensions.json`),JSON.stringify(t,null,2))}async function jn(e=``,t=1){let n=new URLSearchParams({page:String(t),pageSize:`30`});e&&n.set(`q`,e);let r=await fetch(`${En}/api/extensions/search?${n}`);if(!r.ok)throw Error(`Failed to search marketplace`);return r.json()}async function Mn(e){let t=new DecompressionStream(`deflate-raw`),n=t.writable.getWriter(),r=t.readable.getReader();n.write(e),n.close();let i=[];for(;;){let{done:e,value:t}=await r.read();if(e)break;i.push(t)}let a=i.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.length;return o}async function Nn(e){let t=new Uint8Array(e),n=new Map,r=e=>t[e]|t[e+1]<<8,i=e=>(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0,a=-1;for(let e=t.length-22;e>=Math.max(0,t.length-65557);e--)if(i(e)===101010256){a=e;break}if(a===-1)throw Error(`Invalid ZIP archive`);let o=i(a+16),s=r(a+10),c=o;for(let e=0;e<s&&i(c)===33639248;e++){let e=r(c+10),a=i(c+20),o=r(c+28),s=r(c+30),l=r(c+32),u=i(c+42),d=new TextDecoder().decode(t.slice(c+46,c+46+o));if(c+=46+o+s+l,d.endsWith(`/`))continue;let f=r(u+26),p=r(u+28),m=u+30+f+p,h=t.slice(m,m+a),g;if(e===0)g=h;else if(e===8)g=await Mn(h);else continue;n.set(d,g)}return n}function Pn(e){let t=[...e];if(t.length===0)return``;let n=t[0],r=n.indexOf(`/`);if(r===-1)return``;let i=n.slice(0,r+1);return t.every(e=>e.startsWith(i))?i:``}async function Fn(e,t,n,r){let i=`${En}/api/extensions/${t}/${n}/${r}/download`,a=await fetch(i);if(!a.ok)throw Error(`Download failed: ${a.statusText}`);let o=await Nn(await a.arrayBuffer()),s=await On(e),c={publisher:t,name:n,version:r},l=G(s,Dn(c)),u=Pn(o.keys());for(let[t,n]of o){let r=u?t.slice(u.length):t;r&&await e.fs.writeBinaryFile(G(l,r),n)}let d=(await kn(e)).filter(e=>!(e.publisher===t&&e.name===n));d.push(c),await An(e,d)}async function In(e){let t=new Uint8Array(e),n=new Map,r=e=>t[e]|t[e+1]<<8,i=e=>(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0,a=-1;for(let e=t.length-22;e>=Math.max(0,t.length-65557);e--)if(i(e)===101010256){a=e;break}if(a===-1)throw Error(`Invalid VSIX archive`);let o=i(a+16),s=r(a+10),c=o;for(let e=0;e<s&&i(c)===33639248;e++){let e=r(c+10),a=i(c+20),o=r(c+28),s=r(c+30),l=r(c+32),u=i(c+42),d=new TextDecoder().decode(t.slice(c+46,c+46+o));if(c+=46+o+s+l,d.endsWith(`/`)||!d.startsWith(`extension/`))continue;let f=r(u+26),p=r(u+28),m=u+30+f+p,h=t.slice(m,m+a),g;if(e===0)g=h;else if(e===8)g=await Mn(h);else continue;let _=d.slice(10);_&&n.set(_,g)}return n}async function Ln(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),3e4),o;try{o=await fetch(r,{signal:i.signal})}catch(e){if(clearTimeout(a),e instanceof Error&&e.name===`AbortError`)throw Error(`Download timed out - VS Code marketplace may be blocked by CORS`);let t=e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e);throw Error(`Download failed: ${t}`)}if(clearTimeout(a),!o.ok)throw Error(`Download failed: ${o.status} ${o.statusText}`);let s=await In(await o.arrayBuffer()),c=s.get(`package.json`);if(!c)throw Error(`Invalid VSIX: no package.json`);let l=JSON.parse(new TextDecoder().decode(c)).version||`0.0.0`,u=await On(e),d={publisher:t,name:n,version:l},f=G(u,Dn(d));for(let[t,n]of s){let r=G(f,t),i=t.split(`.`).pop()?.toLowerCase()??``;[`json`,`txt`,`md`,`js`,`ts`,`css`,`html`,`xml`,`yaml`,`yml`,`tmLanguage`,`tmGrammar`].includes(i)||t.endsWith(`.tmLanguage.json`)||t.endsWith(`.language-configuration.json`)?await e.fs.writeFile(r,new TextDecoder().decode(n)):await e.fs.writeBinaryFile(r,n)}let p=(await kn(e)).filter(e=>!(e.publisher===t&&e.name===n));p.push(d),await An(e,p)}async function Rn(e,t){if(!await e.fs.exists(t))return;let n=await e.fs.delete.start([t]);await new Promise((t,r)=>{let i=e.fs.delete.onProgress(e=>{if(e.deleteId!==n)return;let a=e.event;a.kind===`done`?(i(),t()):a.kind===`error`&&(i(),r(Error(a.message)))})})}async function zn(e,t,n){let r=await kn(e),i=r.find(e=>e.publisher===t&&e.name===n);i&&!i.path&&await Rn(e,G(await On(e),Dn(i))),await An(e,r.filter(e=>!(e.publisher===t&&e.name===n)))}function Bn(e){return e.iconThemeFss||e.iconThemeFssPath||e.vscodeIconThemePath?`${e.ref.publisher}.${e.ref.name}`:null}function Vn(e,t){return`${e.ref.publisher}.${e.ref.name}:${t}`}function Hn(e,t){for(let n of e)if(n.colorThemes){for(let e of n.colorThemes)if(Vn(n,e.id)===t)return{ext:n,theme:e}}return null}var Un=`https://marketplace.visualstudio.com/_apis/public/gallery`;async function Wn(e,t=1){let n={filters:[{criteria:[{filterType:8,value:`Microsoft.VisualStudio.Code`},...e?[{filterType:10,value:e}]:[]],pageNumber:t,pageSize:30,sortBy:e?0:4,sortOrder:0}],assetTypes:[],flags:914},r=await fetch(`${Un}/extensionquery`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json;api-version=7.1-preview.1`},body:JSON.stringify(n)});if(!r.ok)throw Error(`VS Code marketplace request failed`);let i=(await r.json()).results?.[0]?.extensions??[];return{extensions:i,total:i.length}}function Gn(e){return e.statistics?.find(e=>e.statisticName===`install`)?.value??0}function Kn(e){return e.versions?.[0]?.version??null}function qn(e){let t=e.versions?.[0];return t?`${t.assetUri}/Microsoft.VisualStudio.Services.VSIXPackage`:null}function Jn(e){let t=e.versions?.[0];return t?`${t.assetUri}/Microsoft.VisualStudio.Services.Icons.Default`:null}async function Yn(e,t){let{name:n,getPath:r,validate:i,defaultValue:a,onLoad:o}=t,s=a,c=null,l=null,u=null,d=new Set;function f(){for(let e of d)try{e(s)}catch(e){console.error(`[${n}] Listener error:`,e)}}async function m(){try{let t=c??await r();c=t;let a=await St(e,t),l=[],u=(0,p.parse)(a,l,{allowTrailingComma:!0});if(l.length>0){console.error(`[${n}] Parse errors:`);for(let e of l)console.error(` - ${(0,p.printParseErrorCode)(e.error)} at offset ${e.offset}`);return}let d=i(u);if(d===null)return;s=d,console.log(`[${n}] Loaded`),o?.(s),f()}catch(e){e&&typeof e.message==`string`&&(e.message===`ENOENT`||e.message?.includes(`not found`)||e.name===`NotFoundError`)?(s=a,o?.(s),f()):console.error(`[${n}] Failed to load:`,e)}}async function h(){try{let t=c??await r();c=t;let i=W(t),a=K(t);l=`${n}-${Date.now()}`,await e.fs.watch(l,i),u=e.fs.onFsChange(e=>{e.watchId===l&&e.name===a&&(console.log(`[${n}] Detected change, reloading...`),m())})}catch(e){console.error(`[${n}] Failed to setup watch:`,e)}}return await m(),await h(),{getValue:()=>s,setValue(e){s=e},onChange(e){return d.add(e),()=>d.delete(e)},async dispose(){if(u&&=(u(),null),l){try{await e.fs.unwatch(l)}catch{}l=null}d.clear()}}}var Xn=null,Zn=null,Qn=null;function $n(e){return typeof e!=`object`||!e||Array.isArray(e)?(console.error(`[userSettings] settings.json must be an object`),null):e}function er(e,t){if(!Xn)return;let n={...Xn.getValue(),...t};Xn.setValue(n),Qn&&clearTimeout(Qn),Qn=setTimeout(()=>{Qn=null,tr(e,n)},500)}async function tr(e,t){try{Zn||=G(await e.utils.getHomePath(),`.dotdir`,`settings.json`),await e.fs.writeFile(Zn,JSON.stringify(t,null,2))}catch(e){console.error(`[userSettings] Failed to save settings:`,e)}}function nr(e){return Xn?.onChange(e)??(()=>{})}async function rr(e){return Xn=await Yn(e,{name:`userSettings`,getPath:async()=>G(await e.utils.getHomePath(),`.dotdir`,`settings.json`),validate:$n,defaultValue:{}}),Xn.getValue()}var ir=(0,d.atom)({}),ar=(0,d.atom)(!1),or=null;function sr(){let e=(0,d.useAtomValue)(ir),t=(0,d.useAtomValue)(ar),n=(0,d.useSetAtom)(ir),r=(0,d.useSetAtom)(ar),i=B();return(0,c.useEffect)(()=>(or||=rr(i),or.then(e=>{n(e),r(!0)}),nr(n)),[n,r,i]),{settings:e,ready:t,updateSettings:(0,c.useCallback)(e=>{n(t=>({...t,...e})),er(i,e)},[n])}}var cr=`_active_jpq35_71`,lr=`_install_jpq35_261`,ur=`_uninstall_jpq35_266`,dr=`_installed_jpq35_276`,J={"ext-panel":`_ext-panel_jpq35_1`,"ext-panel-header":`_ext-panel-header_jpq35_17`,"ext-panel-title":`_ext-panel-title_jpq35_28`,"ext-panel-close":`_ext-panel-close_jpq35_34`,"ext-panel-tabs":`_ext-panel-tabs_jpq35_49`,"ext-tab":`_ext-tab_jpq35_55`,active:cr,"ext-search":`_ext-search_jpq35_76`,"ext-source-selector":`_ext-source-selector_jpq35_82`,"ext-source-btn":`_ext-source-btn_jpq35_88`,"ext-error":`_ext-error_jpq35_129`,"ext-list":`_ext-list_jpq35_137`,"ext-empty":`_ext-empty_jpq35_143`,"ext-item":`_ext-item_jpq35_150`,"ext-icon":`_ext-icon_jpq35_162`,"ext-info":`_ext-info_jpq35_184`,"ext-name":`_ext-name_jpq35_189`,"ext-publisher":`_ext-publisher_jpq35_198`,"ext-desc":`_ext-desc_jpq35_204`,"ext-meta":`_ext-meta_jpq35_214`,"ext-theme-badge":`_ext-theme-badge_jpq35_223`,"ext-actions":`_ext-actions_jpq35_234`,"ext-btn":`_ext-btn_jpq35_241`,install:lr,uninstall:ur,installed:dr,"ext-color-themes":`_ext-color-themes_jpq35_281`,"ext-color-theme-btn":`_ext-color-theme-btn_jpq35_288`,"ext-color-theme-indicator":`_ext-color-theme-indicator_jpq35_296`};function fr(e){return e instanceof Error?e.message:e&&typeof e==`object`&&`message`in e?String(e.message):String(e)}function pr(){let e=B(),t=(0,d.useSetAtom)(Se),[n,r]=(0,d.useAtom)(Ce),[i,a]=(0,d.useAtom)(we),o=(0,d.useAtomValue)(Te),s=(0,c.useRef)(null),u=Tn(),[f,p]=(0,c.useState)(`marketplace`),[m,h]=(0,c.useState)(`vscode`),[g,_]=(0,c.useState)(``),[y,x]=(0,c.useState)([]),[S,w]=(0,c.useState)([]),[T,E]=(0,c.useState)(!1),[O,k]=(0,c.useState)(null),[A,j]=(0,c.useState)(``),ee=(0,c.useRef)(null),{settings:M,updateSettings:N}=sr();(0,c.useEffect)(()=>(v.push(`modal`),()=>{v.pop(`modal`)}),[t]);let te=(0,c.useCallback)(async(e,t)=>{E(!0),j(``);try{t===`vscode`?(w((await Wn(e)).extensions),x([])):(x((await jn(e)).extensions),w([]))}catch{j(`Could not reach ${t===`vscode`?`VS Code`:`.dir`} marketplace`)}E(!1)},[]);(0,c.useEffect)(()=>{te(``,m)},[te,m]);let ne=e=>{_(e),ee.current&&clearTimeout(ee.current),ee.current=setTimeout(()=>te(e,m),300)},P=async t=>{let n=qn(t);if(n){k(`${t.publisher.publisherName}.${t.extensionName}`),j(``);try{await Ln(e,t.publisher.publisherName,t.extensionName,n),u.restart()}catch(e){j(`Install failed: ${fr(e)}`)}k(null)}},F=new Set(o.map(e=>`${e.ref.publisher}.${e.ref.name}`)),I=async t=>{if(t.latest_version){k(`${t.publisher.username}.${t.name}`),j(``);try{await Fn(e,t.publisher.username,t.name,t.latest_version.version),u.restart()}catch(e){j(`Install failed: ${fr(e)}`)}k(null)}},L=async t=>{let o=`${t.publisher}.${t.name}`;k(o),j(``);try{await zn(e,t.publisher,t.name);let s=!1;n===o&&(delete M.iconTheme,r(void 0),s=!0),i?.startsWith(o+`:`)&&(delete M.colorTheme,a(void 0),s=!0),s&&N(M),u.restart()}catch(e){j(`Uninstall failed: ${fr(e)}`)}k(null)},re=async e=>{let t=Bn(e);if(!t)return;let i=t===n?void 0:t;i?M.iconTheme=i:delete M.iconTheme,N(M),r(i)},ie=async(e,t)=>{let n=Vn(e,t),r=n===i?void 0:n;r?M.colorTheme=r:delete M.colorTheme,N(M),a(r)},ae=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(1)} MB`;return(0,l.jsxs)(D,{className:J[`ext-panel`],onClose:()=>t(!1),initialFocusRef:s,children:[(0,l.jsxs)(`div`,{className:J[`ext-panel-header`],children:[(0,l.jsx)(`span`,{className:J[`ext-panel-title`],children:`Extensions`}),(0,l.jsx)(`button`,{className:J[`ext-panel-close`],onClick:()=>t(!1),children:`✕`})]}),(0,l.jsxs)(`div`,{className:J[`ext-panel-tabs`],children:[(0,l.jsx)(`button`,{className:C(J,`ext-tab`,f===`marketplace`&&`active`),onClick:()=>p(`marketplace`),children:`Marketplace`}),(0,l.jsxs)(`button`,{className:C(J,`ext-tab`,f===`installed`&&`active`),onClick:()=>p(`installed`),children:[`Installed (`,o.length,`)`]})]}),f===`marketplace`&&(0,l.jsxs)(`div`,{className:J[`ext-search`],children:[(0,l.jsxs)(`div`,{className:J[`ext-source-selector`],children:[(0,l.jsx)(`button`,{className:C(J,`ext-source-btn`,m===`vscode`&&`active`),onClick:()=>{h(`vscode`),_(``)},children:`VS Code`}),(0,l.jsx)(`button`,{className:C(J,`ext-source-btn`,m===`dotdir`&&`active`),onClick:()=>{h(`dotdir`),_(``)},children:`.dir`})]}),(0,l.jsx)(`input`,{ref:s,type:`text`,placeholder:`Search extensions...`,value:g,onChange:e=>ne(e.target.value),...b})]}),A&&(0,l.jsx)(`div`,{className:J[`ext-error`],children:A}),(0,l.jsxs)(`div`,{className:J[`ext-list`],children:[f===`marketplace`&&m===`dotdir`&&(T?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`Searching...`}):y.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions found`}):y.map(e=>{let t=`${e.publisher.username}.${e.name}`,n=F.has(t),r=O===t;return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:e.icon_url?(0,l.jsx)(`img`,{src:e.icon_url,width:36,height:36,alt:``}):e.display_name[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.display_name}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.publisher.display_name||e.publisher.username}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.description}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[e.latest_version&&(0,l.jsxs)(`span`,{children:[`v`,e.latest_version.version]}),e.latest_version&&(0,l.jsx)(`span`,{children:ae(e.latest_version.archive_size)}),(0,l.jsxs)(`span`,{children:[`↓ `,e.total_downloads]})]})]}),(0,l.jsx)(`div`,{className:J[`ext-actions`],children:n?(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`installed`),disabled:!0,children:`Installed`}):(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`install`),disabled:r||!e.latest_version,onClick:()=>I(e),children:r?`Installing...`:`Install`})})]},e.id)})),f===`marketplace`&&m===`vscode`&&(T?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`Searching...`}):S.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions found`}):S.map(e=>{let t=`${e.publisher.publisherName}.${e.extensionName}`,n=F.has(t),r=O===t,i=Kn(e),a=Jn(e),o=Gn(e);return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:a?(0,l.jsx)(`img`,{src:a,width:36,height:36,alt:``}):e.displayName[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.displayName}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.publisher.displayName||e.publisher.publisherName}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.shortDescription}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[i&&(0,l.jsxs)(`span`,{children:[`v`,i]}),(0,l.jsxs)(`span`,{children:[`↓ `,o.toLocaleString()]})]})]}),(0,l.jsx)(`div`,{className:J[`ext-actions`],children:n?(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`installed`),disabled:!0,children:`Installed`}):(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`install`),disabled:r||!i,onClick:()=>P(e),children:r?`Installing...`:`Install`})})]},t)})),f===`installed`&&(o.length===0?(0,l.jsx)(`div`,{className:J[`ext-empty`],children:`No extensions installed`}):o.map(e=>{let t=`${e.ref.publisher}.${e.ref.name}`,r=O===t,a=Bn(e),o=a!=null&&a===n,s=e.colorThemes&&e.colorThemes.length>0;return(0,l.jsxs)(`div`,{className:J[`ext-item`],children:[(0,l.jsx)(`div`,{className:J[`ext-icon`],children:e.iconUrl?(0,l.jsx)(`img`,{src:e.iconUrl,width:36,height:36,alt:``}):(e.manifest.displayName||e.manifest.name)[0]?.toUpperCase()??`?`}),(0,l.jsxs)(`div`,{className:J[`ext-info`],children:[(0,l.jsx)(`div`,{className:J[`ext-name`],children:e.manifest.displayName||e.manifest.name}),(0,l.jsx)(`div`,{className:J[`ext-publisher`],children:e.manifest.publisher}),(0,l.jsx)(`div`,{className:J[`ext-desc`],children:e.manifest.description||``}),(0,l.jsxs)(`div`,{className:J[`ext-meta`],children:[(0,l.jsxs)(`span`,{children:[`v`,e.ref.version]}),a&&(0,l.jsx)(`span`,{className:C(J,`ext-theme-badge`,o&&`active`),children:o?`● Icon theme`:`Icon theme`}),s&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.colorThemes.length,` color theme`,e.colorThemes.length>1?`s`:``]}),e.languages&&e.languages.length>0&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.languages.length,` language`,e.languages.length>1?`s`:``]}),e.grammarRefs&&e.grammarRefs.length>0&&(0,l.jsxs)(`span`,{className:J[`ext-theme-badge`],children:[e.grammarRefs.length,` grammar`,e.grammarRefs.length>1?`s`:``]})]}),s&&(0,l.jsx)(`div`,{className:J[`ext-color-themes`],children:e.colorThemes.map(t=>{let n=Vn(e,t.id)===i;return(0,l.jsxs)(`button`,{className:C(J,`ext-btn`,`ext-color-theme-btn`,n?`installed`:`install`),onClick:()=>ie(e,t.id),children:[(0,l.jsx)(`span`,{className:J[`ext-color-theme-indicator`],"data-ui-theme":t.uiTheme}),t.label,n&&` ●`]},t.id)})})]}),(0,l.jsxs)(`div`,{className:J[`ext-actions`],children:[a&&(0,l.jsx)(`button`,{className:C(J,`ext-btn`,o?`installed`:`install`),onClick:()=>re(e),children:o?`Deactivate`:`Activate`}),(0,l.jsx)(`button`,{className:C(J,`ext-btn`,`uninstall`),disabled:r,onClick:()=>L(e.ref),children:r?`Removing...`:`Uninstall`})]})]},t)}))]})]})}var Y=new class{tail=Promise.resolve();enqueue(e){this.tail=this.tail.then(async()=>{try{let t=e();t&&typeof t.then==`function`&&(await t,await new Promise(e=>setTimeout(e,0)))}catch{}})}},mr=200,hr=new Map,gr=new Map;function _r(e){return e.startsWith(`/`)||/^[A-Za-z]:/.test(e)}function vr(e){return`data:image/svg+xml,${encodeURIComponent(e)}`}function yr(e){let t=hr.get(e);t!==void 0&&(hr.delete(e),hr.set(e,t))}function br(){for(;hr.size>mr;){let e=hr.keys().next().value;hr.delete(e)}}async function xr(e,t){let n=U(t);try{let r=await St(e,n);hr.set(t,vr(r)),br()}catch(e){throw console.warn(`[IconCache] loadIconAbsolute failed`,n,e),e}}async function Sr(e){let t=await fetch(`/icons/${e}`);if(!t.ok)return;let n=await t.text();hr.set(e,vr(n)),br()}function Cr(e){return e===`_default`||e.startsWith(`_default_`)}async function wr(e,t){let n=[];for(let r of t){if(Cr(r)||hr.has(r))continue;if(gr.has(r)){n.push(gr.get(r));continue}let t=(async()=>{try{_r(r)?await xr(e,r):await Sr(r)}catch(e){console.warn(`[IconCache] loadIcons failed for`,r.slice(-60),e)}finally{gr.delete(r)}})();gr.set(r,t),n.push(t)}await Promise.all(n)}function Tr(e){let t=hr.get(e);return t!==void 0&&yr(e),t}function Er(e){return`data:image/svg+xml,${encodeURIComponent(e)}`}var Dr=class{theme=null;loadingIcons=new Map;themeKind=`dark`;constructor(e){this.bridge=e}async load(e){let t=await St(this.bridge,e);this.theme={json:JSON.parse(t),basePath:W(e),iconCache:new Map}}setTheme(e){this.themeKind=e}clear(){this.theme=null,this.loadingIcons.clear()}isLoaded(){return this.theme!==null}getEffectiveMap(e,t){return this.themeKind===`light`&&t!==void 0?t:e}resolveIcon(e,t,n,r,i){if(!this.theme)return null;let{json:a}=this.theme,o=this.themeKind===`light`?a.light:void 0,s;if(t){let t=this.getEffectiveMap(n?a.folderNamesExpanded:a.folderNames,n?o?.folderNamesExpanded:o?.folderNames);s=t?.[e]?t[e]:t?.[e.toLowerCase()]?t[e.toLowerCase()]:r?this.getEffectiveMap(n?a.rootFolderExpanded:a.rootFolder,void 0)??this.getEffectiveMap(n?a.folderExpanded:a.folder,n?o?.folderExpanded:o?.folder):this.getEffectiveMap(n?a.folderExpanded:a.folder,n?o?.folderExpanded:o?.folder)}else{let t=this.getEffectiveMap(a.fileNames,o?.fileNames);if(t?.[e])s=t[e];else if(t?.[e.toLowerCase()])s=t[e.toLowerCase()];else{let t=this.getEffectiveMap(a.fileExtensions,o?.fileExtensions);if(t){let n=e.split(`.`);for(let e=1;e<n.length;e++){let r=n.slice(e).join(`.`).toLowerCase();if(t[r]){s=t[r];break}}}!s&&i&&a.languageIds?.[i]&&(s=a.languageIds[i]),s||=this.getEffectiveMap(a.file,o?.file)}}if(!s)return null;let c=a.iconDefinitions[s];return c?.iconPath?G(this.theme.basePath,c.iconPath):null}async loadIcon(e){if(!this.theme)return null;let t=this.theme.iconCache.get(e);if(t)return t;let n=this.loadingIcons.get(e);if(n)return n;let r=(async()=>{try{let t=await xt(this.bridge,e),n=e.split(`.`).pop()?.toLowerCase()??``,r;if(n===`svg`)r=Er(new TextDecoder().decode(t));else{let e=n===`png`?`image/png`:n===`jpg`||n===`jpeg`?`image/jpeg`:n===`webp`?`image/webp`:`application/octet-stream`,i=new Blob([t],{type:e});r=URL.createObjectURL(i)}return this.theme?.iconCache.set(e,r),r}catch{return null}finally{this.loadingIcons.delete(e)}})();return this.loadingIcons.set(e,r),r}async preloadIcons(e){await Promise.all(e.map(e=>this.loadIcon(e)))}getCachedIcon(e){return this.theme?.iconCache.get(e)??null}},Or=(0,d.atom)(e=>{let t=e(ve);if(!t)throw Error(`Bridge not initialized.`);return new Dr(t)});function kr(){return(0,d.useAtomValue)(Or)}var Ar={folder:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M10%204H4c-1.1%200-2%20.9-2%202v12c0%201.1.9%202%202%202h16c1.1%200%202-.9%202-2V8c0-1.1-.9-2-2-2h-8l-2-2z%22%2F%3E%3C%2Fsvg%3E`,folderOpen:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M20%206h-8l-2-2H4c-1.1%200-2%20.9-2%202v12c0%201.1.9%202%202%202h16c1.1%200%202-.9%202-2V8c0-1.1-.9-2-2-2zm0%2012H4V8h16v10z%22%2F%3E%3C%2Fsvg%3E`,file:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%2390a4ae%22%3E%3Cpath%20d%3D%22M14%202H6c-1.1%200-2%20.9-2%202v16c0%201.1.9%202%202%202h12c1.1%200%202-.9%202-2V8l-6-6zm4%2018H6V4h7v5h5v11z%22%2F%3E%3C%2Fsvg%3E`},jr=`fss`,Mr=[];function Nr(){let e=kr();return{setIconTheme:async(t,n)=>{if(jr=t,t===`vscode`&&n)try{await e.load(n),Ir()}catch{jr=`none`,Ir()}else e.clear(),Ir()}}}function Pr(){let e=kr();return{setIconThemeKind:t=>{e.setTheme(t)}}}function Fr(e){return Mr.push(e),()=>{Mr=Mr.filter(t=>t!==e)}}function Ir(){for(let e of Mr)e()}function Lr(){let e=kr();return(t,n,r,i,a,o)=>{let s=n?r?Ar.folderOpen:Ar.folder:Ar.file;if(jr===`vscode`&&e.isLoaded()){let o=e.resolveIcon(t,n,r,i,a);return o?{path:o,url:e.getCachedIcon(o),fallbackUrl:s}:{path:`_default`,url:s,fallbackUrl:s}}return jr===`fss`&&o?{path:o,url:Tr(o)??null,fallbackUrl:s}:{path:`_default`,url:s,fallbackUrl:s}}}function Rr(){let e=kr(),t=B();return async n=>{jr===`vscode`&&e.isLoaded()?await e.preloadIcons(n):await wr(t,n)}}function zr(){let e=kr();return t=>t===`_default_folder`?Ar.folder:t===`_default_folder_open`?Ar.folderOpen:t===`_default_file`?Ar.file:jr===`vscode`&&e.isLoaded()?e.getCachedIcon(t):Tr(t)??null}var Br=null;function Vr(e){Br=e}function Hr(){return Br}var Ur=(0,m.createLayer)(`
114
114
  folder { font-weight: bold; }
115
115
 
116
116
  @sorting {
package/dist/dotdir.mjs CHANGED
@@ -3811,14 +3811,14 @@ function On(e) {
3811
3811
  x(!0), y(null);
3812
3812
  let o = N(), s = i.contentWindow;
3813
3813
  if (!s) return;
3814
- let c = W(n.replace(/^\.\//, "")) || "index.js", l = K(t, c), u = g(l), d = /\.mjs(?:\?|$)/i.test(c), f = 1, p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), S = (t) => {
3814
+ let c = K(t, W(n.replace(/^\.\//, "")) || "index.js"), l = g(c), u = 1, d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), v = (t) => {
3815
3815
  if (t.source !== s) return;
3816
3816
  let n = t.data;
3817
3817
  if (!(!n || typeof n != "object")) {
3818
3818
  if (n.type === "ext:commandResult") {
3819
- let e = Number(n.callId), t = p.get(e);
3819
+ let e = Number(n.callId), t = d.get(e);
3820
3820
  if (!t) return;
3821
- p.delete(e), n.error ? t.reject(Error(String(n.error))) : t.resolve();
3821
+ d.delete(e), n.error ? t.reject(Error(String(n.error))) : t.resolve();
3822
3822
  return;
3823
3823
  }
3824
3824
  if (n.type === "ext:call") {
@@ -3846,7 +3846,7 @@ function On(e) {
3846
3846
  }
3847
3847
  if (n.type === "ext:subscribe") {
3848
3848
  let e = String(n.cbId ?? ""), t = String(n.method ?? "");
3849
- if (!e || m.has(e)) return;
3849
+ if (!e || f.has(e)) return;
3850
3850
  if (t === "onFileChange") {
3851
3851
  if (!o.onFileChange) return;
3852
3852
  let t = o.onFileChange(() => {
@@ -3857,7 +3857,7 @@ function On(e) {
3857
3857
  }, "*");
3858
3858
  } catch {}
3859
3859
  });
3860
- m.set(e, t);
3860
+ f.set(e, t);
3861
3861
  return;
3862
3862
  }
3863
3863
  if (t === "onThemeChange") {
@@ -3871,28 +3871,28 @@ function On(e) {
3871
3871
  }, "*");
3872
3872
  } catch {}
3873
3873
  });
3874
- m.set(e, t);
3874
+ f.set(e, t);
3875
3875
  return;
3876
3876
  }
3877
3877
  return;
3878
3878
  }
3879
3879
  if (n.type === "ext:unsubscribe") {
3880
- let e = String(n.cbId ?? ""), t = m.get(e);
3880
+ let e = String(n.cbId ?? ""), t = f.get(e);
3881
3881
  if (t) {
3882
3882
  try {
3883
3883
  t();
3884
3884
  } catch {}
3885
- m.delete(e);
3885
+ f.delete(e);
3886
3886
  }
3887
3887
  return;
3888
3888
  }
3889
3889
  if (n.type === "ext:registerCommand") {
3890
3890
  let e = String(n.handlerId ?? ""), t = String(n.commandId ?? "");
3891
- if (!e || !t || v.has(e)) return;
3891
+ if (!e || !t || p.has(e)) return;
3892
3892
  let r = H.registerCommand(t, async (...t) => {
3893
- let n = f++;
3893
+ let n = u++;
3894
3894
  await new Promise((r, i) => {
3895
- p.set(n, {
3895
+ d.set(n, {
3896
3896
  resolve: r,
3897
3897
  reject: i
3898
3898
  }), s.postMessage({
@@ -3903,42 +3903,42 @@ function On(e) {
3903
3903
  }, "*");
3904
3904
  });
3905
3905
  });
3906
- v.set(e, r);
3906
+ p.set(e, r);
3907
3907
  return;
3908
3908
  }
3909
3909
  if (n.type === "ext:unregisterCommand") {
3910
- let e = String(n.handlerId ?? ""), t = v.get(e);
3910
+ let e = String(n.handlerId ?? ""), t = p.get(e);
3911
3911
  if (t) {
3912
3912
  try {
3913
3913
  t();
3914
3914
  } catch {}
3915
- v.delete(e);
3915
+ p.delete(e);
3916
3916
  }
3917
3917
  return;
3918
3918
  }
3919
3919
  if (n.type === "ext:registerKeybinding") {
3920
3920
  let e = String(n.bindingId ?? ""), t = n.binding;
3921
- if (!e || !t || typeof t != "object" || b.has(e)) return;
3921
+ if (!e || !t || typeof t != "object" || m.has(e)) return;
3922
3922
  let r = ut(H, {
3923
3923
  command: t.command,
3924
3924
  key: t.key,
3925
3925
  mac: t.mac,
3926
3926
  when: t.when
3927
3927
  });
3928
- b.set(e, r);
3928
+ m.set(e, r);
3929
3929
  return;
3930
3930
  }
3931
3931
  if (n.type === "ext:unregisterKeybinding") {
3932
- let e = String(n.bindingId ?? ""), t = b.get(e);
3932
+ let e = String(n.bindingId ?? ""), t = m.get(e);
3933
3933
  if (t) {
3934
3934
  try {
3935
3935
  t();
3936
3936
  } catch {}
3937
- b.delete(e);
3937
+ m.delete(e);
3938
3938
  }
3939
3939
  return;
3940
3940
  }
3941
- if (n.type === "dotdir:bootstrap-ready") M();
3941
+ if (n.type === "dotdir:bootstrap-ready") D();
3942
3942
  else if (n.type === "dotdir:ready") e || x(!1);
3943
3943
  else if (n.type === "dotdir:error") e || (y(String(n.message ?? "Extension error")), x(!1));
3944
3944
  else if (n.type === "dotdir:iframeKeyDown") try {
@@ -3968,55 +3968,55 @@ function On(e) {
3968
3968
  } catch {}
3969
3969
  }
3970
3970
  };
3971
- window.addEventListener("message", S);
3972
- let w = () => {
3971
+ window.addEventListener("message", v);
3972
+ let b = () => {
3973
3973
  try {
3974
3974
  i.contentWindow?.postMessage({
3975
3975
  type: "dotdir:themeVars",
3976
3976
  themeVars: P()
3977
3977
  }, "*");
3978
3978
  } catch {}
3979
- }, D = bn(() => w()), j = !1, M = async () => {
3980
- if (j) return;
3981
- j = !0, k.current = a.filePath;
3979
+ }, S = bn(() => b()), w = !1, D = async () => {
3980
+ if (w) return;
3981
+ w = !0, k.current = a.filePath;
3982
3982
  let t;
3983
- if (d) try {
3984
- t = await Nt(h, l);
3983
+ try {
3984
+ t = await Nt(h, c);
3985
3985
  } catch (t) {
3986
- e || (y(`Failed to read ESM entry: ${t instanceof Error ? t.message : t && typeof t == "object" && "message" in t ? String(t.message) : String(t)}`), x(!1));
3986
+ e || (y(`Failed to read extension entry: ${t instanceof Error ? t.message : t && typeof t == "object" && "message" in t ? String(t.message) : String(t)}`), x(!1));
3987
3987
  return;
3988
3988
  }
3989
3989
  i.contentWindow?.postMessage({
3990
3990
  type: "dotdir:init",
3991
3991
  kind: r,
3992
- entryUrl: u,
3992
+ entryUrl: l,
3993
3993
  entryScript: t,
3994
3994
  props: a,
3995
3995
  themeVars: P(),
3996
3996
  colorTheme: o.getColorTheme?.() ?? null
3997
3997
  }, "*");
3998
- }, F = () => {
3998
+ }, j = () => {
3999
3999
  setTimeout(() => {
4000
- !e && !j && (y("Extension bootstrap did not respond"), x(!1));
4000
+ !e && !w && (y("Extension bootstrap did not respond"), x(!1));
4001
4001
  }, 3e3);
4002
4002
  };
4003
- return i.addEventListener("load", F), () => {
4004
- e = !0, window.removeEventListener("message", S), i.removeEventListener("load", F), D();
4003
+ return i.addEventListener("load", j), () => {
4004
+ e = !0, window.removeEventListener("message", v), i.removeEventListener("load", j), S();
4005
4005
  try {
4006
4006
  i.contentWindow?.postMessage({ type: "dotdir:dispose" }, "*");
4007
4007
  } catch {}
4008
- for (let [, e] of m) try {
4008
+ for (let [, e] of f) try {
4009
4009
  e();
4010
4010
  } catch {}
4011
- m.clear();
4012
- for (let [, e] of v) try {
4011
+ f.clear();
4012
+ for (let [, e] of p) try {
4013
4013
  e();
4014
4014
  } catch {}
4015
- v.clear();
4016
- for (let [, e] of b) try {
4015
+ p.clear();
4016
+ for (let [, e] of m) try {
4017
4017
  e();
4018
4018
  } catch {}
4019
- b.clear(), p.clear();
4019
+ m.clear(), d.clear();
4020
4020
  let t = O.current;
4021
4021
  t && (h.fs.close(t.fd).catch(() => {}), O.current = null);
4022
4022
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotdirfm/ui",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Reusable DotDir file manager UI component for React apps.",
5
5
  "main": "./dist/dotdir.js",
6
6
  "module": "./dist/dotdir.mjs",