@hienlh/ppm 0.9.88 → 0.9.90
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/CHANGELOG.md +8 -0
- package/dist/web/assets/{chat-tab-R4gKsnxD.js → chat-tab-BPoQy-Fp.js} +1 -1
- package/dist/web/assets/{code-editor-Br0vzTOy.js → code-editor-DDW9dlUL.js} +1 -1
- package/dist/web/assets/{conflict-editor-BPgCjnNz.js → conflict-editor-Bt24HTjk.js} +1 -1
- package/dist/web/assets/{database-viewer-DaUoQ-oR.js → database-viewer-DbD8rfQF.js} +1 -1
- package/dist/web/assets/{diff-viewer-BzvK3gAE.js → diff-viewer-DVWJoL2y.js} +1 -1
- package/dist/web/assets/extension-webview-nq9rDNgj.js +3 -0
- package/dist/web/assets/{index-CKsEzQ4f.js → index-DK4yJlIj.js} +3 -3
- package/dist/web/assets/keybindings-store-CpFk-yNF.js +1 -0
- package/dist/web/assets/{markdown-renderer-DSYnGywb.js → markdown-renderer-CCq6xBWp.js} +1 -1
- package/dist/web/assets/{port-forwarding-tab-vmqDKmk2.js → port-forwarding-tab-BBwfD-s_.js} +1 -1
- package/dist/web/assets/{postgres-viewer-0lIAosrr.js → postgres-viewer-Dqnhi-ci.js} +1 -1
- package/dist/web/assets/{settings-tab-CMnv1fce.js → settings-tab-DX9zkGvD.js} +1 -1
- package/dist/web/assets/{sql-query-editor-Bc2hAwqT.js → sql-query-editor-CxODOF9o.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-B60MS2Dy.js → sqlite-viewer-DAgT72tD.js} +1 -1
- package/dist/web/assets/{terminal-tab-CCJoLstH.js → terminal-tab-5ib6rUAO.js} +1 -1
- package/dist/web/assets/{use-monaco-theme-BJK48EmK.js → use-monaco-theme-vmoBT6np.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/packages/ext-git-graph/src/extension.ts +10 -6
- package/packages/ext-git-graph/src/types.ts +2 -1
- package/packages/ext-git-graph/src/webview-html.ts +131 -51
- package/src/web/components/extensions/extension-webview.tsx +12 -11
- package/dist/web/assets/extension-webview-CGepEw-b.js +0 -3
- package/dist/web/assets/keybindings-store-D5zgHod8.js +0 -1
package/dist/web/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"9dbe9b5a97d48b8ebdb858a39020ecd4","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":null,"url":"assets/xychartDiagram-JWTSCODW-CtpjAakO.js"},{"revision":null,"url":"assets/x-Dw3TjeY_.js"},{"revision":null,"url":"assets/vennDiagram-LZ73GAT5-C-rkIUbo.js"},{"revision":null,"url":"assets/utils-DX8jb5qv.js"},{"revision":null,"url":"assets/use-monaco-theme-BJK48EmK.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-Kck06FKU.js"},{"revision":null,"url":"assets/trash-2-CNuB-htI.js"},{"revision":null,"url":"assets/timeline-definition-YZTLITO2-pMv1grvM.js"},{"revision":null,"url":"assets/text-wrap-D_OmSzhp.js"},{"revision":null,"url":"assets/terminal-tab-CCJoLstH.js"},{"revision":null,"url":"assets/terminal-tab-BrP-ENHg.css"},{"revision":null,"url":"assets/table-Bi27fEaN.js"},{"revision":null,"url":"assets/stateDiagram-v2-FVOUBMTO-D6zvxf3M.js"},{"revision":null,"url":"assets/stateDiagram-RAJIS63D-ylr4HxPu.js"},{"revision":null,"url":"assets/src-CqyWLlNZ.js"},{"revision":null,"url":"assets/square-vBdqj0bF.js"},{"revision":null,"url":"assets/sqlite-viewer-B60MS2Dy.js"},{"revision":null,"url":"assets/sql-query-editor-Bc2hAwqT.js"},{"revision":null,"url":"assets/sql-completion-provider-B8uUWWej.js"},{"revision":null,"url":"assets/settings-tab-CMnv1fce.js"},{"revision":null,"url":"assets/sequenceDiagram-2WXFIKYE-B2D8IQDb.js"},{"revision":null,"url":"assets/scroll-area-BpXCNme3.js"},{"revision":null,"url":"assets/sankeyDiagram-WA2Y5GQK-BbRmhv0t.js"},{"revision":null,"url":"assets/rough.esm-eLccZ4OJ.js"},{"revision":null,"url":"assets/requirementDiagram-Z7DCOOCP-CuiiuGS9.js"},{"revision":null,"url":"assets/refresh-cw-Clk8fdUD.js"},{"revision":null,"url":"assets/react-nm2Ru1Pt.js"},{"revision":null,"url":"assets/react-dom-Bpkvzu3U.js"},{"revision":null,"url":"assets/react-0tkk-ztn.js"},{"revision":null,"url":"assets/radar-KQ55EAFF-TqxBkWx-.js"},{"revision":null,"url":"assets/quadrantDiagram-337W2JSQ-TXe6cU_F.js"},{"revision":null,"url":"assets/preload-helper-mr3rCizq.js"},{"revision":null,"url":"assets/postgres-viewer-0lIAosrr.js"},{"revision":null,"url":"assets/port-forwarding-tab-vmqDKmk2.js"},{"revision":null,"url":"assets/plus-DQGIb4mQ.js"},{"revision":null,"url":"assets/pieDiagram-SKSYHLDU-Dovdlvhu.js"},{"revision":null,"url":"assets/pie-UPGHQEXC-BPgAfmes.js"},{"revision":null,"url":"assets/path-INs8XTPH.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-BwpIpYB3.js"},{"revision":null,"url":"assets/ordinal-DpFn432U.js"},{"revision":null,"url":"assets/mindmap-definition-YRQLILUH-pYPWwASE.js"},{"revision":null,"url":"assets/mermaid-parser.core-CFdP1Z5_.js"},{"revision":null,"url":"assets/math-CRc16Nj6.js"},{"revision":null,"url":"assets/markdown-renderer-DSYnGywb.js"},{"revision":null,"url":"assets/linear-DFN_MPsw.js"},{"revision":null,"url":"assets/line-CSuSrJ9J.js"},{"revision":null,"url":"assets/lib-DSLzfeW0.js"},{"revision":null,"url":"assets/keybindings-store-D5zgHod8.js"},{"revision":null,"url":"assets/katex-DR0kdMDv.js"},{"revision":null,"url":"assets/kanban-definition-K7BYSVSG-miB0-_Zq.js"},{"revision":null,"url":"assets/jsx-runtime-BRW_vwa9.js"},{"revision":null,"url":"assets/journeyDiagram-4ABVD52K-CG_v5Aho.js"},{"revision":null,"url":"assets/ishikawaDiagram-PHBUUO56-CiVEvp8o.js"},{"revision":null,"url":"assets/isEmpty-BfLnxq-B.js"},{"revision":null,"url":"assets/isArrayLikeObject-ClzWCpcm.js"},{"revision":null,"url":"assets/input-BHj0veau.js"},{"revision":null,"url":"assets/init-0VJVrkRJ.js"},{"revision":null,"url":"assets/infoDiagram-LFFYTUFH-Diq4Cyc3.js"},{"revision":null,"url":"assets/info-3K5VOQVL-BDU2_bYD.js"},{"revision":null,"url":"assets/index-Chf0otez.css"},{"revision":null,"url":"assets/index-CKsEzQ4f.js"},{"revision":null,"url":"assets/graphlib-BWe1iK_s.js"},{"revision":null,"url":"assets/gitGraphDiagram-K3NZZRJ6-BMgjjVys.js"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-OkvBPi6H.js"},{"revision":null,"url":"assets/ganttDiagram-A5KZAMGK-KSn4XAU4.js"},{"revision":null,"url":"assets/flowDiagram-PKNHOUZH-CFYAfZBx.js"},{"revision":null,"url":"assets/extension-webview-CGepEw-b.js"},{"revision":null,"url":"assets/erDiagram-INFDFZHY-DSkriYZ9.js"},{"revision":null,"url":"assets/dist-DZmJeHOA.js"},{"revision":null,"url":"assets/dist-CM0oD8tQ.js"},{"revision":null,"url":"assets/diff-viewer-BzvK3gAE.js"},{"revision":null,"url":"assets/diagram-P4PSJMXO-CW0eCkwC.js"},{"revision":null,"url":"assets/diagram-IFDJBPK2-nUcO8sN8.js"},{"revision":null,"url":"assets/diagram-E7M64L7V-BZF0tSOr.js"},{"revision":null,"url":"assets/defaultLocale-ZeknFqNe.js"},{"revision":null,"url":"assets/database-viewer-DaUoQ-oR.js"},{"revision":null,"url":"assets/database-CgTomMxt.js"},{"revision":null,"url":"assets/dagre-KLK3FWXG-Cnp996VG.js"},{"revision":null,"url":"assets/dagre-CkhlMHnx.js"},{"revision":null,"url":"assets/cytoscape.esm-C8i2jUzT.js"},{"revision":null,"url":"assets/csv-preview-BZRICDP0.js"},{"revision":null,"url":"assets/csv-parser-i7fjqP2H.js"},{"revision":null,"url":"assets/cose-bilkent-S5V4N54A-BGNPFv3x.js"},{"revision":null,"url":"assets/conflict-editor-BPgCjnNz.js"},{"revision":null,"url":"assets/columns-2-IeETSfON.js"},{"revision":null,"url":"assets/code-editor-Br0vzTOy.js"},{"revision":null,"url":"assets/clone--z5KLAuR.js"},{"revision":null,"url":"assets/classDiagram-v2-RAHNMMFH-BKe8_uda.js"},{"revision":null,"url":"assets/classDiagram-VBA2DB6C-mr-Cb1me.js"},{"revision":null,"url":"assets/chunk-YBOYWFTD-D_ILLe6_.js"},{"revision":null,"url":"assets/chunk-XZSTWKYB-DjV8xl5A.js"},{"revision":null,"url":"assets/chunk-XPW4576I-CgLyyW03.js"},{"revision":null,"url":"assets/chunk-XIRO2GV7-DZBoNl1_.js"},{"revision":null,"url":"assets/chunk-WL4C6EOR-B1iIvLOG.js"},{"revision":null,"url":"assets/chunk-R5LLSJPH-dRhXRnrb.js"},{"revision":null,"url":"assets/chunk-QZHKN3VN-N3VXx1VH.js"},{"revision":null,"url":"assets/chunk-PU5JKC2W-DD95Rx35.js"},{"revision":null,"url":"assets/chunk-PQ6SQG4A-Bik13fTV.js"},{"revision":null,"url":"assets/chunk-OZEHJAEY-lKq2SWjA.js"},{"revision":null,"url":"assets/chunk-O4XLMI2P-Vp_V4P-b.js"},{"revision":null,"url":"assets/chunk-NQ4KR5QH-DX32345Y.js"},{"revision":null,"url":"assets/chunk-MX3YWQON-B6g1ZH9X.js"},{"revision":null,"url":"assets/chunk-L3YUKLVL-DnSMmNFC.js"},{"revision":null,"url":"assets/chunk-KYZI473N-gqRLpJ4w.js"},{"revision":null,"url":"assets/chunk-KX2RTZJC-CHj8TnTB.js"},{"revision":null,"url":"assets/chunk-JSJVCQXG-23eG9mgt.js"},{"revision":null,"url":"assets/chunk-HHEYEP7N-C45i5G_3.js"},{"revision":null,"url":"assets/chunk-GLR3WWYH-Re-5eSlQ.js"},{"revision":null,"url":"assets/chunk-GEFDOKGD-86LFbsAC.js"},{"revision":null,"url":"assets/chunk-FMBD7UC4-Bog4cpN-.js"},{"revision":null,"url":"assets/chunk-EGIJ26TM-nant2LXl.js"},{"revision":null,"url":"assets/chunk-CFjPhJqf.js"},{"revision":null,"url":"assets/chunk-C72U2L5F-BHPkfQj2.js"},{"revision":null,"url":"assets/chunk-7R4GIKGN-y8bfHEy-.js"},{"revision":null,"url":"assets/chunk-7E7YKBS2-DZcnC7Ow.js"},{"revision":null,"url":"assets/chunk-55IACEB6-DhZGI1l3.js"},{"revision":null,"url":"assets/chunk-4BX2VUAB-CENmY7Kw.js"},{"revision":null,"url":"assets/chevron-right-DY_wImxB.js"},{"revision":null,"url":"assets/chat-tab-R4gKsnxD.js"},{"revision":null,"url":"assets/channel-wumTB1if.js"},{"revision":null,"url":"assets/c4Diagram-IC4MRINW-BIymcNsg.js"},{"revision":null,"url":"assets/blockDiagram-WCTKOSBZ-Ct57Wtfk.js"},{"revision":null,"url":"assets/arrow-up-I9-21gkR.js"},{"revision":null,"url":"assets/array-BFDiaBgf.js"},{"revision":null,"url":"assets/architectureDiagram-2XIMDMQ5-D16OotsC.js"},{"revision":null,"url":"assets/architecture-PBZL5I3N-DDFO_NKq.js"},{"revision":null,"url":"assets/arc-CxgHJ7Z4.js"},{"revision":null,"url":"assets/api-settings-CUxg9RE5.js"},{"revision":null,"url":"assets/api-client-BvxmRZUi.js"},{"revision":null,"url":"assets/ai-settings-section-Bo9lCaTd.js"},{"revision":null,"url":"assets/_baseUniq-CyzdZeQH.js"},{"revision":null,"url":"assets/_basePickBy-Bj0dI1ei.js"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":"79c8870653c8f419f2e3323085e1f4be","url":"manifest.webmanifest"}]),self.addEventListener(`push`,e=>{e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{if(t.some(e=>e.visibilityState===`visible`))return;let n=e.data?.json()??{title:`PPM`,body:`Chat completed`};return self.registration.showNotification(n.title,{body:n.body,icon:`/icon-192.png`,badge:`/icon-192.png`,tag:`ppm-chat-done`,silent:!1,data:{url:self.location.origin}})}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close(),e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{for(let e of t)if(e.url.includes(self.location.origin)&&`focus`in e)return e.focus();return self.clients.openWindow(e.notification.data?.url||`/`)}))});
|
|
1
|
+
try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"070a95d5275afbec5378091f7214530d","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":null,"url":"assets/xychartDiagram-JWTSCODW-CtpjAakO.js"},{"revision":null,"url":"assets/x-Dw3TjeY_.js"},{"revision":null,"url":"assets/vennDiagram-LZ73GAT5-C-rkIUbo.js"},{"revision":null,"url":"assets/utils-DX8jb5qv.js"},{"revision":null,"url":"assets/use-monaco-theme-vmoBT6np.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-Kck06FKU.js"},{"revision":null,"url":"assets/trash-2-CNuB-htI.js"},{"revision":null,"url":"assets/timeline-definition-YZTLITO2-pMv1grvM.js"},{"revision":null,"url":"assets/text-wrap-D_OmSzhp.js"},{"revision":null,"url":"assets/terminal-tab-BrP-ENHg.css"},{"revision":null,"url":"assets/terminal-tab-5ib6rUAO.js"},{"revision":null,"url":"assets/table-Bi27fEaN.js"},{"revision":null,"url":"assets/stateDiagram-v2-FVOUBMTO-D6zvxf3M.js"},{"revision":null,"url":"assets/stateDiagram-RAJIS63D-ylr4HxPu.js"},{"revision":null,"url":"assets/src-CqyWLlNZ.js"},{"revision":null,"url":"assets/square-vBdqj0bF.js"},{"revision":null,"url":"assets/sqlite-viewer-DAgT72tD.js"},{"revision":null,"url":"assets/sql-query-editor-CxODOF9o.js"},{"revision":null,"url":"assets/sql-completion-provider-B8uUWWej.js"},{"revision":null,"url":"assets/settings-tab-DX9zkGvD.js"},{"revision":null,"url":"assets/sequenceDiagram-2WXFIKYE-B2D8IQDb.js"},{"revision":null,"url":"assets/scroll-area-BpXCNme3.js"},{"revision":null,"url":"assets/sankeyDiagram-WA2Y5GQK-BbRmhv0t.js"},{"revision":null,"url":"assets/rough.esm-eLccZ4OJ.js"},{"revision":null,"url":"assets/requirementDiagram-Z7DCOOCP-CuiiuGS9.js"},{"revision":null,"url":"assets/refresh-cw-Clk8fdUD.js"},{"revision":null,"url":"assets/react-nm2Ru1Pt.js"},{"revision":null,"url":"assets/react-dom-Bpkvzu3U.js"},{"revision":null,"url":"assets/react-0tkk-ztn.js"},{"revision":null,"url":"assets/radar-KQ55EAFF-TqxBkWx-.js"},{"revision":null,"url":"assets/quadrantDiagram-337W2JSQ-TXe6cU_F.js"},{"revision":null,"url":"assets/preload-helper-mr3rCizq.js"},{"revision":null,"url":"assets/postgres-viewer-Dqnhi-ci.js"},{"revision":null,"url":"assets/port-forwarding-tab-BBwfD-s_.js"},{"revision":null,"url":"assets/plus-DQGIb4mQ.js"},{"revision":null,"url":"assets/pieDiagram-SKSYHLDU-Dovdlvhu.js"},{"revision":null,"url":"assets/pie-UPGHQEXC-BPgAfmes.js"},{"revision":null,"url":"assets/path-INs8XTPH.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-BwpIpYB3.js"},{"revision":null,"url":"assets/ordinal-DpFn432U.js"},{"revision":null,"url":"assets/mindmap-definition-YRQLILUH-pYPWwASE.js"},{"revision":null,"url":"assets/mermaid-parser.core-CFdP1Z5_.js"},{"revision":null,"url":"assets/math-CRc16Nj6.js"},{"revision":null,"url":"assets/markdown-renderer-CCq6xBWp.js"},{"revision":null,"url":"assets/linear-DFN_MPsw.js"},{"revision":null,"url":"assets/line-CSuSrJ9J.js"},{"revision":null,"url":"assets/lib-DSLzfeW0.js"},{"revision":null,"url":"assets/keybindings-store-CpFk-yNF.js"},{"revision":null,"url":"assets/katex-DR0kdMDv.js"},{"revision":null,"url":"assets/kanban-definition-K7BYSVSG-miB0-_Zq.js"},{"revision":null,"url":"assets/jsx-runtime-BRW_vwa9.js"},{"revision":null,"url":"assets/journeyDiagram-4ABVD52K-CG_v5Aho.js"},{"revision":null,"url":"assets/ishikawaDiagram-PHBUUO56-CiVEvp8o.js"},{"revision":null,"url":"assets/isEmpty-BfLnxq-B.js"},{"revision":null,"url":"assets/isArrayLikeObject-ClzWCpcm.js"},{"revision":null,"url":"assets/input-BHj0veau.js"},{"revision":null,"url":"assets/init-0VJVrkRJ.js"},{"revision":null,"url":"assets/infoDiagram-LFFYTUFH-Diq4Cyc3.js"},{"revision":null,"url":"assets/info-3K5VOQVL-BDU2_bYD.js"},{"revision":null,"url":"assets/index-DK4yJlIj.js"},{"revision":null,"url":"assets/index-Chf0otez.css"},{"revision":null,"url":"assets/graphlib-BWe1iK_s.js"},{"revision":null,"url":"assets/gitGraphDiagram-K3NZZRJ6-BMgjjVys.js"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-OkvBPi6H.js"},{"revision":null,"url":"assets/ganttDiagram-A5KZAMGK-KSn4XAU4.js"},{"revision":null,"url":"assets/flowDiagram-PKNHOUZH-CFYAfZBx.js"},{"revision":null,"url":"assets/extension-webview-nq9rDNgj.js"},{"revision":null,"url":"assets/erDiagram-INFDFZHY-DSkriYZ9.js"},{"revision":null,"url":"assets/dist-DZmJeHOA.js"},{"revision":null,"url":"assets/dist-CM0oD8tQ.js"},{"revision":null,"url":"assets/diff-viewer-DVWJoL2y.js"},{"revision":null,"url":"assets/diagram-P4PSJMXO-CW0eCkwC.js"},{"revision":null,"url":"assets/diagram-IFDJBPK2-nUcO8sN8.js"},{"revision":null,"url":"assets/diagram-E7M64L7V-BZF0tSOr.js"},{"revision":null,"url":"assets/defaultLocale-ZeknFqNe.js"},{"revision":null,"url":"assets/database-viewer-DbD8rfQF.js"},{"revision":null,"url":"assets/database-CgTomMxt.js"},{"revision":null,"url":"assets/dagre-KLK3FWXG-Cnp996VG.js"},{"revision":null,"url":"assets/dagre-CkhlMHnx.js"},{"revision":null,"url":"assets/cytoscape.esm-C8i2jUzT.js"},{"revision":null,"url":"assets/csv-preview-BZRICDP0.js"},{"revision":null,"url":"assets/csv-parser-i7fjqP2H.js"},{"revision":null,"url":"assets/cose-bilkent-S5V4N54A-BGNPFv3x.js"},{"revision":null,"url":"assets/conflict-editor-Bt24HTjk.js"},{"revision":null,"url":"assets/columns-2-IeETSfON.js"},{"revision":null,"url":"assets/code-editor-DDW9dlUL.js"},{"revision":null,"url":"assets/clone--z5KLAuR.js"},{"revision":null,"url":"assets/classDiagram-v2-RAHNMMFH-BKe8_uda.js"},{"revision":null,"url":"assets/classDiagram-VBA2DB6C-mr-Cb1me.js"},{"revision":null,"url":"assets/chunk-YBOYWFTD-D_ILLe6_.js"},{"revision":null,"url":"assets/chunk-XZSTWKYB-DjV8xl5A.js"},{"revision":null,"url":"assets/chunk-XPW4576I-CgLyyW03.js"},{"revision":null,"url":"assets/chunk-XIRO2GV7-DZBoNl1_.js"},{"revision":null,"url":"assets/chunk-WL4C6EOR-B1iIvLOG.js"},{"revision":null,"url":"assets/chunk-R5LLSJPH-dRhXRnrb.js"},{"revision":null,"url":"assets/chunk-QZHKN3VN-N3VXx1VH.js"},{"revision":null,"url":"assets/chunk-PU5JKC2W-DD95Rx35.js"},{"revision":null,"url":"assets/chunk-PQ6SQG4A-Bik13fTV.js"},{"revision":null,"url":"assets/chunk-OZEHJAEY-lKq2SWjA.js"},{"revision":null,"url":"assets/chunk-O4XLMI2P-Vp_V4P-b.js"},{"revision":null,"url":"assets/chunk-NQ4KR5QH-DX32345Y.js"},{"revision":null,"url":"assets/chunk-MX3YWQON-B6g1ZH9X.js"},{"revision":null,"url":"assets/chunk-L3YUKLVL-DnSMmNFC.js"},{"revision":null,"url":"assets/chunk-KYZI473N-gqRLpJ4w.js"},{"revision":null,"url":"assets/chunk-KX2RTZJC-CHj8TnTB.js"},{"revision":null,"url":"assets/chunk-JSJVCQXG-23eG9mgt.js"},{"revision":null,"url":"assets/chunk-HHEYEP7N-C45i5G_3.js"},{"revision":null,"url":"assets/chunk-GLR3WWYH-Re-5eSlQ.js"},{"revision":null,"url":"assets/chunk-GEFDOKGD-86LFbsAC.js"},{"revision":null,"url":"assets/chunk-FMBD7UC4-Bog4cpN-.js"},{"revision":null,"url":"assets/chunk-EGIJ26TM-nant2LXl.js"},{"revision":null,"url":"assets/chunk-CFjPhJqf.js"},{"revision":null,"url":"assets/chunk-C72U2L5F-BHPkfQj2.js"},{"revision":null,"url":"assets/chunk-7R4GIKGN-y8bfHEy-.js"},{"revision":null,"url":"assets/chunk-7E7YKBS2-DZcnC7Ow.js"},{"revision":null,"url":"assets/chunk-55IACEB6-DhZGI1l3.js"},{"revision":null,"url":"assets/chunk-4BX2VUAB-CENmY7Kw.js"},{"revision":null,"url":"assets/chevron-right-DY_wImxB.js"},{"revision":null,"url":"assets/chat-tab-BPoQy-Fp.js"},{"revision":null,"url":"assets/channel-wumTB1if.js"},{"revision":null,"url":"assets/c4Diagram-IC4MRINW-BIymcNsg.js"},{"revision":null,"url":"assets/blockDiagram-WCTKOSBZ-Ct57Wtfk.js"},{"revision":null,"url":"assets/arrow-up-I9-21gkR.js"},{"revision":null,"url":"assets/array-BFDiaBgf.js"},{"revision":null,"url":"assets/architectureDiagram-2XIMDMQ5-D16OotsC.js"},{"revision":null,"url":"assets/architecture-PBZL5I3N-DDFO_NKq.js"},{"revision":null,"url":"assets/arc-CxgHJ7Z4.js"},{"revision":null,"url":"assets/api-settings-CUxg9RE5.js"},{"revision":null,"url":"assets/api-client-BvxmRZUi.js"},{"revision":null,"url":"assets/ai-settings-section-Bo9lCaTd.js"},{"revision":null,"url":"assets/_baseUniq-CyzdZeQH.js"},{"revision":null,"url":"assets/_basePickBy-Bj0dI1ei.js"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":"79c8870653c8f419f2e3323085e1f4be","url":"manifest.webmanifest"}]),self.addEventListener(`push`,e=>{e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{if(t.some(e=>e.visibilityState===`visible`))return;let n=e.data?.json()??{title:`PPM`,body:`Chat completed`};return self.registration.showNotification(n.title,{body:n.body,icon:`/icon-192.png`,badge:`/icon-192.png`,tag:`ppm-chat-done`,silent:!1,data:{url:self.location.origin}})}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close(),e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{for(let e of t)if(e.url.includes(self.location.origin)&&`focus`in e)return e.focus();return self.clients.openWindow(e.notification.data?.url||`/`)}))});
|
package/package.json
CHANGED
|
@@ -406,7 +406,7 @@ async function handleRepoInfo(
|
|
|
406
406
|
spawnGit(vscode, ["branch", "-a", "--format=%(refname:short)|%(objectname:short)|%(HEAD)"], projectPath),
|
|
407
407
|
spawnGit(vscode, ["tag", "-l", "--format=%(refname:short)|%(objectname:short)"], projectPath),
|
|
408
408
|
spawnGit(vscode, ["remote", "-v"], projectPath),
|
|
409
|
-
spawnGit(vscode, ["stash", "list", "--format=%gd|%H|%s"], projectPath),
|
|
409
|
+
spawnGit(vscode, ["stash", "list", "--format=%gd|%H|%P|%s"], projectPath),
|
|
410
410
|
spawnGit(vscode, ["rev-parse", "--abbrev-ref", "HEAD"], projectPath),
|
|
411
411
|
spawnGit(vscode, ["rev-parse", "HEAD"], projectPath),
|
|
412
412
|
]);
|
|
@@ -623,17 +623,20 @@ async function handleStashes(
|
|
|
623
623
|
panel: ReturnType<VscodeApi["window"]["createWebviewPanel"]>,
|
|
624
624
|
projectPath: string,
|
|
625
625
|
): Promise<void> {
|
|
626
|
-
const result = await spawnGit(vscode, ["stash", "list", "--format=%gd|%H|%s"], projectPath, 10_000);
|
|
626
|
+
const result = await spawnGit(vscode, ["stash", "list", "--format=%gd|%H|%P|%s"], projectPath, 10_000);
|
|
627
627
|
const stashes: import("./types.ts").Stash[] = [];
|
|
628
628
|
if (result.exitCode === 0 && result.stdout.trim()) {
|
|
629
629
|
for (const line of result.stdout.split("\n").filter(Boolean)) {
|
|
630
630
|
const parts = line.split("|");
|
|
631
|
-
if (parts.length >=
|
|
631
|
+
if (parts.length >= 4) {
|
|
632
632
|
const refMatch = parts[0].match(/\{(\d+)\}/);
|
|
633
|
+
// %P gives space-separated parent hashes; first parent is the commit the stash was created on
|
|
634
|
+
const parentHash = parts[2].split(" ")[0] || "";
|
|
633
635
|
stashes.push({
|
|
634
636
|
index: refMatch ? parseInt(refMatch[1]) : stashes.length,
|
|
635
637
|
hash: parts[1],
|
|
636
|
-
|
|
638
|
+
parentHash,
|
|
639
|
+
message: parts.slice(3).join("|"),
|
|
637
640
|
});
|
|
638
641
|
}
|
|
639
642
|
}
|
|
@@ -752,8 +755,9 @@ function parseRemotes(stdout: string): import("./types.ts").Remote[] {
|
|
|
752
755
|
function parseStashes(stdout: string): import("./types.ts").Stash[] {
|
|
753
756
|
return stdout.trim().split("\n").filter(Boolean).map((line, i) => {
|
|
754
757
|
const parts = line.split("|");
|
|
755
|
-
const [, hash, ...messageParts] = parts;
|
|
756
|
-
|
|
758
|
+
const [, hash, parents, ...messageParts] = parts;
|
|
759
|
+
const parentHash = (parents || "").split(" ")[0] || "";
|
|
760
|
+
return { index: i, hash, parentHash, message: messageParts.join("|") };
|
|
757
761
|
});
|
|
758
762
|
}
|
|
759
763
|
|
|
@@ -17,7 +17,7 @@ export interface GitVertex {
|
|
|
17
17
|
|
|
18
18
|
export interface RefData {
|
|
19
19
|
name: string;
|
|
20
|
-
type: "head" | "local" | "remote" | "tag";
|
|
20
|
+
type: "head" | "local" | "remote" | "tag" | "stash";
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export interface Branch {
|
|
@@ -41,6 +41,7 @@ export interface Remote {
|
|
|
41
41
|
export interface Stash {
|
|
42
42
|
index: number;
|
|
43
43
|
hash: string;
|
|
44
|
+
parentHash: string;
|
|
44
45
|
message: string;
|
|
45
46
|
}
|
|
46
47
|
|
|
@@ -249,6 +249,8 @@ button:active { background: var(--surface); }
|
|
|
249
249
|
.commit-row.search-match { background: rgba(234, 179, 8, 0.15); }
|
|
250
250
|
.commit-row.virtual { opacity: 0.85; font-style: italic; }
|
|
251
251
|
.commit-row.virtual .col-message { color: var(--subtext); }
|
|
252
|
+
.commit-row.stash-row { opacity: 0.75; }
|
|
253
|
+
.commit-row.stash-row .col-message { color: var(--subtext); font-style: italic; }
|
|
252
254
|
.file-clickable { cursor: pointer; border-radius: 3px; padding: 2px 4px; margin: 0 -4px; }
|
|
253
255
|
.file-clickable:hover { background: var(--surface-hover); }
|
|
254
256
|
.col-graph { width: var(--graph-col-w, 120px); min-width: var(--graph-col-w, 80px); overflow: hidden; flex-shrink: 0; position: relative; }
|
|
@@ -265,6 +267,7 @@ button:active { background: var(--surface); }
|
|
|
265
267
|
.ref-local { background: var(--blue); color: #fff; }
|
|
266
268
|
.ref-remote { background: var(--purple); color: #fff; }
|
|
267
269
|
.ref-tag { background: var(--yellow); color: #000; }
|
|
270
|
+
.ref-stash { background: #808080; color: #fff; }
|
|
268
271
|
|
|
269
272
|
/* SVG graph — single SVG overlay */
|
|
270
273
|
#commit-list-wrapper { position: relative; }
|
|
@@ -272,8 +275,6 @@ button:active { background: var(--surface); }
|
|
|
272
275
|
#graph-svg-container circle { pointer-events: auto; cursor: pointer; }
|
|
273
276
|
#graph-svg-container .line { stroke-width: 2; fill: none; }
|
|
274
277
|
#graph-svg-container .graphCurrent { fill: var(--bg); stroke-width: 2; }
|
|
275
|
-
#graph-svg-container .graphStashOuter { fill: none; stroke: #808080; stroke-width: 1.5; }
|
|
276
|
-
#graph-svg-container .graphStashInner { fill: #808080; }
|
|
277
278
|
.commit-row.graph-hover { background: var(--surface-hover); }
|
|
278
279
|
|
|
279
280
|
/* Detail panel */
|
|
@@ -401,7 +402,7 @@ const NULL_VERTEX_ID = -1;
|
|
|
401
402
|
const GRAPH_COLORS = ['#4ec9b0','#569cd6','#c586c0','#ce9178','#dcdcaa','#4fc1ff','#d7ba7d','#9cdcfe','#b5cea8','#d16969'];
|
|
402
403
|
const graphConfig = {
|
|
403
404
|
colours: GRAPH_COLORS,
|
|
404
|
-
grid: { x: 16, y:
|
|
405
|
+
grid: { x: 16, y: 24, offsetX: 8, offsetY: 12, expandY: 60 },
|
|
405
406
|
style: 'rounded'
|
|
406
407
|
};
|
|
407
408
|
|
|
@@ -590,6 +591,7 @@ window.addEventListener('message', (event) => {
|
|
|
590
591
|
case 'loadStashes':
|
|
591
592
|
state.stashes = msg.data || [];
|
|
592
593
|
renderStashList();
|
|
594
|
+
if (state.commits.length > 0) renderCommitList();
|
|
593
595
|
break;
|
|
594
596
|
case 'error':
|
|
595
597
|
document.getElementById('status-text').textContent = 'Error: ' + msg.message;
|
|
@@ -1054,8 +1056,9 @@ document.getElementById('stash-save').addEventListener('click', () => {
|
|
|
1054
1056
|
// --- Graph rendering (faithful port of vscode-git-graph graph.ts) ---
|
|
1055
1057
|
|
|
1056
1058
|
class GBranch {
|
|
1057
|
-
constructor(colour) {
|
|
1059
|
+
constructor(colour, isStash) {
|
|
1058
1060
|
this._colour = colour;
|
|
1061
|
+
this._isStash = !!isStash;
|
|
1059
1062
|
this._end = 0;
|
|
1060
1063
|
this._lines = [];
|
|
1061
1064
|
this._numUncommitted = 0;
|
|
@@ -1073,7 +1076,7 @@ class GBranch {
|
|
|
1073
1076
|
setEnd(end) { this._end = end; }
|
|
1074
1077
|
|
|
1075
1078
|
draw(svg, config, expandAt) {
|
|
1076
|
-
const colour = config.colours[this._colour % config.colours.length];
|
|
1079
|
+
const colour = this._isStash ? '#808080' : config.colours[this._colour % config.colours.length];
|
|
1077
1080
|
const d = config.grid.y * (config.style === 'angular' ? 0.38 : 0.8);
|
|
1078
1081
|
const pxLines = [];
|
|
1079
1082
|
let curPath = '';
|
|
@@ -1195,7 +1198,9 @@ class GVertex {
|
|
|
1195
1198
|
|
|
1196
1199
|
draw(svg, config, expandOffset, overListener, outListener) {
|
|
1197
1200
|
if (this._onBranch === null) return;
|
|
1198
|
-
const
|
|
1201
|
+
const STASH_COLOR = '#808080';
|
|
1202
|
+
const colour = this.isStash ? STASH_COLOR
|
|
1203
|
+
: this._isCommitted ? config.colours[this._onBranch.getColour() % config.colours.length] : '#808080';
|
|
1199
1204
|
const cx = (this._x * config.grid.x + config.grid.offsetX).toString();
|
|
1200
1205
|
const cy = (this.id * config.grid.y + config.grid.offsetY + (expandOffset ? config.grid.expandY : 0)).toString();
|
|
1201
1206
|
|
|
@@ -1212,17 +1217,6 @@ class GVertex {
|
|
|
1212
1217
|
}
|
|
1213
1218
|
svg.appendChild(circle);
|
|
1214
1219
|
|
|
1215
|
-
if (this.isStash && !this._isCurrent) {
|
|
1216
|
-
circle.setAttribute('r', '4.5');
|
|
1217
|
-
circle.setAttribute('class', 'graphStashOuter');
|
|
1218
|
-
const inner = document.createElementNS(SVG_NS, 'circle');
|
|
1219
|
-
inner.setAttribute('cx', cx);
|
|
1220
|
-
inner.setAttribute('cy', cy);
|
|
1221
|
-
inner.setAttribute('r', '2');
|
|
1222
|
-
inner.setAttribute('class', 'graphStashInner');
|
|
1223
|
-
svg.appendChild(inner);
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
1220
|
circle.addEventListener('mouseover', overListener);
|
|
1227
1221
|
circle.addEventListener('mouseout', outListener);
|
|
1228
1222
|
}
|
|
@@ -1235,12 +1229,11 @@ function graphLoadCommits(commits) {
|
|
|
1235
1229
|
gVertices = []; gBranches = []; gAvailColours = [];
|
|
1236
1230
|
if (commits.length === 0) return;
|
|
1237
1231
|
|
|
1238
|
-
const stashHashes = new Set(state.stashes.map(s => s.hash));
|
|
1239
1232
|
const nullVertex = new GVertex(NULL_VERTEX_ID, false);
|
|
1240
1233
|
const lookup = {};
|
|
1241
1234
|
for (let i = 0; i < commits.length; i++) {
|
|
1242
1235
|
lookup[commits[i].hash] = i;
|
|
1243
|
-
gVertices.push(new GVertex(i,
|
|
1236
|
+
gVertices.push(new GVertex(i, !!commits[i]._isStash));
|
|
1244
1237
|
}
|
|
1245
1238
|
gCommitLookup = lookup;
|
|
1246
1239
|
|
|
@@ -1285,7 +1278,7 @@ function graphDeterminePath(startAt) {
|
|
|
1285
1278
|
if (foundPtp) { vertex.registerParentProcessed(); break; }
|
|
1286
1279
|
}
|
|
1287
1280
|
} else {
|
|
1288
|
-
const branch = new GBranch(graphGetAvailableColour(startAt));
|
|
1281
|
+
const branch = new GBranch(graphGetAvailableColour(startAt), vertex.isStash);
|
|
1289
1282
|
vertex.addToBranch(branch, lastPoint.x);
|
|
1290
1283
|
vertex.registerUnavailablePoint(lastPoint.x, vertex, branch);
|
|
1291
1284
|
for (i = startAt + 1; i < gVertices.length; i++) {
|
|
@@ -1361,10 +1354,10 @@ function graphRender(expandIdx) {
|
|
|
1361
1354
|
function graphVertexOver(e) {
|
|
1362
1355
|
if (!e.target || !e.target.dataset || !e.target.dataset.id) return;
|
|
1363
1356
|
const id = parseInt(e.target.dataset.id);
|
|
1364
|
-
if (id >= 0 && id <
|
|
1357
|
+
if (id >= 0 && id < gVertices.length) {
|
|
1365
1358
|
const rows = document.querySelectorAll('.commit-row:not(.header-row)');
|
|
1366
1359
|
if (rows[id]) rows[id].classList.add('graph-hover');
|
|
1367
|
-
e.target.setAttribute('r',
|
|
1360
|
+
e.target.setAttribute('r', '5');
|
|
1368
1361
|
}
|
|
1369
1362
|
}
|
|
1370
1363
|
function graphVertexOut(e) {
|
|
@@ -1373,28 +1366,63 @@ function graphVertexOut(e) {
|
|
|
1373
1366
|
if (id >= 0) {
|
|
1374
1367
|
const rows = document.querySelectorAll('.commit-row:not(.header-row)');
|
|
1375
1368
|
if (rows[id]) rows[id].classList.remove('graph-hover');
|
|
1376
|
-
e.target.setAttribute('r',
|
|
1369
|
+
e.target.setAttribute('r', '4');
|
|
1377
1370
|
}
|
|
1378
1371
|
}
|
|
1379
1372
|
|
|
1380
1373
|
// --- Commit list ---
|
|
1381
1374
|
function getDisplayCommits() {
|
|
1375
|
+
let commits = state.commits;
|
|
1376
|
+
|
|
1377
|
+
// Inject uncommitted changes virtual commit
|
|
1382
1378
|
const u = state.uncommitted;
|
|
1383
1379
|
const totalFiles = u ? (u.staged.length + u.unstaged.length + (u.conflicted ? u.conflicted.length : 0)) : 0;
|
|
1384
|
-
if (
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1380
|
+
if (u && totalFiles > 0) {
|
|
1381
|
+
commits = [{
|
|
1382
|
+
hash: 'uncommitted',
|
|
1383
|
+
parents: state.head ? [state.head] : [],
|
|
1384
|
+
author: '', authorEmail: '',
|
|
1385
|
+
authorDate: Math.floor(Date.now() / 1000),
|
|
1386
|
+
committer: '', committerEmail: '',
|
|
1387
|
+
commitDate: Math.floor(Date.now() / 1000),
|
|
1388
|
+
refs: [],
|
|
1389
|
+
message: 'Uncommitted Changes (' + totalFiles + ' files)',
|
|
1390
|
+
}, ...commits];
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
// Inject stash virtual commits as branch spurs from their parent
|
|
1394
|
+
if (state.settings.showStashes && state.stashes.length > 0) {
|
|
1395
|
+
const parentIndexes = {};
|
|
1396
|
+
const commitHashSet = new Set(commits.map(c => c.hash));
|
|
1397
|
+
for (const s of state.stashes) {
|
|
1398
|
+
if (!s.parentHash || !commitHashSet.has(s.parentHash)) continue;
|
|
1399
|
+
if (!parentIndexes[s.parentHash]) parentIndexes[s.parentHash] = [];
|
|
1400
|
+
parentIndexes[s.parentHash].push(s);
|
|
1401
|
+
}
|
|
1402
|
+
if (Object.keys(parentIndexes).length > 0) {
|
|
1403
|
+
const result = [];
|
|
1404
|
+
for (const c of commits) {
|
|
1405
|
+
result.push(c);
|
|
1406
|
+
const stashesForCommit = parentIndexes[c.hash];
|
|
1407
|
+
if (stashesForCommit) {
|
|
1408
|
+
for (const s of stashesForCommit) {
|
|
1409
|
+
result.push({
|
|
1410
|
+
hash: s.hash,
|
|
1411
|
+
parents: [s.parentHash],
|
|
1412
|
+
author: '', authorEmail: '',
|
|
1413
|
+
authorDate: 0, committer: '', committerEmail: '', commitDate: 0,
|
|
1414
|
+
refs: [{ type: 'stash', name: 'stash@{' + s.index + '}' }],
|
|
1415
|
+
message: s.message,
|
|
1416
|
+
_isStash: true,
|
|
1417
|
+
});
|
|
1418
|
+
}
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
commits = result;
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
return commits;
|
|
1398
1426
|
}
|
|
1399
1427
|
|
|
1400
1428
|
function renderCommitList() {
|
|
@@ -1411,8 +1439,9 @@ function renderCommitList() {
|
|
|
1411
1439
|
|
|
1412
1440
|
displayCommits.forEach((commit, idx) => {
|
|
1413
1441
|
const isVirtual = commit.hash === 'uncommitted';
|
|
1442
|
+
const isStash = !!commit._isStash;
|
|
1414
1443
|
const row = document.createElement('div');
|
|
1415
|
-
row.className = 'commit-row' + (isVirtual ? ' virtual' : '');
|
|
1444
|
+
row.className = 'commit-row' + (isVirtual ? ' virtual' : '') + (isStash ? ' stash-row' : '');
|
|
1416
1445
|
row.dataset.hash = commit.hash;
|
|
1417
1446
|
|
|
1418
1447
|
// Graph spacer column (SVG overlays this area)
|
|
@@ -1437,30 +1466,39 @@ function renderCommitList() {
|
|
|
1437
1466
|
const refName = badge.textContent;
|
|
1438
1467
|
const refType = badge.className.includes('ref-head') ? 'head'
|
|
1439
1468
|
: badge.className.includes('ref-remote') ? 'remote'
|
|
1440
|
-
: badge.className.includes('ref-tag') ? 'tag'
|
|
1469
|
+
: badge.className.includes('ref-tag') ? 'tag'
|
|
1470
|
+
: badge.className.includes('ref-stash') ? 'stash' : 'local';
|
|
1441
1471
|
badge.style.cursor = 'pointer';
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1472
|
+
if (refType === 'stash') {
|
|
1473
|
+
badge.addEventListener('contextmenu', (e) => {
|
|
1474
|
+
e.preventDefault();
|
|
1475
|
+
e.stopPropagation();
|
|
1476
|
+
showStashBadgeMenu(e.clientX, e.clientY, refName);
|
|
1477
|
+
});
|
|
1478
|
+
} else {
|
|
1479
|
+
badge.addEventListener('dblclick', (e) => {
|
|
1480
|
+
e.stopPropagation();
|
|
1481
|
+
gitAction('checkout', { target: refName });
|
|
1482
|
+
});
|
|
1483
|
+
badge.addEventListener('contextmenu', (e) => {
|
|
1484
|
+
e.preventDefault();
|
|
1485
|
+
e.stopPropagation();
|
|
1486
|
+
showBranchContextMenu(e.clientX, e.clientY, refName, refType, commit);
|
|
1487
|
+
});
|
|
1488
|
+
}
|
|
1451
1489
|
});
|
|
1452
1490
|
|
|
1453
1491
|
const authorCol = document.createElement('div');
|
|
1454
1492
|
authorCol.className = 'col-author';
|
|
1455
|
-
authorCol.textContent = isVirtual ? '' : commit.author;
|
|
1493
|
+
authorCol.textContent = (isVirtual || isStash) ? '' : commit.author;
|
|
1456
1494
|
|
|
1457
1495
|
const dateCol = document.createElement('div');
|
|
1458
1496
|
dateCol.className = 'col-date';
|
|
1459
|
-
dateCol.textContent = isVirtual ? 'now' : formatDate(commit.commitDate);
|
|
1497
|
+
dateCol.textContent = isVirtual ? 'now' : isStash ? '' : formatDate(commit.commitDate);
|
|
1460
1498
|
|
|
1461
1499
|
const hashCol = document.createElement('div');
|
|
1462
1500
|
hashCol.className = 'col-hash';
|
|
1463
|
-
hashCol.textContent = isVirtual ? '...' : commit.hash.substring(0, 7);
|
|
1501
|
+
hashCol.textContent = isVirtual ? '...' : isStash ? '' : commit.hash.substring(0, 7);
|
|
1464
1502
|
|
|
1465
1503
|
row.appendChild(graphCol);
|
|
1466
1504
|
row.appendChild(msgCol);
|
|
@@ -1475,6 +1513,13 @@ function renderCommitList() {
|
|
|
1475
1513
|
showUncommittedContextMenu(e.clientX, e.clientY);
|
|
1476
1514
|
});
|
|
1477
1515
|
setupLongPress(row, (x, y) => showUncommittedContextMenu(x, y));
|
|
1516
|
+
} else if (isStash) {
|
|
1517
|
+
const stashRef = (commit.refs && commit.refs[0]) ? commit.refs[0].name : '';
|
|
1518
|
+
row.addEventListener('contextmenu', (e) => {
|
|
1519
|
+
e.preventDefault();
|
|
1520
|
+
if (stashRef) showStashBadgeMenu(e.clientX, e.clientY, stashRef);
|
|
1521
|
+
});
|
|
1522
|
+
setupLongPress(row, (x, y) => { if (stashRef) showStashBadgeMenu(x, y, stashRef); });
|
|
1478
1523
|
} else {
|
|
1479
1524
|
row.addEventListener('contextmenu', (e) => {
|
|
1480
1525
|
e.preventDefault();
|
|
@@ -1922,6 +1967,41 @@ function showBranchContextMenu(x, y, branchName, refType, commit) {
|
|
|
1922
1967
|
setTimeout(() => document.addEventListener('click', hideContextMenu, { once: true }), 0);
|
|
1923
1968
|
}
|
|
1924
1969
|
|
|
1970
|
+
function showStashBadgeMenu(x, y, stashRef) {
|
|
1971
|
+
const menu = document.getElementById('context-menu');
|
|
1972
|
+
const items = [
|
|
1973
|
+
{ label: 'Apply (keep stash)', action: () => gitAction('stashApply', { stashRef }) },
|
|
1974
|
+
{ label: 'Pop (apply & remove)', action: () => gitAction('stashPop', { stashRef }) },
|
|
1975
|
+
{ separator: true },
|
|
1976
|
+
{ label: 'Drop stash...', destructive: true, action: () => showDialog({
|
|
1977
|
+
title: 'Drop Stash',
|
|
1978
|
+
message: 'Delete ' + stashRef + '? This cannot be undone.',
|
|
1979
|
+
destructive: true,
|
|
1980
|
+
confirmLabel: 'Drop',
|
|
1981
|
+
onConfirm: () => gitAction('stashDrop', { stashRef }),
|
|
1982
|
+
})
|
|
1983
|
+
},
|
|
1984
|
+
];
|
|
1985
|
+
let html = '';
|
|
1986
|
+
items.forEach((item, idx) => {
|
|
1987
|
+
if (item.separator) {
|
|
1988
|
+
html += '<div class="ctx-separator"></div>';
|
|
1989
|
+
} else {
|
|
1990
|
+
html += '<div class="ctx-item' + (item.destructive ? ' destructive' : '') + '" data-idx="' + idx + '">' + escHtml(item.label) + '</div>';
|
|
1991
|
+
}
|
|
1992
|
+
});
|
|
1993
|
+
menu.innerHTML = html;
|
|
1994
|
+
menu.style.left = Math.min(x, window.innerWidth - 200) + 'px';
|
|
1995
|
+
menu.style.top = Math.min(y, window.innerHeight - 200) + 'px';
|
|
1996
|
+
menu.classList.remove('hidden');
|
|
1997
|
+
menu.querySelectorAll('.ctx-item').forEach(el => {
|
|
1998
|
+
const idx = parseInt(el.dataset.idx);
|
|
1999
|
+
const item = items[idx];
|
|
2000
|
+
if (item && item.action) el.addEventListener('click', () => { hideContextMenu(); item.action(); });
|
|
2001
|
+
});
|
|
2002
|
+
setTimeout(() => document.addEventListener('click', hideContextMenu, { once: true }), 0);
|
|
2003
|
+
}
|
|
2004
|
+
|
|
1925
2005
|
function hideContextMenu() {
|
|
1926
2006
|
document.getElementById('context-menu').classList.add('hidden');
|
|
1927
2007
|
}
|
|
@@ -94,29 +94,30 @@ export function ExtensionWebview({ metadata }: ExtensionWebviewProps) {
|
|
|
94
94
|
return () => { cancelled = true; clearTimeout(initialTimer); clearInterval(retryTimer); };
|
|
95
95
|
}, [panel, viewType, projectName]);
|
|
96
96
|
|
|
97
|
-
// When
|
|
98
|
-
|
|
97
|
+
// When panel exists, ensure correct project is loaded.
|
|
98
|
+
// On mount: dispatch command so extension can reload if project differs.
|
|
99
|
+
// On project switch: dispatch command with new project path.
|
|
100
|
+
// Extension deduplicates same-project calls (noop if already correct).
|
|
101
|
+
const prevProjectRef = useRef<string | null>(null);
|
|
99
102
|
useEffect(() => {
|
|
100
|
-
if (!panel || !viewType || !
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// Resolve new project path and dispatch command
|
|
103
|
+
if (!panel || !viewType || !projectName) return;
|
|
104
|
+
// Skip if we already dispatched for this project
|
|
105
|
+
if (projectName === prevProjectRef.current) return;
|
|
106
|
+
prevProjectRef.current = projectName;
|
|
107
|
+
const command = viewType.includes(".") ? viewType : `${viewType}.view`;
|
|
106
108
|
(async () => {
|
|
107
109
|
try {
|
|
108
110
|
const res = await fetch("/api/projects");
|
|
109
111
|
const json = await res.json() as { ok: boolean; data?: { name: string; path: string }[] };
|
|
110
|
-
const match = json.data?.find((p
|
|
112
|
+
const match = json.data?.find((p) => p.name === projectName);
|
|
111
113
|
if (match) {
|
|
112
|
-
const command = viewType.includes(".") ? viewType : `${viewType}.view`;
|
|
113
114
|
window.dispatchEvent(new CustomEvent("ext:command:execute", {
|
|
114
115
|
detail: { command, args: [match.path] },
|
|
115
116
|
}));
|
|
116
117
|
}
|
|
117
118
|
} catch {}
|
|
118
119
|
})();
|
|
119
|
-
}, [panel, viewType,
|
|
120
|
+
}, [panel, viewType, projectName]);
|
|
120
121
|
|
|
121
122
|
// Check activation errors for this extension
|
|
122
123
|
const extensionId = metadata?.extensionId as string | undefined;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import{t as n}from"./jsx-runtime-BRW_vwa9.js";import{B as r,E as i,v as a}from"./index-CKsEzQ4f.js";var o=e(t(),1),s=n(),c=`<script>
|
|
2
|
-
function acquireVsCodeApi(){return{postMessage:function(m){window.parent.postMessage(m,"*")},getState:function(){try{return JSON.parse(sessionStorage.getItem("vscode-state")||"null")}catch{return null}},setState:function(s){sessionStorage.setItem("vscode-state",JSON.stringify(s));return s}}}
|
|
3
|
-
<\/script>`;function l(e){if(!e)return e;let t=e.indexOf(`<head>`);return t===-1?c+e:e.slice(0,t+6)+c+e.slice(t+6)}function u({metadata:e}){let t=e?.panelId,n=e?.viewType,c=i(e=>e.currentProject),u=e?.projectName||c||void 0,[d,f]=(0,o.useState)(!1),p=a(e=>{if(t&&e.webviewPanels[t])return e.webviewPanels[t];if(n){let t=n.includes(`.`)?n:`${n}.view`;return Object.values(e.webviewPanels).find(e=>e.viewType===n||e.viewType===t)}}),m=p?.id??t,h=(0,o.useRef)(null),g=l(p?.html??``);(0,o.useEffect)(()=>{if(p||!n)return;let e=n.includes(`.`)?n:`${n}.view`,t=!1,r=null;async function i(){if(r)return r;if(!u)return[];try{let e=(await(await fetch(`/api/projects`)).json()).data?.find(e=>e.name===u);r=e?[e.path]:[]}catch{r=[]}return r}async function a(){let n=await i();t||window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:n}}))}let o=setTimeout(()=>{t||a()},500),s=setInterval(()=>{t||a()},2e3);return()=>{t=!0,clearTimeout(o),clearInterval(s)}},[p,n,u]);let _=(0,o.useRef)(c);(0,o.useEffect)(()=>{if(!p||!n||!c||c===_.current){_.current=c;return}_.current=c,(async()=>{try{let e=(await(await fetch(`/api/projects`)).json()).data?.find(e=>e.name===c);if(e){let t=n.includes(`.`)?n:`${n}.view`;window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:t,args:[e.path]}}))}}catch{}})()},[p,n,c]);let v=e?.extensionId,y=a(e=>{if(v&&e.activationErrors[v])return e.activationErrors[v];if(n){for(let[t,r]of Object.entries(e.activationErrors))if(t===`ext-${n}`)return r}}),b=(0,o.useCallback)(()=>{if(f(!1),!n)return;let e=n.includes(`.`)?n:`${n}.view`;(async()=>{try{let t=(await(await fetch(`/api/projects`)).json()).data?.find(e=>e.name===u),n=t?[t.path]:[];window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:n}}))}catch{}})()},[n,u]);return(0,o.useEffect)(()=>{if(p){f(!1);return}let e=setTimeout(()=>f(!0),1e4);return()=>clearTimeout(e)},[p]),(0,o.useEffect)(()=>{if(!m)return;let e=e=>{h.current&&e.source===h.current.contentWindow&&window.dispatchEvent(new CustomEvent(`ext:webview:send`,{detail:{panelId:m,message:e.data}}))};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[m]),(0,o.useEffect)(()=>{if(!m)return;let e=e=>{let{panelId:t,message:n}=e.detail;t===m&&h.current?.contentWindow?.postMessage(n,`*`)};return window.addEventListener(`ext:webview:message`,e),()=>window.removeEventListener(`ext:webview:message`,e)},[m]),p?(0,s.jsx)(`div`,{className:`h-full w-full relative`,children:(0,s.jsx)(`iframe`,{ref:h,srcDoc:g,sandbox:`allow-scripts`,className:`w-full h-full border-0 bg-white dark:bg-zinc-900`,title:p.title})}):(0,s.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-sm text-text-subtle`,children:d?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{className:`text-destructive font-medium`,children:`Extension failed to load`}),y&&(0,s.jsx)(`span`,{className:`text-xs text-muted-foreground max-w-md text-center`,children:y}),(0,s.jsx)(`button`,{onClick:b,className:`text-xs text-primary hover:underline`,children:`Retry`})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r,{className:`size-5 animate-spin`}),(0,s.jsx)(`span`,{children:`Loading extension...`})]})})}export{u as ExtensionWebview};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./react-nm2Ru1Pt.js";import"./api-client-BvxmRZUi.js";import{w as e}from"./index-CKsEzQ4f.js";export{e as useKeybindingsStore};
|