reactive-vscode 0.4.0 → 1.0.0-beta.1
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/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +595 -411
- package/dist/index.js +754 -713
- package/dist/index.js.map +1 -0
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@reactive-vscode/reactivity"),s=require("vscode");function L(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function D(e,t){const o=new Map;return(...i)=>{const a=t(...i);let r=o.get(a);return r?r.refCount++:(r={data:e(...i),refCount:1},o.set(a,r)),L(()=>{--r.refCount===0&&o.delete(a)}),r.data}}const R=[];function M(e){R.push(e)}function g(e){let t=!1,o=!1,i;return()=>{if(!o){if(t)throw new Error("Cannot call a singleton composable recursively.");try{t=!0;const a=n.effectScope(!0);M(()=>a.stop()),i=a.run(e),o=!0}finally{t=!1}}return i}}const b=n.shallowRef(null),T=n.effectScope();function J(e){return{activate:t=>(b.value=t,T.run(()=>(k.map(o=>o(t)),e(t)))),deactivate:()=>{R.map(t=>t()),T.stop()}}}const k=[];function y(e){b.value?e(b.value):k.push(e)}function $(e,t,o){const i=!e,a=s.workspace.getConfiguration(i?void 0:e,o);function r(l,f){const d=n.shallowRef(f),w=n.computed({get:()=>d.value,set:v=>{d.value=v,a.update(l,v)}});return w.update=async(v,h,m)=>{await a.update(l,v,h,m),d.value=v},w.set=v=>{d.value=v},w}const u=Object.fromEntries(Object.keys(t).map(l=>[l,r(l,a.get(l))]));return y(()=>{c(s.workspace.onDidChangeConfiguration(i?l=>{const f=s.workspace.getConfiguration();for(const d in t)l.affectsConfiguration(d)&&u[d].set(f.get(d))}:l=>{if(!l.affectsConfiguration(e))return;const f=s.workspace.getConfiguration(e);for(const d in t)l.affectsConfiguration(`${e}.${d}`)&&u[d].set(f.get(d))}))}),u}function X(e,t,o){const i=$(e,t,o),a={},r=n.shallowReactive({$update(u,l,f,d){return i[u].update(l,f,d)},$set(u,l){return i[u].set(l)}});for(const u in t){const l=u.split(".");let f="",d=a,w=r;for(const h of l.slice(0,-1)){f=f?`${f}.${h}`:h;const m=d=d[h]||={};if(w[h])w=w[h];else{const I=n.shallowReactive({});Object.defineProperty(w,h,{enumerable:!0,get(){return I},set(G){function W(x,S,F){if(x)for(const V in x)W(x[V],S?`${S}.${V}`:V,F?.[V]);else i[S].value=F}W(m,f,G)}}),w=I}}const v=l[l.length-1];d[v]=null,Object.defineProperty(w,v,{enumerable:!0,get(){return i[u].value},set(h){i[u].value=h}})}return r}function Z(e,t){const o=n.shallowRef(null),i=[],a=r=>(...u)=>o.value?o.value[r](...u):(i.push([r,u]),null);return y(()=>{o.value=Q(e,t);for(const[r,u]of i)o.value[r](...u)}),{logger:o,outputChannel:n.computed(()=>o.value?.outputChannel),info:a("info"),warn:a("warn"),error:a("error"),append:a("append"),appendLine:a("appendLine"),replace:a("replace"),clear:a("clear"),show:a("show"),hide:a("hide")}}const _=g;function ee(e,...t){return s.commands.executeCommand(e,...t)}function te(e,t=!1){const o=b.value;if(!o&&!t)throw new Error("Cannot get absolute path because the extension is not activated yet");return o?.asAbsolutePath(e)}function ne(e,t=!1){return n.computed(()=>te(n.toValue(e),t))}function c(e){return(n.getCurrentScope()??T).cleanups.push(e.dispose.bind(e)),e}const N=g(()=>{const e=n.shallowRef(s.window.activeColorTheme);return c(s.window.onDidChangeActiveColorTheme(t=>{e.value=t})),e}),oe=g(()=>{const e=n.shallowRef(s.debug.activeDebugSession);return c(s.debug.onDidChangeActiveDebugSession(t=>{e.value=t})),n.computed(()=>e.value)}),j=g(()=>{const e=n.shallowRef(s.window.activeTextEditor);return c(s.window.onDidChangeActiveTextEditor(t=>{e.value=t})),e});function H(e){const t=n.shallowRef(n.toValue(e)?.getText());return n.watchEffect(()=>{t.value=n.toValue(e)?.getText()}),c(s.workspace.onDidChangeTextDocument(o=>{o.document===n.toValue(e)&&(t.value=o.document.getText())})),t}function B(e,t,o,i={}){const{updateOn:a=["effect","documentChanged"]}=i;let r;const u=n.computed(()=>{r?.dispose(),r=void 0;const d=n.toValue(t);if("key"in d)return d;const w=s.window.createTextEditorDecorationType(d);return r=c(w),w}),l=async()=>{const d=n.toValue(e);d&&d.setDecorations(u.value,typeof o=="function"?await o(d):n.toValue(o))},f=a.includes("documentChanged")?H(()=>n.toValue(e)?.document):null;return a.includes("effect")?n.watchEffect(async()=>{f?.value,await l()}):f&&n.watch(f,l),{update:l}}function ie(e,t,o={}){const i=j();return B(i,e,t,o)}const ae=g(()=>{const e=n.shallowRef(s.window.activeNotebookEditor);return c(s.window.onDidChangeActiveNotebookEditor(t=>{e.value=t})),e}),se=g(()=>{const e=n.shallowRef(s.window.activeTerminal);return c(s.window.onDidChangeActiveTerminal(t=>{e.value=t})),e}),ue=g(()=>{const e=n.shallowRef(s.extensions.all);return c(s.extensions.onDidChange(()=>{e.value=s.extensions.all})),n.computed(()=>e.value)});function p(e,t){const o=(i,a,r)=>{c(e(i,a,r))};return t?.forEach(i=>o(i)),o}function P(e,t,o){for(const i of o){const a=t[i];a!==void 0&&n.watchEffect(()=>{e[i]=n.toValue(a)})}}const re=D((e,t,o={})=>{const i=c(s.chat.createChatParticipant(e,n.unref(t)));return P(i,o,["iconPath"]),o.followupProvider!==void 0&&n.watchEffect(()=>{i.followupProvider=n.unref(o.followupProvider)}),n.watchEffect(()=>{i.requestHandler=n.unref(t)}),{onDidReceiveFeedback:p(i.onDidReceiveFeedback)}},e=>e);function K(e,t){c(s.commands.registerCommand(e,t))}function ce(e){for(const[t,o]of Object.entries(e))o&&K(t,o)}function le(e,t){return c(s.comments.createCommentController(e,t))}function O(e){const t=n.shallowRef(n.toValue(e)?.state);return n.watch(e,()=>{t.value=n.toValue(e)?.state}),c(s.window.onDidChangeTerminalState(o=>{o===n.toValue(e)&&(t.value=o.state)})),n.computed(()=>t.value)}function de(...e){const t=n.ref(null);function o(){return!!t.value&&t.value.exitStatus==null}function i(){return o()?t.value:t.value=s.window.createTerminal(...e)}function a(l){i().sendText(l)}function r(){i().show()}function u(){o()&&(t.value.sendText(""),t.value.dispose(),t.value=null)}return n.onScopeDispose(u),{terminal:t,getIsActive:o,show:r,sendText:a,close:u,state:O(t)}}const fe=g(()=>{const e=n.shallowRef(s.env.shell);return c(s.env.onDidChangeShell(t=>{e.value=t})),n.computed(()=>e.value)});function C(e,t=[]){const o=Array.isArray(e)?e:t??[],i=c(Array.isArray(e)||e==null?new s.EventEmitter:e),a=p(i.event,o);for(const r of o)a(r);return{event:i.event,fire:i.fire.bind(i),addListener:a}}async function ve(e){const t=b.value.secrets,o=n.ref(await t.get(e));return o.set=async i=>{o.value=i,await t.store(e,i)},o.remove=async()=>{o.value=void 0,await t.delete(e)},c(t.onDidChange(async i=>{i.key===e&&(o.value=await t.get(e))})),n.watch(o,i=>{i===void 0?t.delete(e):t.store(e,i)}),o}function we(e){return n.computed(()=>s.tasks.fetchTasks(n.toValue(e)))}function he(e){return n.computed(()=>s.Uri.file(n.toValue(e)))}function ge(e,t){const o=new s.EventEmitter,i=n.shallowRef();n.watchEffect(()=>{i.value&&o.fire(),i.value=n.toValue(t)}),c(s.languages.registerFoldingRangeProvider(e,{onDidChangeFoldingRanges:o.event,provideFoldingRanges(a,r,u){return i.value?.(a,r,u)}}))}function me(e,t,o,i){const a=n.shallowReactive(new Map),r=C(),u=C(),l=C(),f=n.computed(()=>{const v=n.toValue(e);return Array.isArray(v)?v:v instanceof Set?Array.from(v):[v]});function d(){const v=f.value;for(const[h,m]of a)v.includes(h)||(m.dispose(),a.delete(h));for(const h of v)if(!a.has(h)){const m=s.workspace.createFileSystemWatcher(h,n.toValue(t)||!1,n.toValue(o)||!1,n.toValue(i)||!1);m.onDidCreate(r.fire),m.onDidChange(u.fire),m.onDidDelete(l.fire),a.set(h,m)}}function w(){for(const v of a.values())v.dispose();a.clear()}return d(),n.watch(f,d),n.watch(()=>[n.toValue(t),n.toValue(o),n.toValue(i)],()=>{w(),d()}),n.onScopeDispose(w),{watchers:a,onDidCreate:r.event,onDidChange:u.event,onDidDelete:l.event}}const pe=g(()=>{const e=N();return n.computed(()=>e.value.kind===s.ColorThemeKind.Dark||e.value.kind===s.ColorThemeKind.HighContrast)}),be=g(()=>{const e=n.shallowRef(s.env.isTelemetryEnabled);return c(s.env.onDidChangeTelemetryEnabled(t=>{e.value=t})),n.computed(()=>e.value)});function Ce(e,...t){return n.computed(()=>typeof t[0]=="object"?s.l10n.t(n.toValue(e),n.toRaw(t[0])):s.l10n.t(n.toValue(e),...t.map(n.toValue)))}const Ve=g(()=>{const e=n.shallowRef(s.lm.tools);return c(s.lm.onDidChangeChatModels(()=>{e.value=s.lm.tools})),n.computed(()=>e.value)});function q(e,t){return c(s.window.createOutputChannel(e,t))}function Te(e){const t=new Date,o=String(t.getFullYear()).padStart(4,"0"),i=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0"),r=String(t.getHours()).padStart(2,"0"),u=String(t.getMinutes()).padStart(2,"0"),l=String(t.getSeconds()).padStart(2,"0"),f=String(t.getMilliseconds()).padStart(3,"0");return`${o}-${i}-${a} ${r}:${u}:${l}.${f} [${e}] `}function Q(e,t={}){const o=t.outputChannel??q(e,{log:!0}),i=t.toConsole??["error","warn"],a=r=>(...u)=>{o.appendLine((t.getPrefix?.(r)??"")+u.join(" ")),i.includes(r)&&console[r](...u)};return{outputChannel:o,createLoggerFunc:a,info:a("info"),warn:a("warn"),error:a("error"),append:o.append.bind(o),appendLine:o.appendLine.bind(o),replace:o.replace.bind(o),clear:o.clear.bind(o),show:o.show.bind(o),hide:o.hide.bind(o)}}const De=g(()=>{const e=n.shallowRef(s.env.logLevel);return c(s.env.onDidChangeLogLevel(t=>{e.value=t})),n.computed(()=>e.value)});function U(e){const t=n.shallowRef(n.toValue(e)?.selections??[]);return n.watch(e,()=>{t.value=n.toValue(e)?.selections??[]}),c(s.window.onDidChangeNotebookEditorSelection(o=>{o.notebookEditor===n.toValue(e)&&(t.value=o.selections)})),n.computed({get(){return t.value},set(o){t.value=o;const i=n.toValue(e);i&&(i.selections=o)}})}function Ee(e){const t=U(e);return n.computed({get(){return t.value[0]},set(o){t.value=t.value.toSpliced(0,1,o)}})}function xe(e){const t=n.shallowRef(n.toValue(e)?.visibleRanges??[]);return n.watch(e,()=>{t.value=n.toValue(e)?.visibleRanges??[]}),c(s.window.onDidChangeNotebookEditorVisibleRanges(o=>{o.notebookEditor===n.toValue(e)&&(t.value=o.visibleRanges)})),n.computed(()=>t.value)}const Se=g(()=>{const e=n.shallowRef(s.window.terminals);function t(){e.value=s.window.terminals}return c(s.window.onDidOpenTerminal(t)),c(s.window.onDidCloseTerminal(t)),e});function Re(e={}){const t=c(s.window.createQuickPick()),o=p(t.onDidChangeActive),i=p(t.onDidChangeSelection),a=p(t.onDidAccept),r=p(t.onDidHide),u=p(t.onDidTriggerButton),l=p(t.onDidChangeValue);["items","buttons","title","step","totalSteps","enabled","busy","ignoreFocusOut","placeholder","canSelectMany","matchOnDescription","matchOnDetail","keepScrollPosition"].forEach(v=>{e[v]&&n.watchEffect(()=>t[v]=n.toValue(e[v]))}),e.value&&(t.value=e.value);const f=n.shallowRef(t.value);l(v=>f.value=v),e.activeItems&&(t.activeItems=e.activeItems);const d=n.shallowRef(t.activeItems);o(v=>d.value=v),e.selectedItems&&(t.selectedItems=e.selectedItems);const w=n.shallowRef(t.selectedItems);return i(v=>w.value=v),{...t,onDidChangeActive:o,onDidChangeSelection:i,onDidAccept:a,onDidHide:r,onDidTriggerButton:u,onDidChangeValue:l,value:f,activeItems:d,selectedItems:w}}function ke(e){const t=c(e.id?s.window.createStatusBarItem(e.id,e.alignment,e.priority):s.window.createStatusBarItem(e.alignment,e.priority));return P(t,e,["name","text","tooltip","color","backgroundColor","command","accessibilityInformation"]),e.visible!=null?n.watchEffect(()=>{n.toValue(e.visible)?t.show():t.hide()}):t.show(),t}const ye=g(()=>{const e=n.shallowRef(s.tasks.taskExecutions);function t(){e.value=s.tasks.taskExecutions}return c(s.tasks.onDidStartTask(t)),c(s.tasks.onDidEndTask(t)),n.computed(()=>e.value)});function Pe(...e){const t=c(s.window.createTerminal(...e));return{terminal:t,get name(){return t.name},get processId(){return t.processId},get creationOptions(){return t.creationOptions},get exitStatus(){return t.exitStatus},get shellIntegration(){return t.shellIntegration},sendText:t.sendText.bind(t),show:t.show.bind(t),hide:t.hide.bind(t),state:O(t)}}function z(e,t){c(s.commands.registerTextEditorCommand(e,t))}function Oe(e){for(const[t,o]of Object.entries(e))z(t,o)}function Y(e,t){const o=n.shallowRef(n.toValue(e)?.selections??[]);return n.watch(e,()=>{o.value=n.toValue(e)?.selections??[]}),c(s.window.onDidChangeTextEditorSelection(i=>{const a=n.toValue(e),r=n.toValue(t);i.textEditor===a&&(!r||r.includes(i.kind))&&(o.value=i.selections)})),n.computed({get(){return o.value},set(i){o.value=i;const a=n.toValue(e);a&&(a.selections=i)}})}function Ae(e,t){const o=Y(e,t);return n.computed({get(){return o.value[0]},set(i){o.value=o.value.toSpliced(0,1,i)}})}function Ie(e){const t=n.shallowRef(n.toValue(e)?.viewColumn);return n.watch(e,()=>{t.value=n.toValue(e)?.viewColumn}),c(s.window.onDidChangeTextEditorViewColumn(o=>{o.textEditor===n.toValue(e)&&(t.value=o.viewColumn)})),n.computed(()=>t.value)}function We(e){const t=n.shallowRef(n.toValue(e)?.visibleRanges??[]);return n.watch(e,()=>{t.value=n.toValue(e)?.visibleRanges??[]}),c(s.window.onDidChangeTextEditorVisibleRanges(o=>{o.textEditor===n.toValue(e)&&(t.value=o.visibleRanges)})),n.computed(()=>t.value)}function A(e,t){n.watchEffect(()=>{const o=n.toValue(e);o&&(o.badge=n.toValue(t))})}function E(e,t){n.watchEffect(()=>{const o=n.toValue(e);o&&(o.title=n.toValue(t))})}const Fe=D((e,t,o)=>{const i=C();n.watch(t,()=>i.fire()),o?.watchSource&&n.watch(o.watchSource,()=>i.fire());const a=new WeakMap,r=c(s.window.createTreeView(e,{...o,treeDataProvider:{...o,onDidChangeTreeData:i.event,getTreeItem(u){return u.treeItem},async getChildren(u){if(u){const l=await u.children;return l?.forEach(f=>a.set(f,u)),l}return n.toValue(t)},getParent(u){return a.get(u)}}}));return o?.title&&E(r,o.title),o?.badge&&A(r,o.badge),r},e=>e);function Le(e){const t=n.ref(n.toValue(e)?.visible);function o(){t.value=n.toValue(e)?.visible}return n.watchEffect(i=>{const a=n.toValue(e);if(a){const r=a.onDidChangeVisibility(o);i(()=>r.dispose())}}),n.watchEffect(o),n.computed(()=>!!t.value)}const Me=g(()=>{const e=n.shallowRef(s.window.visibleNotebookEditors);return c(s.window.onDidChangeVisibleNotebookEditors(t=>{e.value=t})),e}),$e=g(()=>{const e=n.shallowRef(s.window.visibleTextEditors);return c(s.window.onDidChangeVisibleTextEditors(t=>{e.value=t})),e});function Ne(e,t,o=!0){const i=n.isRef(t)?t:typeof t=="function"?n.computed(t):n.ref(t);return n.watchEffect(()=>{n.toValue(o)&&s.commands.executeCommand("setContext",e,i.value)}),i}function je(e,t,o,i,a){const r=n.shallowRef(),u=c(s.window.createWebviewPanel(e,n.toValue(t),i,{enableFindWidget:a?.enableFindWidget,retainContextWhenHidden:a?.retainContextWhenHidden,...n.toValue(a?.webviewOptions)}));a?.onDidReceiveMessage&&u.webview.onDidReceiveMessage(a.onDidReceiveMessage);const l=n.ref(0);function f(){l.value++}if(n.watchEffect(()=>{u.webview.html=`${n.toValue(o)}<!--${l.value}-->`}),a?.webviewOptions){const h=a.webviewOptions;n.watchEffect(()=>{u.webview.options=n.toValue(h)})}E(u,t);function d(h){return u.webview.postMessage(h)}const w=n.ref(u.active),v=n.ref(u.visible);return c(u.onDidChangeViewState(()=>{w.value=u.active,v.value=u.visible})),{panel:u,context:r,active:w,visible:v,postMessage:d,forceRefresh:f}}const He=D((e,t,o)=>{const i=n.shallowRef(),a=n.shallowRef();c(s.window.registerWebviewViewProvider(e,{resolveWebviewView(f,d){i.value=f,a.value=d,o?.onDidReceiveMessage&&f.webview.onDidReceiveMessage(o.onDidReceiveMessage)}},{webviewOptions:{retainContextWhenHidden:o?.retainContextWhenHidden}}));const r=n.ref(0);function u(){r.value++}if(n.watchEffect(()=>{i.value&&(i.value.webview.html=`${n.toValue(t)}<!--${r.value}-->`)}),o?.webviewOptions){const f=o.webviewOptions;n.watchEffect(()=>{i.value&&(i.value.webview.options=n.toValue(f))})}o?.title&&E(i,o.title),o?.badge&&A(i,o.badge);function l(f){return i.value?.webview.postMessage(f)}return{view:i,context:a,postMessage:l,forceRefresh:u}},e=>e),Be=g(()=>{const e=n.shallowRef(s.window.state);return c(s.window.onDidChangeWindowState(t=>{e.value=t})),{focused:n.computed(()=>e.value.focused),active:n.computed(()=>e.value.active)}}),Ke=g(()=>{const e=n.shallowRef(s.workspace.workspaceFolders);return c(s.workspace.onDidChangeWorkspaceFolders(()=>{e.value=s.workspace.workspaceFolders})),n.computed(()=>e.value)});exports.activateCbs=k;exports.createKeyedComposable=D;exports.createSingletonComposable=g;exports.deactivateCbs=R;exports.defineConfigObject=X;exports.defineConfigs=$;exports.defineExtension=J;exports.defineLogger=Z;exports.defineService=_;exports.executeCommand=ee;exports.extensionContext=b;exports.extensionScope=T;exports.getDefaultLoggerPrefix=Te;exports.onActivate=y;exports.onDeactivate=M;exports.tryOnScopeDispose=L;exports.useAbsolutePath=ne;exports.useActiveColorTheme=N;exports.useActiveDebugSession=oe;exports.useActiveEditorDecorations=ie;exports.useActiveNotebookEditor=ae;exports.useActiveTerminal=se;exports.useActiveTextEditor=j;exports.useAllExtensions=ue;exports.useChatParticipant=re;exports.useCommand=K;exports.useCommands=ce;exports.useCommentController=le;exports.useControlledTerminal=de;exports.useDefaultShell=fe;exports.useDisposable=c;exports.useDocumentText=H;exports.useEditorDecorations=B;exports.useEvent=p;exports.useEventEmitter=C;exports.useExtensionSecret=ve;exports.useFetchTasks=we;exports.useFileUri=he;exports.useFoldingRangeProvider=ge;exports.useFsWatcher=me;exports.useIsDarkTheme=pe;exports.useIsTelemetryEnabled=be;exports.useL10nText=Ce;exports.useLmTools=Ve;exports.useLogLevel=De;exports.useLogger=Q;exports.useNotebookEditorSelection=Ee;exports.useNotebookEditorSelections=U;exports.useNotebookEditorVisibleRanges=xe;exports.useOpenedTerminals=Se;exports.useOutputChannel=q;exports.useQuickPick=Re;exports.useReactiveOptions=P;exports.useStatusBarItem=ke;exports.useTaskExecutions=ye;exports.useTerminal=Pe;exports.useTerminalState=O;exports.useTextEditorCommand=z;exports.useTextEditorCommands=Oe;exports.useTextEditorSelection=Ae;exports.useTextEditorSelections=Y;exports.useTextEditorViewColumn=Ie;exports.useTextEditorVisibleRanges=We;exports.useTreeView=Fe;exports.useViewBadge=A;exports.useViewTitle=E;exports.useViewVisibility=Le;exports.useVisibleNotebookEditors=Me;exports.useVisibleTextEditors=$e;exports.useVscodeContext=Ne;exports.useWebviewPanel=je;exports.useWebviewView=He;exports.useWindowState=Be;exports.useWorkspaceFolders=Ke;Object.keys(n).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@reactive-vscode/reactivity"),s=require("vscode"),T=[];function E(e){g.value?e(g.value):T.push(e)}const R=[];function M(e){R.push(e)}const g=o.shallowRef(null),C=o.effectScope();function F(e){return{activate:t=>(g.value=t,C.run(()=>(T.forEach(n=>n(t)),e(t)))),deactivate:async()=>{await Promise.allSettled(R.map(t=>t())),C.stop()}}}function B(e,t){const n=!e,i=o.shallowRef(null);function u(){return i.value=s.workspace.getConfiguration(e??void 0,t)}function a(){if(!g.value)throw new Error("Cannot access config before extension is activated.");return i.value?i.value:u()}function r(c){return new Proxy({},{get(v,d){const f=a();if(typeof d!="string")throw new TypeError("Symbol keys are not supported in defineConfig proxy.");if(c===""&&["get","has","inspect","update"].includes(d))return Reflect.get(f,d).bind(f);const h=f.get(c+d);if(h===void 0)throw new Error(`Configuration key "${e?`${e}.`:""}${c+d}" is not defined.`);return typeof h!="object"||h===null||Array.isArray(h)?h:r(`${c}${d}.`)},set(v,d,f){const h=a();if(typeof d!="string")throw new TypeError("Symbol keys are not supported in defineConfig proxy.");return h.update(c+d,f),!0},apply:D,construct:D,defineProperty(v,d,f){const h=a();return Reflect.defineProperty(h,d,f)},deleteProperty(v,d){const f=a();return Reflect.deleteProperty(f,d)},getOwnPropertyDescriptor(v,d){const f=a();return Reflect.getOwnPropertyDescriptor(f,d)},getPrototypeOf(v){const d=a();return Reflect.getPrototypeOf(d)},has(v,d){const f=a();return Reflect.has(f,d)},isExtensible(v){const d=a();return Reflect.isExtensible(d)},ownKeys(v){const d=a();return Reflect.ownKeys(d)},preventExtensions:D,setPrototypeOf:D})}return E(()=>{l(s.workspace.onDidChangeConfiguration(c=>{(n||c.affectsConfiguration(e,t??void 0))&&u()}))}),r("")}function D(){throw new Error("Not supported")}const j=["append","appendLine","replace","clear","show","hide","trace","debug","info","warn","error"];function _(e){const t=o.shallowRef(null),n=o.shallowRef(s.env.logLevel),i=[];E(()=>{const a=t.value=l(s.window.createOutputChannel(e,{log:!0}));n.value=a.logLevel,l(a.onDidChangeLogLevel(r=>{n.value=r})),i.forEach(r=>r())});const u={};for(const a of j)u[a]=(...r)=>{t.value?t.value[a](...r):i.push(()=>t.value[a](...r))};return{logger:o.computed(()=>t.value),...u}}function w(e){let t=!1,n=!1,i;return()=>{if(!n){if(t)throw new Error("Cannot call a singleton composable recursively.");try{t=!0,i=C.run(e)}finally{t=!1,n=!0}}return i}}function $(e){return o.computed(()=>s.Uri.joinPath(g.value.extensionUri,o.toValue(e)))}function l(e){return(o.getCurrentScope()??C).cleanups.push(e.dispose.bind(e)),e}const S=w(()=>{const e=o.shallowRef(s.window.activeColorTheme);return l(s.window.onDidChangeActiveColorTheme(t=>{e.value=t})),e}),U=w(()=>{const e=o.shallowRef(s.debug.activeDebugSession);return l(s.debug.onDidChangeActiveDebugSession(t=>{e.value=t})),o.computed(()=>e.value)}),H=w(()=>{const e=o.shallowRef(s.window.activeNotebookEditor);return l(s.window.onDidChangeActiveNotebookEditor(t=>{e.value=t})),e}),K=w(()=>{const e=o.shallowRef(s.window.activeTerminal);return l(s.window.onDidChangeActiveTerminal(t=>{e.value=t})),e}),Q=w(()=>{const e=o.shallowRef(s.window.activeTextEditor);return l(s.window.onDidChangeActiveTextEditor(t=>{e.value=t})),o.computed(()=>e.value)}),G=w(()=>{const e=o.shallowRef(s.extensions.all);return l(s.extensions.onDidChange(()=>{e.value=s.extensions.all})),o.computed(()=>e.value)});function m(e,t,n){if(o.isRef(e)||typeof e=="function"){o.watchEffect(()=>{const i=o.toValue(e);i!=null&&m(i,t,n)});return}for(const i of n){const u=t[i];u!=null&&e[i](u)}}function p(e,t,n){for(const i of n){const u=t[i];u!==void 0&&o.watchEffect(()=>{const a=o.toValue(e);a!=null&&(a[i]=o.toValue(u))})}}function q(e,t,n={}){const i=l(s.chat.createChatParticipant(e,o.unref(t)));return p(i,n,["iconPath","followupProvider"]),m(i,n,["onDidReceiveFeedback"]),o.isRef(t)&&o.watch(t,u=>{i.requestHandler=u}),i}function k(e,t){o.isRef(t)?o.watchEffect(n=>{if(t.value){const i=s.commands.registerCommand(e,t.value);n(()=>i.dispose())}}):t&&l(s.commands.registerCommand(e,t))}function z(e){for(const[t,n]of Object.entries(e))k(t,n)}function J(e){const t=o.shallowRef(o.toValue(e)?.getText());return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.getText()}),l(s.workspace.onDidChangeTextDocument(n=>{n.document===o.toValue(e)&&(t.value=n.document.getText())})),t}function X(e,t,n,i={}){let u;const a=o.computed(()=>{u?.dispose(),u=void 0;const c=o.toValue(t);if("key"in c)return c;const v=s.window.createTextEditorDecorationType(c);return u=v,v});o.onScopeDispose(()=>u?.dispose());const r=async()=>{const c=o.toValue(e);c&&c.setDecorations(a.value,typeof n=="function"?await n(c):o.unref(n))};return(i.watchDocumentChange??!0)&&l(s.workspace.onDidChangeTextDocument(async c=>{o.toValue(e)?.document===c.document&&await r()})),(i.immediate??!0)&&r(),{update:r}}const Y=w(()=>{const e=o.shallowRef(s.env.shell);return l(s.env.onDidChangeShell(t=>{e.value=t})),o.computed(()=>e.value)});function P(e,t){const n=(i,u,a)=>l(e(i,u,a));return t?.forEach(i=>n(i)),n}function b(e,t=[]){const n=Array.isArray(e)?e:t??[],i=l(Array.isArray(e)||e==null?new s.EventEmitter:e),u=P(i.event,n);return{emitter:i,event:u,fire:i.fire.bind(i)}}function Z(e){const t=g.value.secrets,n=o.shallowRef(null);t.get(e).then(r=>{n.value=r}),l(t.onDidChange(async r=>{r.key===e&&(n.value=await t.get(e))}));const i=async r=>{n.value=r,await t.store(e,r)},u=async()=>{n.value=void 0,await t.delete(e)},a=o.computed({get(){return n.value},set(r){r===void 0?u():i(r)}});return a.set=i,a.remove=u,a}function ee(e,t={}){const n=o.shallowReactive(new Map),i=b(),u=b(),a=b(),r=o.computed(()=>{const d=o.toValue(e);return d instanceof Set?d:new Set(Array.isArray(d)?d:[d])});function c(){const d=r.value;for(const[f,h]of n)d.has(f)||(h.dispose(),n.delete(f));for(const f of d)if(!n.has(f)){const h=s.workspace.createFileSystemWatcher(f,t.onDidCreate===!1,t.onDidChange===!1,t.onDidDelete===!1);h.onDidCreate(i.fire),h.onDidChange(u.fire),h.onDidDelete(a.fire),n.set(f,h)}}function v(){for(const d of n.values())d.dispose();n.clear()}return c(),o.watch(r,c),o.onScopeDispose(v),typeof t.onDidCreate=="function"&&i.event(t.onDidCreate),typeof t.onDidChange=="function"&&u.event(t.onDidChange),typeof t.onDidDelete=="function"&&a.event(t.onDidDelete),{watchers:o.readonly(n),onDidCreate:i.event,onDidChange:u.event,onDidDelete:a.event}}function y(e,t,n){const i=o.shallowRef(e.get(t,n)),u=o.computed({get(){return i.value},set(a){u.update(a)}});return u.update=async a=>{i.value=a===void 0?n:a,await e.update(t,a)},u}function te(e,t){return y(g.value.globalState,e,t)}function A(e,t){p(e,t,["title","step","totalSteps","enabled","busy","ignoreFocusOut"]),m(e,t,["onDidHide"]),t.visible!=null&&o.watchEffect(()=>{o.toValue(t.visible)?e.show():e.hide()})}function oe(e={}){const t=l(s.window.createInputBox());A(t,e),p(t,e,["valueSelection","placeholder","password","buttons","prompt","validationMessage"]),m(t,e,["onDidChangeValue","onDidAccept","onDidTriggerButton"]);const n=o.shallowRef(e.value??t.value);return t.onDidChangeValue(i=>n.value=i),o.watchEffect(()=>t.value=n.value),{...t,value:n}}const ne=w(()=>{const e=S();return o.computed(()=>e.value.kind===s.ColorThemeKind.Dark||e.value.kind===s.ColorThemeKind.HighContrast)}),ie=w(()=>{const e=o.shallowRef(s.env.isTelemetryEnabled);return l(s.env.onDidChangeTelemetryEnabled(t=>{e.value=t})),o.computed(()=>e.value)});function se(e,...t){return o.computed(()=>{const n=o.toValue(t[0]);return typeof n=="object"?s.l10n.t(o.toValue(e),o.toRaw(n)):s.l10n.t(o.toValue(e),...t.map(o.toValue))})}const ae=w(()=>{const e=o.shallowRef(s.lm.tools);return l(s.lm.onDidChangeChatModels(()=>{e.value=s.lm.tools})),o.computed(()=>e.value)}),ue=w(()=>{const e=o.shallowRef(s.env.logLevel);return l(s.env.onDidChangeLogLevel(t=>{e.value=t})),o.computed(()=>e.value)});function I(e){const t=o.shallowRef(o.toValue(e)?.selections??[]);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.selections??[]}),l(s.window.onDidChangeNotebookEditorSelection(n=>{n.notebookEditor===o.toValue(e)&&(t.value=n.selections)})),o.computed({get(){return t.value},set(n){t.value=n;const i=o.toValue(e);i&&(i.selections=n)}})}function le(e){const t=I(e);return o.computed({get(){return t.value[0]},set(n){t.value=n?[n]:[]}})}function re(e){const t=o.shallowRef(o.toValue(e)?.visibleRanges??[]);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.visibleRanges??[]}),l(s.window.onDidChangeNotebookEditorVisibleRanges(n=>{n.notebookEditor===o.toValue(e)&&(t.value=n.visibleRanges)})),o.computed(()=>t.value)}const ce=w(()=>{const e=o.shallowRef(s.window.terminals);function t(){e.value=s.window.terminals}return l(s.window.onDidOpenTerminal(t)),l(s.window.onDidCloseTerminal(t)),e});function de(e={}){const t=l(s.window.createQuickPick());A(t,e),p(t,e,["items","buttons","title","step","totalSteps","enabled","busy","ignoreFocusOut","placeholder","canSelectMany","matchOnDescription","matchOnDetail","keepScrollPosition"]),m(t,e,["onDidChangeValue","onDidAccept","onDidTriggerButton","onDidTriggerItemButton","onDidChangeActive","onDidChangeSelection"]);const n=o.shallowRef(e.value??t.value);t.onDidChangeValue(a=>n.value=a),o.watchEffect(()=>t.value=n.value);const i=o.shallowRef(e.activeItems??t.activeItems);t.onDidChangeActive(a=>i.value=a),o.watchEffect(()=>t.activeItems=i.value);const u=o.shallowRef(e.selectedItems??t.selectedItems);return t.onDidChangeSelection(a=>u.value=a),o.watchEffect(()=>t.selectedItems=u.value),{...t,value:n,activeItems:i,selectedItems:u}}function fe(e){const t=l(e.id?s.window.createStatusBarItem(e.id,e.alignment,e.priority):s.window.createStatusBarItem(e.alignment,e.priority));return p(t,e,["name","text","tooltip","color","backgroundColor","command","accessibilityInformation"]),e.visible!=null&&o.watchEffect(()=>{o.toValue(e.visible)?t.show():t.hide()}),t}const ve=w(()=>{const e=o.shallowRef(s.tasks.taskExecutions);function t(){e.value=s.tasks.taskExecutions}return l(s.tasks.onDidStartTask(t)),l(s.tasks.onDidEndTask(t)),o.computed(()=>e.value)});function W(e){const t=o.shallowRef(o.toValue(e)?.shellIntegration);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.shellIntegration}),l(s.window.onDidChangeTerminalShellIntegration(n=>{n.terminal===o.toValue(e)&&(t.value=n.shellIntegration)})),o.computed(()=>t.value)}function O(e){const t=o.shallowRef(o.toValue(e)?.state);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.state}),l(s.window.onDidChangeTerminalState(n=>{n===o.toValue(e)&&(t.value=n.state)})),o.computed(()=>t.value)}function we(...e){const t=l(s.window.createTerminal(...e));return{terminal:t,state:O(t),shellIntegration:W(t),sendText:t.sendText.bind(t),show:t.show.bind(t),hide:t.hide.bind(t),dispose:t.dispose.bind(t)}}function N(e,t){o.isRef(t)?o.watchEffect(n=>{if(t.value){const i=s.commands.registerTextEditorCommand(e,t.value);n(()=>i.dispose())}}):t&&l(s.commands.registerTextEditorCommand(e,t))}function he(e){for(const[t,n]of Object.entries(e))N(t,n)}function L(e,t){const n=o.shallowRef(o.toValue(e)?.selections??[]);return(o.isRef(e)||typeof e=="function")&&o.watch(e,i=>{n.value=i?.selections??[]}),l(s.window.onDidChangeTextEditorSelection(i=>{if(i.textEditor===o.toValue(e)){const u=o.toValue(t);(!u||u.includes(i.kind))&&(n.value=i.selections)}})),o.computed({get(){return n.value},set(i){n.value=i;const u=o.toValue(e);u&&(u.selections=i)}})}function pe(e,t){const n=L(e,t);return o.computed({get(){return n.value[0]},set(i){n.value=i?[i]:[]}})}function me(e){const t=o.shallowRef(o.toValue(e)?.viewColumn);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.viewColumn}),l(s.window.onDidChangeTextEditorViewColumn(n=>{n.textEditor===o.toValue(e)&&(t.value=n.viewColumn)})),o.computed(()=>t.value)}function ge(e){const t=o.shallowRef(o.toValue(e)?.visibleRanges??[]);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.visibleRanges??[]}),l(s.window.onDidChangeTextEditorVisibleRanges(n=>{n.textEditor===o.toValue(e)&&(t.value=n.visibleRanges)})),o.computed(()=>t.value)}function x(e){const t=o.ref(o.toValue(e)?.visible);return(o.isRef(e)||typeof e=="function")&&o.watch(e,n=>{t.value=n?.visible}),o.watchEffect(n=>{const i=o.toValue(e);if(i){const u=i.onDidChangeVisibility(()=>{t.value=i.visible});n(()=>u.dispose())}}),o.computed(()=>!!t.value)}function be(e,t,n={}){const i=b(),u=new WeakMap,a=l(s.window.createTreeView(e,{...n,treeDataProvider:{onDidChangeTreeData:i.event,getTreeItem(c){return c.treeItem},async getChildren(c){if(c){const v=await c.children;return v?.forEach(d=>u.set(d,c)),v}return o.toValue(t)},getParent(c){return u.get(c)},resolveTreeItem:n.resolveTreeItem}}));o.watch(t,()=>i.fire()),p(a,n,["message","title","description","badge"]),m(a,n,["onDidExpandElement","onDidCollapseElement","onDidChangeSelection","onDidChangeVisibility","onDidChangeCheckboxState"]);const r=o.shallowRef(a.selection);return l(a.onDidChangeSelection(c=>{r.value=c.selection})),{view:a,selection:r,visible:x(a),reveal:a.reveal.bind(a)}}const Ce=w(()=>{const e=o.shallowRef(s.window.visibleNotebookEditors);return l(s.window.onDidChangeVisibleNotebookEditors(t=>{e.value=t})),o.computed(()=>e.value)}),De=w(()=>{const e=o.shallowRef(s.window.visibleTextEditors);return l(s.window.onDidChangeVisibleTextEditors(t=>{e.value=t})),o.computed(()=>e.value)});function Te(e,t){const n=o.isRef(t)?t:typeof t=="function"?o.computed(t):o.ref(t);return o.watch(n,i=>{s.commands.executeCommand("setContext",e,i)},{immediate:!0}),n}function Ee(e,t,n,i,u={}){const a=l(s.window.createWebviewPanel(e,o.toValue(t),i,u)),r=a.webview;p(a,u,["title","iconPath"]),m(a,u,["onDidChangeViewState","onDidDispose"]);const c=o.shallowRef(0);o.watchEffect(()=>{r.html=`${o.toValue(n)}<!--${c.value}-->`}),p(r,{options:u.webviewOptions},["options"]),m(r,u,["onDidReceiveMessage"]);const v=o.shallowRef(a.viewColumn),d=o.shallowRef(a.active),f=o.shallowRef(a.visible);return l(a.onDidChangeViewState(h=>{a===h.webviewPanel&&(v.value=a.viewColumn,d.value=a.active,f.value=a.visible)})),{panel:a,webview:r,viewColumn:o.computed(()=>v.value),active:o.computed(()=>d.value),visible:o.computed(()=>f.value),reveal:a.reveal.bind(a),postMessage:r.postMessage.bind(r),asWebviewUri:r.asWebviewUri.bind(r),forceReload:()=>{c.value++}}}function Re(e,t,n={}){const i=o.shallowRef(),u=o.computed(()=>i.value?.webview),a=o.shallowRef();l(s.window.registerWebviewViewProvider(e,{resolveWebviewView(c,v){i.value=c,a.value=v}},{webviewOptions:{retainContextWhenHidden:n.retainContextWhenHidden}}));const r=o.shallowRef(0);return o.watchEffect(()=>{i.value&&(i.value.webview.html=`${o.toValue(t)}<!--${r.value}-->`)}),p(i,n,["title","description","badge"]),m(i,n,["onDidDispose"]),p(u,{options:n.webviewOptions},["options"]),m(u,n,["onDidReceiveMessage"]),{view:o.computed(()=>i.value),webview:u,context:o.computed(()=>a.value),visible:x(i),show:c=>i.value?.show(c),postMessage:c=>i.value?.webview.postMessage(c),asWebviewUri:c=>u.value?.asWebviewUri(c),forceReload:()=>{r.value++}}}const V=w(()=>{const e=o.shallowRef(s.window.state);return l(s.window.onDidChangeWindowState(t=>{e.value=t})),{focused:o.computed(()=>e.value.focused),active:o.computed(()=>e.value.active)}}),ye=w(()=>V().active),xe=w(()=>V().focused),Ve=w(()=>{const e=o.shallowRef(s.workspace.workspaceFolders);return l(s.workspace.onDidChangeWorkspaceFolders(()=>{e.value=s.workspace.workspaceFolders})),o.computed(()=>e.value)});function Se(e,t){return y(g.value.workspaceState,e,t)}exports.activateCbs=T;exports.deactivateCbs=R;exports.defineConfig=B;exports.defineExtension=F;exports.defineLogger=_;exports.defineService=w;exports.extensionContext=g;exports.extensionScope=C;exports.onActivate=E;exports.onDeactivate=M;exports.useAbsoluteUri=$;exports.useActiveColorTheme=S;exports.useActiveDebugSession=U;exports.useActiveNotebookEditor=H;exports.useActiveTerminal=K;exports.useActiveTextEditor=Q;exports.useAllExtensions=G;exports.useChatParticipant=q;exports.useCommand=k;exports.useCommands=z;exports.useDisposable=l;exports.useDocumentText=J;exports.useEditorDecorations=X;exports.useEnvShell=Y;exports.useEvent=P;exports.useEventEmitter=b;exports.useExtensionSecret=Z;exports.useFileSystemWatcher=ee;exports.useGlobalState=te;exports.useInputBox=oe;exports.useIsDarkTheme=ne;exports.useIsTelemetryEnabled=ie;exports.useL10nText=se;exports.useLmTools=ae;exports.useLogLevel=ue;exports.useMementoItem=y;exports.useNotebookEditorSelection=le;exports.useNotebookEditorSelections=I;exports.useNotebookEditorVisibleRanges=re;exports.useOpenedTerminals=ce;exports.useQuickPick=de;exports.useReactiveOptions=p;exports.useStatusBarItem=fe;exports.useTaskExecutions=ve;exports.useTerminal=we;exports.useTerminalShellIntegration=W;exports.useTerminalState=O;exports.useTextEditorCommand=N;exports.useTextEditorCommands=he;exports.useTextEditorSelection=pe;exports.useTextEditorSelections=L;exports.useTextEditorViewColumn=me;exports.useTextEditorVisibleRanges=ge;exports.useTreeView=be;exports.useViewVisibility=x;exports.useVisibleNotebookEditors=Ce;exports.useVisibleTextEditors=De;exports.useVscodeContext=Te;exports.useWebviewPanel=Ee;exports.useWebviewView=Re;exports.useWindowActive=ye;exports.useWindowFocused=xe;exports.useWindowState=V;exports.useWorkspaceFolders=Ve;exports.useWorkspaceState=Se;Object.keys(o).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>o[e]})});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/utils/onActivate.ts","../src/utils/onDeactivate.ts","../src/utils/defineExtension.ts","../src/utils/defineConfig.ts","../src/utils/defineLogger.ts","../src/utils/defineService.ts","../src/composables/useAbsoluteUri.ts","../src/composables/useDisposable.ts","../src/composables/useActiveColorTheme.ts","../src/composables/useActiveDebugSession.ts","../src/composables/useActiveNotebookEditor.ts","../src/composables/useActiveTerminal.ts","../src/composables/useActiveTextEditor.ts","../src/composables/useAllExtensions.ts","../src/composables/useReactiveEvents.ts","../src/composables/useReactiveOptions.ts","../src/composables/useChatParticipant.ts","../src/composables/useCommand.ts","../src/composables/useCommands.ts","../src/composables/useDocumentText.ts","../src/composables/useEditorDecorations.ts","../src/composables/useEnvShell.ts","../src/composables/useEvent.ts","../src/composables/useEventEmitter.ts","../src/composables/useExtensionSecret.ts","../src/composables/useFileSystemWatcher.ts","../src/composables/useMementoItem.ts","../src/composables/useGlobalState.ts","../src/composables/useQuickInputOptions.ts","../src/composables/useInputBox.ts","../src/composables/useIsDarkTheme.ts","../src/composables/useIsTelemetryEnabled.ts","../src/composables/useL10nText.ts","../src/composables/useLmTools.ts","../src/composables/useLogLevel.ts","../src/composables/useNotebookEditorSelections.ts","../src/composables/useNotebookEditorSelection.ts","../src/composables/useNotebookEditorVisibleRanges.ts","../src/composables/useOpenedTerminals.ts","../src/composables/useQuickPick.ts","../src/composables/useStatusBarItem.ts","../src/composables/useTaskExecutions.ts","../src/composables/useTerminalShellIntegration.ts","../src/composables/useTerminalState.ts","../src/composables/useTerminal.ts","../src/composables/useTextEditorCommand.ts","../src/composables/useTextEditorCommands.ts","../src/composables/useTextEditorSelections.ts","../src/composables/useTextEditorSelection.ts","../src/composables/useTextEditorViewColumn.ts","../src/composables/useTextEditorVisibleRanges.ts","../src/composables/useViewVisibility.ts","../src/composables/useTreeView.ts","../src/composables/useVisibleNotebookEditors.ts","../src/composables/useVisibleTextEditors.ts","../src/composables/useVscodeContext.ts","../src/composables/useWebviewPanel.ts","../src/composables/useWebviewView.ts","../src/composables/useWindowState.ts","../src/composables/useWindowActive.ts","../src/composables/useWindowFocused.ts","../src/composables/useWorkspaceFolders.ts","../src/composables/useWorkspaceState.ts"],"sourcesContent":["import type { ExtensionContext } from 'vscode'\nimport { extensionContext } from './defineExtension'\n\ntype OnActivateCb = (context: ExtensionContext) => void\n\n/**\n * @internal\n */\nexport const activateCbs: OnActivateCb[] = []\n\n/**\n * Registers a callback to be called after the extension has been activated.\n *\n * @category lifecycle\n */\nexport function onActivate(fn: OnActivateCb) {\n if (extensionContext.value) {\n fn(extensionContext.value)\n }\n else {\n activateCbs.push(fn)\n }\n}\n","import type { Awaitable } from './types'\n\ntype OnDeactivateCb = () => Awaitable<void>\n\n/**\n * @internal\n */\nexport const deactivateCbs: OnDeactivateCb[] = []\n\n/**\n * Registers a callback to be called when the extension is deactivated.\n *\n * @category lifecycle\n */\nexport function onDeactivate(fn: OnDeactivateCb) {\n deactivateCbs.push(fn)\n}\n","import type { ExtensionContext } from 'vscode'\nimport { effectScope, shallowRef } from '@reactive-vscode/reactivity'\nimport { activateCbs } from './onActivate'\nimport { deactivateCbs } from './onDeactivate'\n\nexport const extensionContext = shallowRef<ExtensionContext | null>(null!)\n\n/**\n * @internal\n */\nexport const extensionScope = effectScope()\n\n/**\n * Define a new extension.\n *\n * @category lifecycle\n */\nexport function defineExtension<T>(setup: (context: ExtensionContext) => T) {\n return {\n activate: (context: ExtensionContext) => {\n extensionContext.value = context\n return extensionScope.run(() => {\n activateCbs.forEach(fn => fn(context))\n return setup(context)\n })\n },\n deactivate: async () => {\n await Promise.allSettled(deactivateCbs.map(fn => fn()))\n extensionScope.stop()\n },\n }\n}\n","import type { ConfigurationScope, WorkspaceConfiguration } from 'vscode'\nimport type { Nullable } from './types'\nimport { shallowRef } from '@reactive-vscode/reactivity'\nimport { workspace } from 'vscode'\nimport { useDisposable } from '../composables'\nimport { extensionContext } from './defineExtension'\nimport { onActivate } from './onActivate'\n\n/**\n * Define configurations of an extension.\n *\n * @see {@linkcode workspace.getConfiguration}\n * @category lifecycle\n */\nexport function defineConfig<C extends object>(section: Nullable<string>, scope?: Nullable<ConfigurationScope>): C & {\n get: WorkspaceConfiguration['get']\n has: WorkspaceConfiguration['has']\n inspect: WorkspaceConfiguration['inspect']\n update: WorkspaceConfiguration['update']\n} {\n const isTopLevel = !section\n\n const workspaceConfig = shallowRef<WorkspaceConfiguration | null>(null)\n function updateWorkspaceConfig() {\n return workspaceConfig.value = workspace.getConfiguration(section ?? undefined, scope)\n }\n function getWorkspaceConfig() {\n if (!extensionContext.value) {\n throw new Error('Cannot access config before extension is activated.')\n }\n if (workspaceConfig.value) {\n return workspaceConfig.value\n }\n return updateWorkspaceConfig()\n }\n\n function buildProxy(base: string) {\n return new Proxy<any>({}, {\n get(_, key) {\n const config = getWorkspaceConfig()\n if (typeof key !== 'string') {\n throw new TypeError('Symbol keys are not supported in defineConfig proxy.')\n }\n\n if (base === '' && ['get', 'has', 'inspect', 'update'].includes(key)) {\n return Reflect.get(config, key).bind(config)\n }\n\n const v = config.get(base + key)\n if (v === undefined) {\n throw new Error(`Configuration key \"${section ? `${section}.` : ''}${base + key}\" is not defined.`)\n }\n if (typeof v !== 'object' || v === null || Array.isArray(v)) {\n return v\n }\n return buildProxy(`${base}${key}.`)\n },\n set(_, key, value) {\n const config = getWorkspaceConfig()\n if (typeof key !== 'string') {\n throw new TypeError('Symbol keys are not supported in defineConfig proxy.')\n }\n config.update(base + key, value)\n return true\n },\n apply: notSupported,\n construct: notSupported,\n defineProperty(_, property, attributes) {\n const config = getWorkspaceConfig()\n return Reflect.defineProperty(config, property, attributes)\n },\n deleteProperty(_, p) {\n const config = getWorkspaceConfig()\n return Reflect.deleteProperty(config, p)\n },\n getOwnPropertyDescriptor(_, p) {\n const config = getWorkspaceConfig()\n return Reflect.getOwnPropertyDescriptor(config, p)\n },\n getPrototypeOf(_) {\n const config = getWorkspaceConfig()\n return Reflect.getPrototypeOf(config)\n },\n has(_, p) {\n const config = getWorkspaceConfig()\n return Reflect.has(config, p)\n },\n isExtensible(_) {\n const config = getWorkspaceConfig()\n return Reflect.isExtensible(config)\n },\n ownKeys(_) {\n const config = getWorkspaceConfig()\n return Reflect.ownKeys(config)\n },\n preventExtensions: notSupported,\n setPrototypeOf: notSupported,\n })\n }\n\n onActivate(() => {\n useDisposable(workspace.onDidChangeConfiguration((e) => {\n if (isTopLevel || e.affectsConfiguration(section, scope ?? undefined)) {\n updateWorkspaceConfig()\n }\n }))\n })\n\n return buildProxy('')\n}\n\nfunction notSupported(): never {\n throw new Error('Not supported')\n}\n","import type { LogOutputChannel } from 'vscode'\nimport { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { env, window } from 'vscode'\nimport { useDisposable } from '../composables'\nimport { onActivate } from './onActivate'\n\nconst methods = [\n 'append',\n 'appendLine',\n 'replace',\n 'clear',\n 'show',\n 'hide',\n\n 'trace',\n 'debug',\n 'info',\n 'warn',\n 'error',\n] satisfies (keyof LogOutputChannel)[]\ntype MethodKey = typeof methods[number]\n\n/**\n * Define a logger which is usable before activation.\n *\n * @see {@linkcode window.createOutputChannel}\n * @category view\n */\nexport function defineLogger(name: string) {\n const logger = shallowRef<LogOutputChannel | null>(null)\n const logLevel = shallowRef(env.logLevel) // Defaults to env.logLevel\n\n const delayedOps: (() => void)[] = []\n\n onActivate(() => {\n const l = logger.value = useDisposable(window.createOutputChannel(name, { log: true }))\n\n logLevel.value = l.logLevel\n useDisposable(l.onDidChangeLogLevel((ev) => {\n logLevel.value = ev\n }))\n\n delayedOps.forEach(op => op())\n })\n\n const wrapped = {} as Pick<LogOutputChannel, MethodKey>\n for (const method of methods) {\n wrapped[method] = (...args: any[]): void => {\n if (logger.value) {\n // @ts-expect-error - spread args\n logger.value[method](...args)\n }\n else {\n // @ts-expect-error - spread args\n delayedOps.push(() => logger.value[method](...args))\n }\n }\n }\n\n return {\n logger: computed(() => logger.value),\n ...wrapped,\n }\n}\n","import { extensionScope } from './defineExtension'\n\n/**\n * Define a service that should only be instantiated once.\n *\n * @category lifecycle\n */\nexport function defineService<T>(fn: () => T): () => T {\n let running = false\n let ran = false\n let result: T | undefined\n return () => {\n if (!ran) {\n if (running) {\n throw new Error('Cannot call a singleton composable recursively.')\n }\n try {\n running = true\n result = extensionScope.run(fn)!\n }\n finally {\n running = false\n ran = true\n }\n }\n return result!\n }\n}\n","import type { ComputedRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { ExtensionContext } from 'vscode'\nimport { computed, toValue } from '@reactive-vscode/reactivity'\nimport { Uri } from 'vscode'\nimport { extensionContext } from '../utils'\n\n/**\n * @reactive {@linkcode ExtensionContext.asAbsolutePath}\n * @category utilities\n */\nexport function useAbsoluteUri(relativePath: MaybeRefOrGetter<string>): ComputedRef<Uri> {\n return computed(() => Uri.joinPath(extensionContext.value!.extensionUri, toValue(relativePath)))\n}\n","import type { Disposable } from 'vscode'\nimport { getCurrentScope } from '@reactive-vscode/reactivity'\nimport { extensionScope } from '../utils'\n\n/**\n * Dispose the disposable when the current scope is disposed.\n *\n * @see {@linkcode Disposable}\n * @category lifecycle\n */\nexport function useDisposable<T extends Disposable>(disposable: T): T {\n const scope = getCurrentScope() ?? extensionScope\n\n // @ts-expect-error internal property\n scope.cleanups.push(disposable.dispose.bind(disposable))\n\n return disposable\n}\n","import { shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.activeColorTheme}\n */\nexport const useActiveColorTheme = defineService(() => {\n const result = shallowRef(window.activeColorTheme)\n\n useDisposable(window.onDidChangeActiveColorTheme((theme) => {\n result.value = theme\n }))\n\n return result\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { debug } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode debug.activeDebugSession}\n */\nexport const useActiveDebugSession = defineService(() => {\n const session = shallowRef(debug.activeDebugSession)\n\n useDisposable(debug.onDidChangeActiveDebugSession((ev) => {\n session.value = ev\n }))\n\n return computed(() => session.value)\n})\n","import { shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.activeNotebookEditor}\n * @category editor\n */\nexport const useActiveNotebookEditor = defineService(() => {\n const activeNotebookEditor = shallowRef(window.activeNotebookEditor)\n\n useDisposable(window.onDidChangeActiveNotebookEditor((editor) => {\n activeNotebookEditor.value = editor\n }))\n\n return activeNotebookEditor\n})\n","import { shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.activeTerminal}\n * @category terminal\n */\nexport const useActiveTerminal = defineService(() => {\n const activeTerminal = shallowRef(window.activeTerminal)\n\n useDisposable(window.onDidChangeActiveTerminal((terminal) => {\n activeTerminal.value = terminal\n }))\n\n return activeTerminal\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.activeTextEditor}\n * @category editor\n */\nexport const useActiveTextEditor = defineService(() => {\n const activeTextEditor = shallowRef(window.activeTextEditor)\n\n useDisposable(window.onDidChangeActiveTextEditor((editor) => {\n activeTextEditor.value = editor\n }))\n\n return computed(() => activeTextEditor.value)\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { extensions } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode extensions.all}\n * @category extension\n */\nexport const useAllExtensions = defineService(() => {\n const allExtensions = shallowRef(extensions.all)\n\n useDisposable(extensions.onDidChange(() => {\n allExtensions.value = extensions.all\n }))\n\n return computed(() => allExtensions.value)\n})\n","import type { Event } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { isRef, toValue, watchEffect } from '@reactive-vscode/reactivity'\n\n/**\n * @internal\n */\nexport function useReactiveEvents<T extends object, const K extends keyof T>(\n target: MaybeNullableRefOrGetter<T>,\n handlers: {\n [k in K]?: T[k] extends Event<infer U> ? (event: U) => void : never;\n },\n keys: readonly K[],\n) {\n if (isRef(target) || typeof target === 'function') {\n watchEffect(() => {\n const t = toValue(target)\n if (t != null) {\n useReactiveEvents(t, handlers, keys)\n }\n })\n return\n }\n\n for (const key of keys) {\n const handler = handlers[key]\n if (handler != null) {\n (target[key] as Event<any>)(handler)\n }\n }\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { toValue, watchEffect } from '@reactive-vscode/reactivity'\n\n/**\n * @internal\n */\nexport function useReactiveOptions<T extends object, const K extends keyof T>(\n target: MaybeNullableRefOrGetter<T>,\n options: {\n [k in K]?: MaybeRefOrGetter<T[k]>;\n },\n keys: readonly K[],\n) {\n for (const key of keys) {\n const value = options[key]\n if (value !== undefined) {\n watchEffect(() => {\n const t = toValue(target)\n if (t != null) {\n t[key] = toValue(value) as any\n }\n })\n }\n }\n}\n","import type { MaybeRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { ChatParticipant, ChatRequestHandler } from 'vscode'\nimport type { EventListener } from '../utils'\nimport { isRef, unref, watch } from '@reactive-vscode/reactivity'\nimport { chat } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useReactiveEvents } from './useReactiveEvents'\nimport { useReactiveOptions } from './useReactiveOptions'\n\nexport interface ChatParticipantOptions {\n /**\n * @see {@linkcode ChatParticipant.iconPath}\n */\n iconPath?: MaybeRefOrGetter<ChatParticipant['iconPath']>\n\n /**\n * @see {@linkcode ChatParticipant.followupProvider}\n */\n followupProvider?: MaybeRefOrGetter<ChatParticipant['followupProvider']>\n\n /**\n * @see {@linkcode ChatParticipant.onDidReceiveFeedback}\n */\n onDidReceiveFeedback?: EventListener<ChatParticipant['onDidReceiveFeedback']>\n}\n\n/**\n * @reactive {@linkcode chat.createChatParticipant}\n * @category chat\n */\nexport function useChatParticipant(\n id: string,\n handler: MaybeRef<ChatRequestHandler>,\n options: ChatParticipantOptions = {},\n) {\n const participant = useDisposable(chat.createChatParticipant(id, unref(handler)))\n\n useReactiveOptions(participant, options, [\n 'iconPath',\n 'followupProvider',\n ])\n\n useReactiveEvents(participant, options, [\n 'onDidReceiveFeedback',\n ])\n\n if (isRef(handler)) {\n watch(handler, (handler) => {\n participant.requestHandler = handler\n })\n }\n\n return participant\n}\n","import type { MaybeRef } from '@reactive-vscode/reactivity'\nimport type { Nullable } from '../utils'\nimport { isRef, watchEffect } from '@reactive-vscode/reactivity'\nimport { commands } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode commands.registerCommand}\n * @category commands\n */\nexport function useCommand(command: string, callback: MaybeRef<Nullable<(...args: any[]) => any>>) {\n if (isRef(callback)) {\n watchEffect((onCleanup) => {\n if (callback.value) {\n const disposable = commands.registerCommand(command, callback.value)\n onCleanup(() => disposable.dispose())\n }\n })\n }\n else if (callback) {\n useDisposable(commands.registerCommand(command, callback))\n }\n}\n","import type { MaybeRef } from '@reactive-vscode/reactivity'\nimport type { commands } from 'vscode'\nimport type { Nullable } from '../utils'\nimport { useCommand } from './useCommand'\n\n/**\n * @reactive {@linkcode commands.registerCommand}\n * @category commands\n */\nexport function useCommands(commands: Record<string, MaybeRef<Nullable<(...args: any[]) => any>>>) {\n for (const [command, callback] of Object.entries(commands)) {\n useCommand(command, callback)\n }\n}\n","import type { TextDocument } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { workspace } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode TextDocument.getText}\n * @category document\n */\nexport function useDocumentText(doc: MaybeNullableRefOrGetter<TextDocument>) {\n const text = shallowRef(toValue(doc)?.getText())\n\n if (isRef(doc) || typeof doc === 'function') {\n watch(doc, (doc) => {\n text.value = doc?.getText()\n })\n }\n\n useDisposable(workspace.onDidChangeTextDocument((ev) => {\n if (ev.document === toValue(doc))\n text.value = ev.document.getText()\n }))\n\n return text\n}\n","import type { MaybeRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { DecorationOptions, DecorationRenderOptions, Disposable, Range, TextEditor, TextEditorDecorationType } from 'vscode'\nimport type { Awaitable, MaybeNullableRefOrGetter } from '../utils/types'\nimport { computed, onScopeDispose, toValue, unref } from '@reactive-vscode/reactivity'\nimport { window, workspace } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\nexport interface UseEditorDecorationsOptions {\n /**\n * The triggers to update the decorations.\n *\n * @default true\n */\n watchDocumentChange?: boolean\n\n /**\n * Immediately trigger an update.\n *\n * @default true\n */\n immediate?: boolean\n}\n\n/**\n * Reactively set decorations on the given editor.\n *\n * @see {@linkcode TextEditor.setDecorations}\n * @category editor\n */\nexport function useEditorDecorations(\n editor: MaybeNullableRefOrGetter<TextEditor>,\n decorationTypeOrOptions: MaybeRefOrGetter<TextEditorDecorationType | DecorationRenderOptions>,\n decorations:\n | MaybeRef<readonly Range[] | readonly DecorationOptions[]>\n | ((editor: TextEditor) => Awaitable<readonly Range[] | readonly DecorationOptions[]>),\n options: UseEditorDecorationsOptions = {},\n) {\n let decorationTypeDisposable: Disposable | undefined\n const decorationType = computed<TextEditorDecorationType>(() => {\n decorationTypeDisposable?.dispose()\n decorationTypeDisposable = undefined\n\n const decorationTypeOrOptionsValue = toValue(decorationTypeOrOptions)\n if ('key' in decorationTypeOrOptionsValue) {\n return decorationTypeOrOptionsValue\n }\n\n const decoration = window.createTextEditorDecorationType(decorationTypeOrOptionsValue)\n decorationTypeDisposable = decoration\n return decoration\n })\n onScopeDispose(() => decorationTypeDisposable?.dispose())\n\n const update = async () => {\n const editorValue = toValue(editor)\n if (!editorValue)\n return\n\n editorValue.setDecorations(\n decorationType.value,\n typeof decorations === 'function'\n ? await decorations(editorValue)\n : unref(decorations),\n )\n }\n\n if (options.watchDocumentChange ?? true) {\n useDisposable(workspace.onDidChangeTextDocument(async (ev) => {\n if (toValue(editor)?.document === ev.document) {\n await update()\n }\n }))\n }\n\n if (options.immediate ?? true) {\n update()\n }\n\n return {\n /**\n * Manually trigger the decoration update.\n */\n update,\n }\n}\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { env } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode env.shell}\n */\nexport const useEnvShell = defineService(() => {\n const defaultShell = shallowRef(env.shell)\n\n useDisposable(env.onDidChangeShell((ev) => {\n defaultShell.value = ev\n }))\n\n return computed(() => defaultShell.value)\n})\n","import type { Disposable, Event } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @category utilities\n * @reactive {@linkcode Event}\n */\nexport function useEvent<T>(event: Event<T>, listeners?: ((e: T) => any)[]): Event<T> {\n const wrapped = (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]) => {\n return useDisposable(event(listener, thisArgs, disposables))\n }\n\n listeners?.forEach(listener => wrapped(listener))\n\n return wrapped\n}\n","import type { Event } from 'vscode'\nimport { EventEmitter } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useEvent } from './useEvent'\n\ninterface UseEventEmitterReturn<T> {\n emitter: EventEmitter<T>\n event: Event<T>\n fire: EventEmitter<T>['fire']\n}\n\n/**\n * @category utilities\n * @reactive {@linkcode EventEmitter}\n */\nexport function useEventEmitter<T>(eventEmitter?: EventEmitter<T>, listeners?: ((e: T) => any)[]): UseEventEmitterReturn<T>\nexport function useEventEmitter<T>(listeners: ((e: T) => any)[]): UseEventEmitterReturn<T>\nexport function useEventEmitter<T>(eventEmitterOrListeners?: EventEmitter<T> | ((e: T) => any)[], listeners2: ((e: T) => any)[] = []) {\n const listeners = Array.isArray(eventEmitterOrListeners) ? eventEmitterOrListeners : listeners2 ?? []\n const emitter = useDisposable(Array.isArray(eventEmitterOrListeners) || eventEmitterOrListeners == null ? new EventEmitter<T>() : eventEmitterOrListeners)\n const event = useEvent(emitter.event, listeners)\n\n return {\n emitter,\n event,\n fire: emitter.fire.bind(emitter),\n }\n}\n","import type { WritableComputedRef } from '@reactive-vscode/reactivity'\nimport type { ExtensionContext } from 'vscode'\nimport { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { extensionContext } from '../utils'\nimport { useDisposable } from './useDisposable'\n\nexport type ExtensionSecretRef = WritableComputedRef<string | null | undefined, string | undefined> & {\n /**\n * Set the secret value. Compared to directly setting the `value`, this method\n * returns a promise that resolves when the secret has been stored.\n */\n set: (newValue: string) => Promise<void>\n /**\n * Remove the secret value. Compared to directly setting the `value` to `undefined`,\n * this method returns a promise that resolves when the secret has been deleted.\n */\n remove: () => Promise<void>\n}\n\n/**\n * Get a reactive secret value from the extension's secrets.\n *\n * - `null` indicates that the value has not been loaded yet.\n * - `undefined` indicates that there is no value stored for the given key.\n *\n * @reactive {@linkcode ExtensionContext.secrets}\n * @category extension\n */\nexport function useExtensionSecret(key: string): ExtensionSecretRef {\n const secrets = extensionContext.value!.secrets\n\n const value = shallowRef<string | null | undefined>(null)\n\n secrets.get(key).then((secret) => {\n value.value = secret\n })\n\n useDisposable(secrets.onDidChange(async (ev) => {\n if (ev.key === key) {\n value.value = await secrets.get(key)\n }\n }))\n\n const set = async (newValue: string) => {\n value.value = newValue\n await secrets.store(key, newValue)\n }\n\n const remove = async () => {\n value.value = undefined\n await secrets.delete(key)\n }\n\n const result = computed({\n get() {\n return value.value\n },\n set(newValue: string | undefined) {\n if (newValue === undefined) {\n remove()\n }\n else {\n set(newValue)\n }\n },\n }) as ExtensionSecretRef\n result.set = set\n result.remove = remove\n\n return result\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\r\nimport type { FileSystemWatcher, GlobPattern, Uri } from 'vscode'\r\nimport { computed, onScopeDispose, readonly, shallowReactive, toValue, watch } from '@reactive-vscode/reactivity'\r\nimport { workspace } from 'vscode'\r\nimport { useEventEmitter } from './useEventEmitter'\r\n\r\n/**\r\n * @reactive {@linkcode workspace.createFileSystemWatcher}\r\n */\r\nexport function useFileSystemWatcher(\r\n globPatterns: MaybeRefOrGetter<GlobPattern | readonly GlobPattern[] | ReadonlySet<GlobPattern>>,\r\n handlers: {\r\n onDidCreate?: false | ((ev: Uri) => void)\r\n onDidChange?: false | ((ev: Uri) => void)\r\n onDidDelete?: false | ((ev: Uri) => void)\r\n } = {},\r\n) {\r\n const watchers = shallowReactive(new Map<GlobPattern, FileSystemWatcher>())\r\n const createEmitter = useEventEmitter<Uri>()\r\n const changeEmitter = useEventEmitter<Uri>()\r\n const deleteEmitter = useEventEmitter<Uri>()\r\n\r\n const patterns = computed(() => {\r\n const patterns = toValue(globPatterns)\r\n return patterns instanceof Set\r\n ? patterns\r\n : new Set(\r\n Array.isArray(patterns)\r\n ? patterns\r\n : [patterns],\r\n )\r\n })\r\n\r\n function updateWatchers() {\r\n const newPatterns = patterns.value\r\n for (const [pattern, watcher] of watchers) {\r\n if (!newPatterns.has(pattern)) {\r\n watcher.dispose()\r\n watchers.delete(pattern)\r\n }\r\n }\r\n for (const pattern of newPatterns) {\r\n if (!watchers.has(pattern)) {\r\n const w = workspace.createFileSystemWatcher(\r\n pattern,\r\n handlers.onDidCreate === false,\r\n handlers.onDidChange === false,\r\n handlers.onDidDelete === false,\r\n )\r\n w.onDidCreate(createEmitter.fire)\r\n w.onDidChange(changeEmitter.fire)\r\n w.onDidDelete(deleteEmitter.fire)\r\n watchers.set(pattern, w)\r\n }\r\n }\r\n }\r\n\r\n function clearWatchers() {\r\n for (const watcher of watchers.values()) {\r\n watcher.dispose()\r\n }\r\n watchers.clear()\r\n }\r\n\r\n updateWatchers()\r\n watch(patterns, updateWatchers)\r\n onScopeDispose(clearWatchers)\r\n\r\n if (typeof handlers.onDidCreate === 'function') {\r\n createEmitter.event(handlers.onDidCreate)\r\n }\r\n if (typeof handlers.onDidChange === 'function') {\r\n changeEmitter.event(handlers.onDidChange)\r\n }\r\n if (typeof handlers.onDidDelete === 'function') {\r\n deleteEmitter.event(handlers.onDidDelete)\r\n }\r\n\r\n return {\r\n watchers: readonly(watchers),\r\n /**\r\n * @see {@link FileSystemWatcher.onDidCreate}\r\n */\r\n onDidCreate: createEmitter.event,\r\n /**\r\n * @see {@link FileSystemWatcher.onDidChange}\r\n */\r\n onDidChange: changeEmitter.event,\r\n /**\r\n * @see {@link FileSystemWatcher.onDidDelete}\r\n */\r\n onDidDelete: deleteEmitter.event,\r\n }\r\n}\r\n","import type { WritableComputedRef } from '@reactive-vscode/reactivity'\nimport type { Memento } from 'vscode'\nimport { computed, shallowRef } from '@reactive-vscode/reactivity'\n\nexport type MementoItemRef<T> = WritableComputedRef<T, T | undefined> & {\n /**\n * Update the memento value. Compared to directly setting the `value`, this method\n * returns a promise that resolves when the value has been stored.\n *\n * If `undefined` is passed, the key will be deleted from the memento.\n *\n * @see {@linkcode Memento.update}\n */\n update: (newValue: T | undefined) => Promise<void>\n}\n\n/**\n * @internal\n */\nexport function useMementoItem<T>(memento: Memento, key: string): MementoItemRef<T | undefined>\nexport function useMementoItem<T>(memento: Memento, key: string, defaultValue: T): MementoItemRef<T>\nexport function useMementoItem<T>(memento: Memento, key: string, defaultValue?: any) {\n const value = shallowRef(memento.get<T>(key, defaultValue))\n\n const result = computed({\n get() {\n return value.value\n },\n set(newValue: T | undefined) {\n result.update(newValue)\n },\n }) as MementoItemRef<T | undefined>\n\n result.update = async (newValue: T | undefined) => {\n value.value = newValue === undefined ? defaultValue : newValue\n await memento.update(key, newValue)\n }\n\n return result\n}\n","import type { Ref } from '@reactive-vscode/reactivity'\nimport type { ExtensionContext } from 'vscode'\nimport type { MementoItemRef } from './useMementoItem'\nimport { extensionContext } from '../utils'\nimport { useMementoItem } from './useMementoItem'\n\n/**\n * @reactive {@linkcode ExtensionContext.globalState}\n * @category extension\n */\nexport function useGlobalState<T>(key: string): MementoItemRef<T>\nexport function useGlobalState<T>(key: string, defaultValue: T): Ref<T>\nexport function useGlobalState<T>(key: string, defaultValue?: any) {\n return useMementoItem<T>(extensionContext.value!.globalState, key, defaultValue)\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { QuickInput } from 'vscode'\nimport { toValue, watchEffect } from '@reactive-vscode/reactivity'\nimport { useReactiveEvents } from './useReactiveEvents'\nimport { useReactiveOptions } from './useReactiveOptions'\n\nexport interface QuickInputOptions {\n /**\n * An optional title.\n */\n title?: MaybeRefOrGetter<string | undefined>\n\n /**\n * An optional current step count.\n */\n step?: MaybeRefOrGetter<number | undefined>\n\n /**\n * An optional total step count.\n */\n totalSteps?: MaybeRefOrGetter<number | undefined>\n\n /**\n * If the UI should allow for user input. Defaults to true.\n *\n * Change this to false, e.g., while validating user input or\n * loading data for the next step in user input.\n */\n enabled?: MaybeRefOrGetter<boolean>\n\n /**\n * If the UI should show a progress indicator. Defaults to false.\n *\n * Change this to true, e.g., while loading more data or validating\n * user input.\n */\n busy?: MaybeRefOrGetter<boolean>\n\n /**\n * If the UI should stay open even when losing UI focus. Defaults to false.\n * This setting is ignored on iPad and is always false.\n */\n ignoreFocusOut?: MaybeRefOrGetter<boolean>\n\n visible?: MaybeRefOrGetter<boolean>\n\n /**\n * An event signaling when this input UI is hidden.\n *\n * There are several reasons why this UI might have to be hidden and the extension will be notified\n * through {@link QuickInput.onDidHide onDidHide}. Examples include: an explicit call to\n * {@link QuickInput.hide hide}, the user pressing Esc, some other input UI opening, etc.\n */\n onDidHide?: () => void\n}\n\n/**\n * @internal\n */\nexport function useQuickInputOptions(\n quickInput: QuickInput,\n options: QuickInputOptions,\n) {\n useReactiveOptions(quickInput, options, [\n 'title',\n 'step',\n 'totalSteps',\n 'enabled',\n 'busy',\n 'ignoreFocusOut',\n ])\n\n useReactiveEvents(quickInput, options, [\n 'onDidHide',\n ])\n\n if (options.visible != null) {\n watchEffect(() => {\n if (toValue(options.visible)) {\n quickInput.show()\n }\n else {\n quickInput.hide()\n }\n })\n }\n}\n","import type { MaybeRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { InputBox, InputBoxValidationMessage, QuickInputButton } from 'vscode'\nimport type { QuickInputOptions } from './useQuickInputOptions'\nimport { shallowRef, watchEffect } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useQuickInputOptions } from './useQuickInputOptions'\nimport { useReactiveEvents } from './useReactiveEvents'\nimport { useReactiveOptions } from './useReactiveOptions'\n\nexport interface InputBoxProps extends QuickInputOptions {\n /**\n * The current input value.\n *\n * If provided as a ref, the value will be kept in sync with the input box's value, just like `v-model`.\n */\n value?: MaybeRef<string>\n\n /**\n * Selection range in the input value.\n *\n * Defined as tuple of two numbers where the first is the inclusive start index and the second the\n * exclusive end index. When `undefined` the whole pre-filled value will be selected, when empty\n * (start equals end) only the cursor will be set, otherwise the defined range will be selected.\n *\n * This property does not get updated when the user types or makes a selection, but it can be updated\n * by the extension.\n */\n valueSelection?: MaybeRefOrGetter<readonly [number, number] | undefined>\n\n /**\n * Optional placeholder text shown when no value has been input.\n */\n placeholder?: MaybeRefOrGetter<string | undefined>\n\n /**\n * Determines if the input value should be hidden. Defaults to `false`.\n */\n password?: MaybeRefOrGetter<boolean>\n\n /**\n * An event signaling when the value has changed.\n */\n onDidChangeValue?: (value: string) => void\n\n /**\n * An event signaling when the user indicated acceptance of the input value.\n */\n onDidAccept?: () => void\n\n /**\n * Buttons for actions in the UI.\n */\n buttons?: MaybeRefOrGetter<readonly QuickInputButton[]>\n\n /**\n * An event signaling when a button was triggered.\n */\n onDidTriggerButton?: (button: QuickInputButton) => void\n\n /**\n * An optional prompt text providing some ask or explanation to the user.\n */\n prompt?: MaybeRefOrGetter<string | undefined>\n\n /**\n * An optional validation message indicating a problem with the current input value.\n *\n * By setting a string, the InputBox will use a default {@link InputBoxValidationSeverity} of Error.\n * Returning `undefined` clears the validation message.\n */\n validationMessage?: MaybeRefOrGetter<string | InputBoxValidationMessage | undefined>\n}\n\n/**\n * @reactive {@linkcode window.createInputBox}\n */\nexport function useInputBox(\n options: InputBoxProps = {},\n) {\n const inputBox = useDisposable(window.createInputBox())\n\n useQuickInputOptions(inputBox, options)\n\n useReactiveOptions(inputBox, options, [\n 'valueSelection',\n 'placeholder',\n 'password',\n 'buttons',\n 'prompt',\n 'validationMessage',\n ])\n\n useReactiveEvents(inputBox, options, [\n 'onDidChangeValue',\n 'onDidAccept',\n 'onDidTriggerButton',\n ])\n\n const value = shallowRef(options.value ?? inputBox.value)\n inputBox.onDidChangeValue(v => value.value = v)\n watchEffect(() => inputBox.value = value.value)\n\n return {\n ...inputBox,\n /**\n * @see {@linkcode InputBox.value}\n */\n value,\n }\n}\n","import type { ColorTheme } from 'vscode'\nimport { computed } from '@reactive-vscode/reactivity'\nimport { ColorThemeKind } from 'vscode'\nimport { defineService } from '../utils'\nimport { useActiveColorTheme } from './useActiveColorTheme'\n\n/**\n * Determines if the current color theme is dark.\n *\n * @see {@linkcode ColorTheme.kind}\n * @category window\n */\nexport const useIsDarkTheme = defineService(() => {\n const theme = useActiveColorTheme()\n\n return computed(() => theme.value.kind === ColorThemeKind.Dark || theme.value.kind === ColorThemeKind.HighContrast)\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { env } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode env.isTelemetryEnabled}\n */\nexport const useIsTelemetryEnabled = defineService(() => {\n const isTelemetryEnabled = shallowRef(env.isTelemetryEnabled)\n\n useDisposable(env.onDidChangeTelemetryEnabled((ev) => {\n isTelemetryEnabled.value = ev\n }))\n\n return computed(() => isTelemetryEnabled.value)\n})\n","import type { ComputedRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport { computed, toRaw, toValue } from '@reactive-vscode/reactivity'\nimport { l10n } from 'vscode'\n\n/**\n * @reactive {@linkcode l10n.t}\n */\nexport function useL10nText(message: MaybeRefOrGetter<string>, ...args: MaybeRefOrGetter<string | number | boolean>[]): ComputedRef<string>\nexport function useL10nText(message: MaybeRefOrGetter<string>, args: MaybeRefOrGetter<Record<string, any>>): ComputedRef<string>\nexport function useL10nText(message: MaybeRefOrGetter<string>, ...args: MaybeRefOrGetter<string | number | boolean>[] | [MaybeRefOrGetter<Record<string, any>>]) {\n return computed(() => {\n const arg0 = toValue(args[0])\n return typeof arg0 === 'object'\n ? l10n.t(toValue(message), toRaw(arg0))\n : l10n.t(toValue(message), ...(args as MaybeRefOrGetter<string | number | boolean>[]).map(toValue))\n })\n}\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { lm } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode lm.tools}\n * @category lm\n */\nexport const useLmTools = defineService(() => {\n const tools = shallowRef(lm.tools)\n\n useDisposable(lm.onDidChangeChatModels(() => {\n tools.value = lm.tools\n }))\n\n return computed(() => tools.value)\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { env } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode env.logLevel}\n */\nexport const useLogLevel = defineService(() => {\n const logLevel = shallowRef(env.logLevel)\n\n useDisposable(env.onDidChangeLogLevel((ev) => {\n logLevel.value = ev\n }))\n\n return computed(() => logLevel.value)\n})\n","import type { NotebookEditor } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode NotebookEditor.selections}\n * @category editor\n */\nexport function useNotebookEditorSelections(notebookEditor: MaybeNullableRefOrGetter<NotebookEditor>) {\n const selections = shallowRef(toValue(notebookEditor)?.selections ?? [])\n\n if (isRef(notebookEditor) || typeof notebookEditor === 'function') {\n watch(notebookEditor, (notebookEditor) => {\n selections.value = notebookEditor?.selections ?? []\n })\n }\n\n useDisposable(window.onDidChangeNotebookEditorSelection((ev) => {\n if (ev.notebookEditor === toValue(notebookEditor)) {\n selections.value = ev.selections\n }\n }))\n\n return computed({\n get() {\n return selections.value\n },\n set(newSelections) {\n selections.value = newSelections\n const editor = toValue(notebookEditor)\n if (editor)\n editor.selections = newSelections\n },\n })\n}\n","import type { NotebookEditor, NotebookRange } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed } from '@reactive-vscode/reactivity'\nimport { useNotebookEditorSelections } from './useNotebookEditorSelections'\n\n/**\n * @reactive {@linkcode NotebookEditor.selection}\n * @category editor\n */\nexport function useNotebookEditorSelection(notebookEditor: MaybeNullableRefOrGetter<NotebookEditor>) {\n const selections = useNotebookEditorSelections(notebookEditor)\n\n return computed<NotebookRange | undefined>({\n get() {\n return selections.value[0]\n },\n set(newSelection) {\n selections.value = newSelection ? [newSelection] : []\n },\n })\n}\n","import type { NotebookEditor } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode NotebookEditor.visibleRanges}\n * @category editor\n */\nexport function useNotebookEditorVisibleRanges(notebookEditor: MaybeNullableRefOrGetter<NotebookEditor>) {\n const ranges = shallowRef(toValue(notebookEditor)?.visibleRanges ?? [])\n\n if (isRef(notebookEditor) || typeof notebookEditor === 'function') {\n watch(notebookEditor, (notebookEditor) => {\n ranges.value = notebookEditor?.visibleRanges ?? []\n })\n }\n\n useDisposable(window.onDidChangeNotebookEditorVisibleRanges((ev) => {\n if (ev.notebookEditor === toValue(notebookEditor)) {\n ranges.value = ev.visibleRanges\n }\n }))\n\n return computed(() => ranges.value)\n}\n","import { shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.terminals}\n * @category terminal\n */\nexport const useOpenedTerminals = defineService(() => {\n const openedTerminals = shallowRef(window.terminals)\n\n function update() {\n openedTerminals.value = window.terminals\n }\n\n useDisposable(window.onDidOpenTerminal(update))\n useDisposable(window.onDidCloseTerminal(update))\n\n return openedTerminals\n})\n","import type { MaybeRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { QuickInputButton, QuickPick, QuickPickItem, QuickPickItemButtonEvent } from 'vscode'\nimport type { QuickInputOptions } from './useQuickInputOptions'\nimport { shallowRef, watchEffect } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useQuickInputOptions } from './useQuickInputOptions'\nimport { useReactiveEvents } from './useReactiveEvents'\nimport { useReactiveOptions } from './useReactiveOptions'\n\nexport interface QuickPickProps<T extends QuickPickItem> extends QuickInputOptions {\n /**\n * The current value of the filter text.\n *\n * If provided as a ref, the value will be kept in sync with the quick pick's value, just like `v-model`.\n */\n value?: MaybeRef<string>\n\n /**\n * Optional placeholder shown in the filter textbox when no filter has been entered.\n */\n placeholder?: MaybeRefOrGetter<string | undefined>\n\n /**\n * An event signaling when the value of the filter text has changed.\n */\n onDidChangeValue?: (value: string) => void\n\n /**\n * An event signaling when the user indicated acceptance of the selected item(s).\n */\n onDidAccept?: () => void\n\n /**\n * Buttons for actions in the UI.\n */\n buttons?: MaybeRefOrGetter<readonly QuickInputButton[]>\n\n /**\n * An event signaling when a button was triggered.\n *\n * This event fires for buttons stored in the {@link QuickPick.buttons buttons} array. This event does\n * not fire for buttons on a {@link QuickPickItem}.\n */\n onDidTriggerButton?: (button: QuickInputButton) => void\n\n /**\n * An event signaling when a button in a particular {@link QuickPickItem} was triggered.\n *\n * This event does not fire for buttons in the title bar which are part of {@link QuickPick.buttons buttons}.\n */\n onDidTriggerItemButton?: (event: QuickPickItemButtonEvent<T>) => void\n\n /**\n * Items to pick from. This can be read and updated by the extension.\n */\n items?: MaybeRefOrGetter<readonly T[]>\n\n /**\n * If multiple items can be selected at the same time. Defaults to false.\n */\n canSelectMany?: MaybeRefOrGetter<boolean>\n\n /**\n * If the filter text should also be matched against the description of the items. Defaults to false.\n */\n matchOnDescription?: MaybeRefOrGetter<boolean>\n\n /**\n * If the filter text should also be matched against the detail of the items. Defaults to false.\n */\n matchOnDetail?: MaybeRefOrGetter<boolean>\n\n /**\n * An optional flag to maintain the scroll position of the quick pick when the quick pick items are updated. Defaults to false.\n */\n keepScrollPosition?: MaybeRefOrGetter<boolean>\n\n /**\n * Items to pick from. This can be read and updated by the extension.\n */\n activeItems?: MaybeRef<readonly T[]>\n\n /**\n * An event signaling when the active items have changed.\n *\n * If provided as a ref, the value will be kept in sync with the quick pick's value, just like `v-model`.\n */\n onDidChangeActive?: (items: readonly T[]) => void\n\n /**\n * Initial selected items. This can be read and updated by the extension.\n */\n selectedItems?: MaybeRef<readonly T[]>\n\n /**\n * An event signaling when the selected items have changed.\n *\n * If provided as a ref, the value will be kept in sync with the quick pick's value, just like `v-model`.\n */\n onDidChangeSelection?: (items: readonly T[]) => void\n}\n\n/**\n * Creates a customizable quick pick UI.\n *\n * @reactive {@linkcode window.createQuickPick}\n */\nexport function useQuickPick<T extends QuickPickItem>(\n options: QuickPickProps<T> = {},\n) {\n const quickPick = useDisposable(window.createQuickPick<T>())\n\n useQuickInputOptions(quickPick, options)\n\n useReactiveOptions(quickPick, options, [\n 'items',\n 'buttons',\n 'title',\n 'step',\n 'totalSteps',\n 'enabled',\n 'busy',\n 'ignoreFocusOut',\n 'placeholder',\n 'canSelectMany',\n 'matchOnDescription',\n 'matchOnDetail',\n 'keepScrollPosition',\n ])\n\n useReactiveEvents(quickPick, options, [\n 'onDidChangeValue',\n 'onDidAccept',\n 'onDidTriggerButton',\n 'onDidTriggerItemButton',\n 'onDidChangeActive',\n 'onDidChangeSelection',\n ])\n\n const value = shallowRef(options.value ?? quickPick.value)\n quickPick.onDidChangeValue(v => value.value = v)\n watchEffect(() => quickPick.value = value.value)\n\n const activeItems = shallowRef(options.activeItems ?? quickPick.activeItems)\n quickPick.onDidChangeActive(items => activeItems.value = items)\n watchEffect(() => quickPick.activeItems = activeItems.value)\n\n const selectedItems = shallowRef(options.selectedItems ?? quickPick.selectedItems)\n quickPick.onDidChangeSelection(items => selectedItems.value = items)\n watchEffect(() => quickPick.selectedItems = selectedItems.value)\n\n return {\n ...quickPick,\n /**\n * @see {@linkcode QuickPick.value}\n */\n value,\n /**\n * @see {@linkcode QuickPick.activeItems}\n */\n activeItems,\n /**\n * @see {@linkcode QuickPick.selectedItems}\n */\n selectedItems,\n }\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { StatusBarAlignment, StatusBarItem } from 'vscode'\nimport { toValue, watchEffect } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useReactiveOptions } from './useReactiveOptions'\n\nexport interface UseStatusBarItemOptions {\n id?: string\n alignment?: StatusBarAlignment\n priority?: number\n\n /**\n * @see {@linkcode StatusBarItem.name}\n */\n name?: MaybeRefOrGetter<StatusBarItem['name']>\n\n /**\n * @see {@linkcode StatusBarItem.text}\n */\n text?: MaybeRefOrGetter<StatusBarItem['text']>\n\n /**\n * @see {@linkcode StatusBarItem.tooltip}\n */\n tooltip?: MaybeRefOrGetter<StatusBarItem['tooltip']>\n\n /**\n * @see {@linkcode StatusBarItem.color}\n */\n color?: MaybeRefOrGetter<StatusBarItem['color']>\n\n /**\n * @see {@linkcode StatusBarItem.backgroundColor}\n */\n backgroundColor?: MaybeRefOrGetter<StatusBarItem['backgroundColor']>\n\n /**\n * @see {@linkcode StatusBarItem.command}\n */\n command?: MaybeRefOrGetter<StatusBarItem['command']>\n\n /**\n * @see {@linkcode StatusBarItem.accessibilityInformation}\n */\n accessibilityInformation?: MaybeRefOrGetter<StatusBarItem['accessibilityInformation']>\n\n /**\n * Whether the status bar item is visible\n */\n visible?: MaybeRefOrGetter<boolean>\n}\n\n/**\n * @reactive {@linkcode window.createStatusBarItem}\n */\nexport function useStatusBarItem(options: UseStatusBarItemOptions): StatusBarItem {\n const item = useDisposable(options.id\n ? window.createStatusBarItem(options.id, options.alignment, options.priority)\n : window.createStatusBarItem(options.alignment, options.priority))\n\n useReactiveOptions(item, options, [\n 'name',\n 'text',\n 'tooltip',\n 'color',\n 'backgroundColor',\n 'command',\n 'accessibilityInformation',\n ])\n\n if (options.visible != null) {\n watchEffect(() => {\n if (toValue(options.visible)) {\n item.show()\n }\n else {\n item.hide()\n }\n })\n }\n\n return item\n}\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { tasks } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode tasks.taskExecutions}\n */\nexport const useTaskExecutions = defineService(() => {\n const taskExecutions = shallowRef(tasks.taskExecutions)\n\n function update() {\n taskExecutions.value = tasks.taskExecutions\n }\n\n useDisposable(tasks.onDidStartTask(update))\n useDisposable(tasks.onDidEndTask(update))\n\n return computed(() => taskExecutions.value)\n})\n","import type { ComputedRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { Terminal, TerminalShellIntegration } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode Terminal.shellIntegration}\n * @category terminal\n */\nexport function useTerminalShellIntegration(terminal: MaybeRefOrGetter<Terminal>): ComputedRef<TerminalShellIntegration>\nexport function useTerminalShellIntegration(terminal: MaybeNullableRefOrGetter<Terminal>): ComputedRef<TerminalShellIntegration | undefined>\nexport function useTerminalShellIntegration(terminal: MaybeNullableRefOrGetter<Terminal>) {\n const shellIntegration = shallowRef(toValue(terminal)?.shellIntegration)\n\n if (isRef(terminal) || typeof terminal === 'function') {\n watch(terminal, (terminal) => {\n shellIntegration.value = terminal?.shellIntegration\n })\n }\n\n useDisposable(window.onDidChangeTerminalShellIntegration((ev) => {\n if (ev.terminal === toValue(terminal))\n shellIntegration.value = ev.shellIntegration\n }))\n\n return computed(() => shellIntegration.value)\n}\n","import type { ComputedRef, MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { Terminal, TerminalState } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode Terminal.state}\n * @category terminal\n */\nexport function useTerminalState(terminal: MaybeRefOrGetter<Terminal>): ComputedRef<TerminalState>\nexport function useTerminalState(terminal: MaybeNullableRefOrGetter<Terminal>): ComputedRef<TerminalState | undefined>\nexport function useTerminalState(terminal: MaybeNullableRefOrGetter<Terminal>) {\n const state = shallowRef(toValue(terminal)?.state)\n\n if (isRef(terminal) || typeof terminal === 'function') {\n watch(terminal, (terminal) => {\n state.value = terminal?.state\n })\n }\n\n useDisposable(window.onDidChangeTerminalState((ev) => {\n if (ev === toValue(terminal))\n state.value = ev.state\n }))\n\n return computed(() => state.value)\n}\n","import type { ComputedRef } from '@reactive-vscode/reactivity'\nimport type { ExtensionTerminalOptions, Terminal, TerminalOptions, TerminalShellIntegration, TerminalState } from 'vscode'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useTerminalShellIntegration } from './useTerminalShellIntegration'\nimport { useTerminalState } from './useTerminalState'\n\ninterface UseTerminalReturn extends Pick<Terminal, 'sendText' | 'show' | 'hide' | 'dispose'> {\n terminal: Terminal\n\n /**\n * @see {@linkcode Terminal.state}\n */\n state: ComputedRef<TerminalState>\n\n /**\n * @see {@linkcode Terminal.shellIntegration}\n */\n shellIntegration: ComputedRef<TerminalShellIntegration>\n}\n\n/**\n * @category terminal\n * @reactive {@linkcode window.createTerminal}\n */\nexport function useTerminal(name?: string, shellPath?: string, shellArgs?: readonly string[] | string): UseTerminalReturn\nexport function useTerminal(options: TerminalOptions): UseTerminalReturn\nexport function useTerminal(options: ExtensionTerminalOptions): UseTerminalReturn\nexport function useTerminal(...args: any[]): UseTerminalReturn {\n const terminal = useDisposable(window.createTerminal(...args))\n\n return {\n terminal,\n state: useTerminalState(terminal),\n shellIntegration: useTerminalShellIntegration(terminal),\n sendText: terminal.sendText.bind(terminal),\n show: terminal.show.bind(terminal),\n hide: terminal.hide.bind(terminal),\n dispose: terminal.dispose.bind(terminal),\n }\n}\n","import type { MaybeRef } from '@reactive-vscode/reactivity'\nimport type { Nullable } from '../utils'\nimport { isRef, watchEffect } from '@reactive-vscode/reactivity'\nimport { commands } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\nexport type TextEditorCommandCallback = Parameters<typeof commands.registerTextEditorCommand>[1]\n\n/**\n * @reactive {@linkcode commands.registerTextEditorCommand}\n * @category commands\n */\nexport function useTextEditorCommand(command: string, callback: MaybeRef<Nullable<TextEditorCommandCallback>>) {\n if (isRef(callback)) {\n watchEffect((onCleanup) => {\n if (callback.value) {\n const disposable = commands.registerTextEditorCommand(command, callback.value)\n onCleanup(() => disposable.dispose())\n }\n })\n }\n else if (callback) {\n useDisposable(commands.registerTextEditorCommand(command, callback))\n }\n}\n","import type { MaybeRef } from '@reactive-vscode/reactivity'\nimport type { commands } from 'vscode'\nimport type { Nullable } from '../utils'\nimport type { TextEditorCommandCallback } from './useTextEditorCommand'\nimport { useTextEditorCommand } from './useTextEditorCommand'\n\n/**\n * @reactive {@linkcode commands.registerTextEditorCommand}\n * @category commands\n */\nexport function useTextEditorCommands(commands: Record<string, MaybeRef<Nullable<TextEditorCommandCallback>>>) {\n for (const [command, callback] of Object.entries(commands)) {\n useTextEditorCommand(command, callback)\n }\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { TextEditor, TextEditorSelectionChangeKind } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode TextEditor.selections}\n * @category editor\n */\nexport function useTextEditorSelections(textEditor: MaybeNullableRefOrGetter<TextEditor>, acceptKind?: MaybeRefOrGetter<(TextEditorSelectionChangeKind | undefined)[]>) {\n const selections = shallowRef(toValue(textEditor)?.selections ?? [])\n\n if (isRef(textEditor) || typeof textEditor === 'function') {\n watch(textEditor, (textEditor) => {\n selections.value = textEditor?.selections ?? []\n })\n }\n\n useDisposable(window.onDidChangeTextEditorSelection((ev) => {\n if (ev.textEditor === toValue(textEditor)) {\n const kinds = toValue(acceptKind)\n if (!kinds || kinds.includes(ev.kind)) {\n selections.value = ev.selections\n }\n }\n }))\n\n return computed({\n get() {\n return selections.value\n },\n set(newSelections) {\n selections.value = newSelections\n const editor = toValue(textEditor)\n if (editor)\n editor.selections = newSelections\n },\n })\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { Selection, TextEditor, TextEditorSelectionChangeKind } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed } from '@reactive-vscode/reactivity'\nimport { useTextEditorSelections } from './useTextEditorSelections'\n\n/**\n * @reactive {@linkcode TextEditor.selection}\n * @category editor\n */\nexport function useTextEditorSelection(textEditor: MaybeNullableRefOrGetter<TextEditor>, acceptKind?: MaybeRefOrGetter<(TextEditorSelectionChangeKind | undefined)[]>) {\n const selections = useTextEditorSelections(textEditor, acceptKind)\n\n return computed<Selection | undefined>({\n get() {\n return selections.value[0]\n },\n set(newSelection) {\n selections.value = newSelection ? [newSelection] : []\n },\n })\n}\n","import type { TextEditor } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode TextEditor.viewColumn}\n * @category editor\n */\nexport function useTextEditorViewColumn(textEditor: MaybeNullableRefOrGetter<TextEditor>) {\n const viewColumn = shallowRef(toValue(textEditor)?.viewColumn)\n\n if (isRef(textEditor) || typeof textEditor === 'function') {\n watch(textEditor, (textEditor) => {\n viewColumn.value = textEditor?.viewColumn\n })\n }\n\n useDisposable(window.onDidChangeTextEditorViewColumn((ev) => {\n if (ev.textEditor === toValue(textEditor)) {\n viewColumn.value = ev.viewColumn\n }\n }))\n\n return computed(() => viewColumn.value)\n}\n","import type { TextEditor } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils'\nimport { computed, isRef, shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode TextEditor.visibleRanges}\n * @category editor\n */\nexport function useTextEditorVisibleRanges(textEditor: MaybeNullableRefOrGetter<TextEditor>) {\n const ranges = shallowRef(toValue(textEditor)?.visibleRanges ?? [])\n\n if (isRef(textEditor) || typeof textEditor === 'function') {\n watch(textEditor, (textEditor) => {\n ranges.value = textEditor?.visibleRanges ?? []\n })\n }\n\n useDisposable(window.onDidChangeTextEditorVisibleRanges((ev) => {\n if (ev.textEditor === toValue(textEditor)) {\n ranges.value = ev.visibleRanges\n }\n }))\n\n return computed(() => ranges.value)\n}\n","import type { ComputedRef } from '@reactive-vscode/reactivity'\nimport type { TreeView, WebviewView } from 'vscode'\nimport type { MaybeNullableRefOrGetter } from '../utils/types'\nimport { computed, isRef, ref, toValue, watch, watchEffect } from '@reactive-vscode/reactivity'\n\ntype ViewWithVisibility = Pick<TreeView<unknown> | WebviewView, 'visible' | 'onDidChangeVisibility'>\n\n/**\n * @reactive {@linkcode TreeView.visible}, {@linkcode WebviewView.visible}\n * @category view\n */\nexport function useViewVisibility(view: MaybeNullableRefOrGetter<ViewWithVisibility>): ComputedRef<boolean> {\n const visible = ref(toValue(view)?.visible)\n\n if (isRef(view) || typeof view === 'function') {\n watch(view, (newView) => {\n visible.value = newView?.visible\n })\n }\n\n watchEffect((onCleanup) => {\n const viewValue = toValue(view)\n if (viewValue) {\n const disposable = viewValue.onDidChangeVisibility(() => {\n visible.value = viewValue.visible\n })\n onCleanup(() => disposable.dispose())\n }\n })\n\n return computed(() => !!visible.value)\n}\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\nimport type { TreeDataProvider, TreeItem, TreeView, TreeViewOptions } from 'vscode'\nimport type { Awaitable, EventListener } from '../utils'\nimport { shallowRef, toValue, watch } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { useDisposable } from './useDisposable'\nimport { useEventEmitter } from './useEventEmitter'\nimport { useReactiveEvents } from './useReactiveEvents'\nimport { useReactiveOptions } from './useReactiveOptions'\nimport { useViewVisibility } from './useViewVisibility'\n\nexport interface TreeViewNode {\n readonly children?: Awaitable<this[]>\n readonly treeItem: TreeItem | Thenable<TreeItem>\n}\n\nexport type TreeViewProps<T>\n = & Omit<TreeViewOptions<T>, 'treeDataProvider'>\n & Pick<TreeDataProvider<T>, 'resolveTreeItem'>\n & {\n /**\n * @see {@linkcode TreeView.onDidExpandElement}\n */\n onDidExpandElement?: EventListener<TreeView<T>['onDidExpandElement']>\n\n /**\n * @see {@linkcode TreeView.onDidCollapseElement}\n */\n onDidCollapseElement?: EventListener<TreeView<T>['onDidCollapseElement']>\n\n /**\n * @see {@linkcode TreeView.onDidChangeSelection}\n */\n onDidChangeSelection?: EventListener<TreeView<T>['onDidChangeSelection']>\n\n /**\n * @see {@linkcode TreeView.onDidChangeVisibility}\n */\n onDidChangeVisibility?: EventListener<TreeView<T>['onDidChangeVisibility']>\n\n /**\n * @see {@linkcode TreeView.onDidChangeCheckboxState}\n */\n onDidChangeCheckboxState?: EventListener<TreeView<T>['onDidChangeCheckboxState']>\n\n /**\n * @see {@linkcode TreeView.message}\n */\n message?: MaybeRefOrGetter<TreeView<T>['message']>\n\n /**\n * @see {@linkcode TreeView.title}\n */\n title?: MaybeRefOrGetter<TreeView<T>['title']>\n\n /**\n * @see {@linkcode TreeView.description}\n */\n description?: MaybeRefOrGetter<TreeView<T>['description']>\n\n /**\n * @see {@linkcode TreeView.badge}\n */\n badge?: MaybeRefOrGetter<TreeView<T>['badge']>\n }\n\n/**\n * @reactive {@linkcode window.createTreeView}\n * @category view\n */\nexport function useTreeView<T extends TreeViewNode>(\n viewId: string,\n treeData: MaybeRefOrGetter<Awaitable<T[]>>,\n options: TreeViewProps<T> = {},\n) {\n const changeEventEmitter = useEventEmitter<void>()\n const childrenToParentMap = new WeakMap<T, T>()\n const view = useDisposable(window.createTreeView<T>(viewId, {\n ...options,\n treeDataProvider: {\n onDidChangeTreeData: changeEventEmitter.event,\n getTreeItem(node: T) {\n return node.treeItem\n },\n async getChildren(node?: T) {\n if (node) {\n const children = await node.children\n children?.forEach(child => childrenToParentMap.set(child, node))\n return children\n }\n return toValue(treeData)\n },\n getParent(node: T) {\n return childrenToParentMap.get(node)\n },\n resolveTreeItem: options.resolveTreeItem,\n },\n }))\n\n watch(treeData, () => changeEventEmitter.fire())\n\n useReactiveOptions(view, options, [\n 'message',\n 'title',\n 'description',\n 'badge',\n ])\n\n useReactiveEvents(view, options, [\n 'onDidExpandElement',\n 'onDidCollapseElement',\n 'onDidChangeSelection',\n 'onDidChangeVisibility',\n 'onDidChangeCheckboxState',\n ])\n\n const selection = shallowRef(view.selection)\n useDisposable(view.onDidChangeSelection((e) => {\n selection.value = e.selection\n }))\n\n return {\n view,\n /**\n * @see {@linkcode TreeView.selection}\n */\n selection,\n /**\n * @see {@linkcode TreeView.visible}\n */\n visible: useViewVisibility(view),\n /**\n * @see {@linkcode TreeView.reveal}\n */\n reveal: view.reveal.bind(view),\n }\n}\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.visibleNotebookEditors}\n * @category editor\n */\nexport const useVisibleNotebookEditors = defineService(() => {\n const visibleNotebookEditors = shallowRef(window.visibleNotebookEditors)\n\n useDisposable(window.onDidChangeVisibleNotebookEditors((ev) => {\n visibleNotebookEditors.value = ev\n }))\n\n return computed(() => visibleNotebookEditors.value)\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.visibleTextEditors}\n * @category editor\n */\nexport const useVisibleTextEditors = defineService(() => {\n const visibleTextEditors = shallowRef(window.visibleTextEditors)\n\n useDisposable(window.onDidChangeVisibleTextEditors((ev) => {\n visibleTextEditors.value = ev\n }))\n\n return computed(() => visibleTextEditors.value)\n})\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, Ref, WritableComputedRef } from '@reactive-vscode/reactivity'\r\nimport { computed, isRef, ref, watch } from '@reactive-vscode/reactivity'\r\nimport { commands } from 'vscode'\r\n\r\n/**\r\n * Reactively set a VS Code context. See [custom when clause context](https://code.visualstudio.com/api/references/when-clause-contexts#add-a-custom-when-clause-context).\r\n *\r\n * @category lifecycle\r\n */\r\nexport function useVscodeContext<T>(\r\n name: string,\r\n value: WritableComputedRef<T>,\r\n): WritableComputedRef<T>\r\nexport function useVscodeContext<T>(\r\n name: string,\r\n value: ComputedRef<T> | (() => T),\r\n): ComputedRef<T>\r\nexport function useVscodeContext<T>(\r\n name: string,\r\n value: MaybeRef<T>,\r\n): Ref<T>\r\nexport function useVscodeContext<T>(\r\n name: string,\r\n value: MaybeRefOrGetter<T>,\r\n) {\r\n const normalized = isRef(value) ? value : typeof value === 'function' ? computed(value as () => T) : ref(value)\r\n watch(normalized, (value) => {\r\n commands.executeCommand('setContext', name, value)\r\n }, { immediate: true })\r\n return normalized\r\n}\r\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\r\nimport type { Webview, WebviewOptions, WebviewPanel, WebviewPanelOptions } from 'vscode'\r\nimport type { EventListener } from '../utils'\r\nimport { computed, shallowRef, toValue, watchEffect } from '@reactive-vscode/reactivity'\r\nimport { window } from 'vscode'\r\nimport { useDisposable } from './useDisposable'\r\nimport { useReactiveEvents } from './useReactiveEvents'\r\nimport { useReactiveOptions } from './useReactiveOptions'\r\n\r\nexport interface WebviewPanelProps extends WebviewPanelOptions, WebviewOptions {\r\n /**\r\n * @see {@linkcode WebviewPanel.title}\r\n */\r\n title?: MaybeRefOrGetter<WebviewPanel['title']>\r\n\r\n /**\r\n * @see {@linkcode WebviewPanel.iconPath}\r\n */\r\n iconPath?: MaybeRefOrGetter<WebviewPanel['iconPath']>\r\n\r\n /**\r\n * @see {@linkcode WebviewPanel.onDidChangeViewState}\r\n */\r\n onDidChangeViewState?: EventListener<WebviewPanel['onDidChangeViewState']>\r\n\r\n /**\r\n * @see {@linkcode WebviewPanel.onDidDispose}\r\n */\r\n onDidDispose?: EventListener<WebviewPanel['onDidDispose']>\r\n\r\n /**\r\n * @see {@linkcode Webview.options}\r\n */\r\n webviewOptions?: MaybeRefOrGetter<WebviewOptions>\r\n\r\n /**\r\n * @see {@linkcode Webview.onDidReceiveMessage}\r\n */\r\n onDidReceiveMessage?: EventListener<Webview['onDidReceiveMessage']>\r\n}\r\n\r\n/**\r\n * @reactive {@linkcode window.createWebviewPanel}\r\n * @category view\r\n */\r\nexport function useWebviewPanel(\r\n viewType: string,\r\n title: MaybeRefOrGetter<string>,\r\n html: MaybeRefOrGetter<string>,\r\n showOptions: Parameters<typeof window.createWebviewPanel>[2],\r\n options: WebviewPanelProps = {},\r\n) {\r\n const panel = useDisposable(window.createWebviewPanel(\r\n viewType,\r\n toValue(title),\r\n showOptions,\r\n options,\r\n ))\r\n const webview = panel.webview\r\n\r\n useReactiveOptions(panel, options, [\r\n 'title',\r\n 'iconPath',\r\n ])\r\n\r\n useReactiveEvents(panel, options, [\r\n 'onDidChangeViewState',\r\n 'onDidDispose',\r\n ])\r\n\r\n const forceReload = shallowRef(0)\r\n watchEffect(() => {\r\n webview.html = `${toValue(html)}<!--${forceReload.value}-->`\r\n })\r\n\r\n useReactiveOptions(webview, { options: options.webviewOptions }, [\r\n 'options',\r\n ])\r\n\r\n useReactiveEvents(webview, options, [\r\n 'onDidReceiveMessage',\r\n ])\r\n\r\n const viewColumn = shallowRef(panel.viewColumn)\r\n const active = shallowRef(panel.active)\r\n const visible = shallowRef(panel.visible)\r\n useDisposable(panel.onDidChangeViewState((ev) => {\r\n if (panel === ev.webviewPanel) {\r\n viewColumn.value = panel.viewColumn\r\n active.value = panel.active\r\n visible.value = panel.visible\r\n }\r\n }))\r\n\r\n return {\r\n panel,\r\n webview,\r\n /**\r\n * @see {@linkcode WebviewPanel.viewColumn}\r\n */\r\n viewColumn: computed(() => viewColumn.value),\r\n /**\r\n * @see {@linkcode WebviewPanel.active}\r\n */\r\n active: computed(() => active.value),\r\n /**\r\n * @see {@linkcode WebviewPanel.visible}\r\n */\r\n visible: computed(() => visible.value),\r\n /**\r\n * @see {@linkcode WebviewPanel.reveal}\r\n */\r\n reveal: panel.reveal.bind(panel),\r\n /**\r\n * @see {@linkcode Webview.postMessage}\r\n */\r\n postMessage: webview.postMessage.bind(webview),\r\n /**\r\n * @see {@linkcode Webview.asWebviewUri}\r\n */\r\n asWebviewUri: webview.asWebviewUri.bind(webview),\r\n /**\r\n * Force reload the webview content.\r\n */\r\n forceReload: () => { forceReload.value++ },\r\n }\r\n}\r\n","import type { MaybeRefOrGetter } from '@reactive-vscode/reactivity'\r\nimport type { Uri, Webview, WebviewOptions, WebviewView, WebviewViewResolveContext } from 'vscode'\r\nimport type { EventListener } from '../utils'\r\nimport { computed, shallowRef, toValue, watchEffect } from '@reactive-vscode/reactivity'\r\nimport { window } from 'vscode'\r\nimport { useDisposable } from './useDisposable'\r\nimport { useReactiveEvents } from './useReactiveEvents'\r\nimport { useReactiveOptions } from './useReactiveOptions'\r\nimport { useViewVisibility } from './useViewVisibility'\r\n\r\ntype WebviewCreationOptions = (Parameters<typeof window.registerWebviewViewProvider>[2] & {})['webviewOptions'] & {}\r\n\r\nexport interface WebviewViewProps extends WebviewCreationOptions {\r\n /**\r\n * @see {@linkcode WebviewView.title}\r\n */\r\n title?: MaybeRefOrGetter<WebviewView['title']>\r\n\r\n /**\r\n * @see {@linkcode WebviewView.description}\r\n */\r\n description?: MaybeRefOrGetter<WebviewView['description']>\r\n\r\n /**\r\n * @see {@linkcode WebviewView.badge}\r\n */\r\n badge?: MaybeRefOrGetter<WebviewView['badge']>\r\n\r\n /**\r\n * @see {@linkcode WebviewViewOptions.onDidDispose}\r\n */\r\n onDidDispose?: EventListener<WebviewView['onDidDispose']>\r\n\r\n /**\r\n * @see {@linkcode Webview.options}\r\n */\r\n webviewOptions?: MaybeRefOrGetter<WebviewOptions>\r\n\r\n /**\r\n * @see {@linkcode Webview.onDidReceiveMessage}\r\n */\r\n onDidReceiveMessage?: EventListener<Webview['onDidReceiveMessage']>\r\n}\r\n\r\n/**\r\n * @reactive {@linkcode window.registerWebviewViewProvider}\r\n * @category view\r\n */\r\nexport function useWebviewView(\r\n viewId: string,\r\n html: MaybeRefOrGetter<string>,\r\n options: WebviewViewProps = {},\r\n) {\r\n const view = shallowRef<WebviewView>()\r\n const webview = computed(() => view.value?.webview)\r\n const context = shallowRef<WebviewViewResolveContext>()\r\n useDisposable(window.registerWebviewViewProvider(\r\n viewId,\r\n {\r\n resolveWebviewView(viewArg, contextArg) {\r\n view.value = viewArg\r\n context.value = contextArg\r\n },\r\n },\r\n {\r\n webviewOptions: {\r\n retainContextWhenHidden: options.retainContextWhenHidden,\r\n },\r\n },\r\n ))\r\n\r\n const forceReloadId = shallowRef(0)\r\n watchEffect(() => {\r\n if (view.value) {\r\n view.value.webview.html = `${toValue(html)}<!--${forceReloadId.value}-->`\r\n }\r\n })\r\n\r\n useReactiveOptions(view, options, [\r\n 'title',\r\n 'description',\r\n 'badge',\r\n ])\r\n\r\n useReactiveEvents(view, options, [\r\n 'onDidDispose',\r\n ])\r\n\r\n useReactiveOptions(webview, { options: options.webviewOptions }, [\r\n 'options',\r\n ])\r\n\r\n useReactiveEvents(webview, options, [\r\n 'onDidReceiveMessage',\r\n ])\r\n\r\n return {\r\n view: computed(() => view.value),\r\n /**\r\n * @see {@linkcode WebviewView.webview}\r\n */\r\n webview,\r\n /**\r\n * Additional metadata about the view being resolved.\r\n */\r\n context: computed(() => context.value),\r\n /**\r\n * @see {@linkcode WebviewView.visible}\r\n */\r\n visible: useViewVisibility(view),\r\n /**\r\n * @see {@linkcode WebviewView.show}\r\n */\r\n show: (preserveFocus?: boolean) => view.value?.show(preserveFocus),\r\n /**\r\n * @see {@linkcode Webview.postMessage}\r\n */\r\n postMessage: (message: any) => view.value?.webview.postMessage(message),\r\n /**\r\n * @see {@linkcode Webview.asWebviewUri}\r\n */\r\n asWebviewUri: (resource: Uri) => webview.value?.asWebviewUri(resource),\r\n /**\r\n * Force reload the webview content.\r\n */\r\n forceReload: () => { forceReloadId.value++ },\r\n }\r\n}\r\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode window.state}\n */\nexport const useWindowState = defineService(() => {\n const windowState = shallowRef(window.state)\n\n useDisposable(window.onDidChangeWindowState((ev) => {\n windowState.value = ev\n }))\n\n return {\n focused: computed(() => windowState.value.focused),\n active: computed(() => windowState.value.active),\n }\n})\n","import type { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useWindowState } from './useWindowState'\n\n/**\n * @reactive {@linkcode window.state.active}\n */\nexport const useWindowActive = defineService(() => {\n return useWindowState().active\n})\n","import type { window } from 'vscode'\nimport { defineService } from '../utils'\nimport { useWindowState } from './useWindowState'\n\n/**\n * @reactive {@linkcode window.state.focused}\n */\nexport const useWindowFocused = defineService(() => {\n return useWindowState().focused\n})\n","import { computed, shallowRef } from '@reactive-vscode/reactivity'\nimport { workspace } from 'vscode'\nimport { defineService } from '../utils'\nimport { useDisposable } from './useDisposable'\n\n/**\n * @reactive {@linkcode workspace.workspaceFolders}\n */\nexport const useWorkspaceFolders = defineService(() => {\n const folders = shallowRef(workspace.workspaceFolders)\n\n useDisposable(workspace.onDidChangeWorkspaceFolders(() => {\n folders.value = workspace.workspaceFolders\n }))\n\n return computed(() => folders.value)\n})\n","import type { Ref } from '@reactive-vscode/reactivity'\nimport type { ExtensionContext } from 'vscode'\nimport type { MementoItemRef } from './useMementoItem'\nimport { extensionContext } from '../utils'\nimport { useMementoItem } from './useMementoItem'\n\n/**\n * @reactive {@linkcode ExtensionContext.workspaceState}\n * @category extension\n */\nexport function useWorkspaceState<T>(key: string): MementoItemRef<T>\nexport function useWorkspaceState<T>(key: string, defaultValue: T): Ref<T>\nexport function useWorkspaceState<T>(key: string, defaultValue?: any) {\n return useMementoItem<T>(extensionContext.value!.workspaceState, key, defaultValue)\n}\n"],"names":["activateCbs","onActivate","fn","extensionContext","deactivateCbs","onDeactivate","shallowRef","extensionScope","effectScope","defineExtension","setup","context","defineConfig","section","scope","isTopLevel","workspaceConfig","updateWorkspaceConfig","workspace","getWorkspaceConfig","buildProxy","base","_","key","config","v","value","notSupported","property","attributes","p","useDisposable","e","methods","defineLogger","name","logger","logLevel","env","delayedOps","l","window","ev","op","wrapped","method","args","computed","defineService","running","ran","result","useAbsoluteUri","relativePath","Uri","toValue","disposable","getCurrentScope","useActiveColorTheme","theme","useActiveDebugSession","session","debug","useActiveNotebookEditor","activeNotebookEditor","editor","useActiveTerminal","activeTerminal","terminal","useActiveTextEditor","activeTextEditor","useAllExtensions","allExtensions","extensions","useReactiveEvents","target","handlers","keys","isRef","watchEffect","t","handler","useReactiveOptions","options","useChatParticipant","id","participant","chat","unref","watch","useCommand","command","callback","onCleanup","commands","useCommands","useDocumentText","doc","text","useEditorDecorations","decorationTypeOrOptions","decorations","decorationTypeDisposable","decorationType","decorationTypeOrOptionsValue","decoration","onScopeDispose","update","editorValue","useEnvShell","defaultShell","useEvent","event","listeners","listener","thisArgs","disposables","useEventEmitter","eventEmitterOrListeners","listeners2","emitter","EventEmitter","useExtensionSecret","secrets","secret","set","newValue","remove","useFileSystemWatcher","globPatterns","watchers","shallowReactive","createEmitter","changeEmitter","deleteEmitter","patterns","updateWatchers","newPatterns","pattern","watcher","w","clearWatchers","readonly","useMementoItem","memento","defaultValue","useGlobalState","useQuickInputOptions","quickInput","useInputBox","inputBox","useIsDarkTheme","ColorThemeKind","useIsTelemetryEnabled","isTelemetryEnabled","useL10nText","message","arg0","l10n","toRaw","useLmTools","tools","lm","useLogLevel","useNotebookEditorSelections","notebookEditor","selections","newSelections","useNotebookEditorSelection","newSelection","useNotebookEditorVisibleRanges","ranges","useOpenedTerminals","openedTerminals","useQuickPick","quickPick","activeItems","items","selectedItems","useStatusBarItem","item","useTaskExecutions","taskExecutions","tasks","useTerminalShellIntegration","shellIntegration","useTerminalState","state","useTerminal","useTextEditorCommand","useTextEditorCommands","useTextEditorSelections","textEditor","acceptKind","kinds","useTextEditorSelection","useTextEditorViewColumn","viewColumn","useTextEditorVisibleRanges","useViewVisibility","view","visible","ref","newView","viewValue","useTreeView","viewId","treeData","changeEventEmitter","childrenToParentMap","node","children","child","selection","useVisibleNotebookEditors","visibleNotebookEditors","useVisibleTextEditors","visibleTextEditors","useVscodeContext","normalized","useWebviewPanel","viewType","title","html","showOptions","panel","webview","forceReload","active","useWebviewView","viewArg","contextArg","forceReloadId","preserveFocus","resource","useWindowState","windowState","useWindowActive","useWindowFocused","useWorkspaceFolders","folders","useWorkspaceState"],"mappings":"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"}
|