diff --git a/typescript/vscode-extension/.gitignore b/typescript/vscode-extension/.gitignore index 84c25644..42069994 100644 --- a/typescript/vscode-extension/.gitignore +++ b/typescript/vscode-extension/.gitignore @@ -1,5 +1,6 @@ out .vscode-test/ +webview-ui.svelte/ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. diff --git a/typescript/vscode-extension/media/logo_128.png b/typescript/vscode-extension/media/logo_128.png new file mode 100644 index 00000000..18cf5d9b Binary files /dev/null and b/typescript/vscode-extension/media/logo_128.png differ diff --git a/typescript/vscode-extension/package.json b/typescript/vscode-extension/package.json index d2847e9e..ec7302dd 100644 --- a/typescript/vscode-extension/package.json +++ b/typescript/vscode-extension/package.json @@ -2,6 +2,7 @@ "name": "suibase", "displayName": "suibase", "description": "Streamline Sui Move development and testing.", + "icon": "media/logo_128.png", "version": "0.0.1", "repository": "https://github.com/ChainMovers/suibase", "engines": { @@ -54,7 +55,7 @@ { "id": "suibaseSidebar", "title": "Suibase", - "icon": "media/dep.svg" + "icon": "media/logo_128.png" } ] }, @@ -63,7 +64,7 @@ { "id": "explorerView", "name": "Suibase", - "icon": "media/dep.svg", + "icon": "media/logo_128.svg", "contextualTitle": "Suibase", "type": "webview" } diff --git a/typescript/vscode-extension/src/bases/BaseWebview.ts b/typescript/vscode-extension/src/bases/BaseWebview.ts index 8a7df07f..716cf8f0 100644 --- a/typescript/vscode-extension/src/bases/BaseWebview.ts +++ b/typescript/vscode-extension/src/bases/BaseWebview.ts @@ -65,7 +65,7 @@ export class BaseWebview implements vscode.WebviewViewProvider { this.extensionUri = BaseWebview.context.extensionUri; this.extensionUris = [ Uri.joinPath(BaseWebview.context.extensionUri, "out"), - Uri.joinPath(BaseWebview.context.extensionUri, "webview-ui/public/build"), + Uri.joinPath(BaseWebview.context.extensionUri, "webview-ui/build"), Uri.joinPath(BaseWebview.context.extensionUri, "webview-ui/node_modules/@vscode/codicons/dist"), ]; } @@ -197,10 +197,10 @@ export class BaseWebview implements vscode.WebviewViewProvider { } // The CSS file from the Svelte build output - const stylesUri = getUri(webview, this.extensionUri, ["webview-ui", "public", "build", "bundle.css"]); + const stylesUri = getUri(webview, this.extensionUri, ["webview-ui", "build", "assets", "index.css"]); // The JS file from the Svelte build output - const scriptUri = getUri(webview, this.extensionUri, ["webview-ui", "public", "build", "bundle.js"]); + const scriptUri = getUri(webview, this.extensionUri, ["webview-ui", "build", "assets", "index.js"]); // The icon library being used. const iconsUri = getUri(webview, this.extensionUri, [ @@ -222,20 +222,20 @@ export class BaseWebview implements vscode.WebviewViewProvider { - Hello World + Webview-UI - - + + + - - - +
+ `; diff --git a/typescript/vscode-extension/src/common/SuibaseData.ts b/typescript/vscode-extension/src/common/SuibaseData.ts index 7c300909..0578e511 100644 --- a/typescript/vscode-extension/src/common/SuibaseData.ts +++ b/typescript/vscode-extension/src/common/SuibaseData.ts @@ -13,7 +13,8 @@ export class SuibaseGlobalStates { public uiSelectedContext: string = "DSUI"; public uiSelectedContextCallback: (newUiSelectedContext: string) => void = ( - newUiSelectedContext: string + // eslint-disable-next-line + _newUiSelectedContext: string ) => {}; public serialize(): string { diff --git a/typescript/vscode-extension/webview-ui/.eslintrc.cjs b/typescript/vscode-extension/webview-ui/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/typescript/vscode-extension/webview-ui/.gitignore b/typescript/vscode-extension/webview-ui/.gitignore index 27210e86..a547bf36 100644 --- a/typescript/vscode-extension/webview-ui/.gitignore +++ b/typescript/vscode-extension/webview-ui/.gitignore @@ -1,8 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + node_modules -/public/build/ dist dist-ssr -build -build-ssr +*.local +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea .DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/typescript/vscode-extension/webview-ui/README.md b/typescript/vscode-extension/webview-ui/README.md index 5ab19c91..0d6babed 100644 --- a/typescript/vscode-extension/webview-ui/README.md +++ b/typescript/vscode-extension/webview-ui/README.md @@ -1,10 +1,30 @@ -# `webview-ui` Directory +# React + TypeScript + Vite -This directory contains all of the code that will be executed within the webview context. It can be thought of as the place where all the "frontend" code of a webview is contained. +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. -Types of content that can be contained here: +Currently, two official plugins are available: -- Frontend framework code (i.e. Svelte, Vue, SolidJS, React, etc.) -- JavaScript files -- CSS files -- Assets / resources (i.e. images, illustrations, etc.) +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/typescript/vscode-extension/webview-ui/build/assets/index.css b/typescript/vscode-extension/webview-ui/build/assets/index.css new file mode 100644 index 00000000..ae48523a --- /dev/null +++ b/typescript/vscode-extension/webview-ui/build/assets/index.css @@ -0,0 +1 @@ +main{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;height:100%}div{display:flex;flex-direction:row;justify-content:left;align-items:center;width:400px}div.workdir_row{display:flex;flex-direction:row;justify-content:left;align-items:center;width:310px;gap:10px;padding:3px 0;border:1px solid gray;border-radius:5px}h2.workdir{margin:0;font-size:16px;width:30px;text-align:left;padding-left:5px}h2.status{margin:0;font-size:9px;color:#666;width:70px;text-align:right} diff --git a/typescript/vscode-extension/webview-ui/build/assets/index.js b/typescript/vscode-extension/webview-ui/build/assets/index.js new file mode 100644 index 00000000..5beeb98e --- /dev/null +++ b/typescript/vscode-extension/webview-ui/build/assets/index.js @@ -0,0 +1,1582 @@ +var Yp=Object.defineProperty;var Xp=(t,e,n)=>e in t?Yp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ou=(t,e,n)=>(Xp(t,typeof e!="symbol"?e+"":e,n),n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Zp(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var bd={exports:{}},ts={},xd={exports:{}},F={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Tr=Symbol.for("react.element"),Jp=Symbol.for("react.portal"),Kp=Symbol.for("react.fragment"),em=Symbol.for("react.strict_mode"),tm=Symbol.for("react.profiler"),nm=Symbol.for("react.provider"),im=Symbol.for("react.context"),rm=Symbol.for("react.forward_ref"),om=Symbol.for("react.suspense"),sm=Symbol.for("react.memo"),lm=Symbol.for("react.lazy"),Pu=Symbol.iterator;function am(t){return t===null||typeof t!="object"?null:(t=Pu&&t[Pu]||t["@@iterator"],typeof t=="function"?t:null)}var kd={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Cd=Object.assign,Sd={};function gi(t,e,n){this.props=t,this.context=e,this.refs=Sd,this.updater=n||kd}gi.prototype.isReactComponent={};gi.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};gi.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function $d(){}$d.prototype=gi.prototype;function va(t,e,n){this.props=t,this.context=e,this.refs=Sd,this.updater=n||kd}var ga=va.prototype=new $d;ga.constructor=va;Cd(ga,gi.prototype);ga.isPureReactComponent=!0;var Du=Array.isArray,Ed=Object.prototype.hasOwnProperty,ya={current:null},Td={key:!0,ref:!0,__self:!0,__source:!0};function Id(t,e,n){var i,r={},o=null,s=null;if(e!=null)for(i in e.ref!==void 0&&(s=e.ref),e.key!==void 0&&(o=""+e.key),e)Ed.call(e,i)&&!Td.hasOwnProperty(i)&&(r[i]=e[i]);var l=arguments.length-2;if(l===1)r.children=n;else if(1>>1,de=I[ne];if(0>>1;ner(Es,_))hnr(Br,Es)?(I[ne]=Br,I[hn]=_,ne=hn):(I[ne]=Es,I[dn]=_,ne=dn);else if(hnr(Br,_))I[ne]=Br,I[hn]=_,ne=hn;else break e}}return D}function r(I,D){var _=I.sortIndex-D.sortIndex;return _!==0?_:I.id-D.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}var a=[],u=[],c=1,h=null,f=3,g=!1,y=!1,k=!1,A=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function m(I){for(var D=n(u);D!==null;){if(D.callback===null)i(u);else if(D.startTime<=I)i(u),D.sortIndex=D.expirationTime,e(a,D);else break;D=n(u)}}function b(I){if(k=!1,m(I),!y)if(n(a)!==null)y=!0,Ss(C);else{var D=n(u);D!==null&&$s(b,D.startTime-I)}}function C(I,D){y=!1,k&&(k=!1,p(O),O=-1),g=!0;var _=f;try{for(m(D),h=n(a);h!==null&&(!(h.expirationTime>D)||I&&!st());){var ne=h.callback;if(typeof ne=="function"){h.callback=null,f=h.priorityLevel;var de=ne(h.expirationTime<=D);D=t.unstable_now(),typeof de=="function"?h.callback=de:h===n(a)&&i(a),m(D)}else i(a);h=n(a)}if(h!==null)var zr=!0;else{var dn=n(u);dn!==null&&$s(b,dn.startTime-D),zr=!1}return zr}finally{h=null,f=_,g=!1}}var T=!1,R=null,O=-1,te=5,z=-1;function st(){return!(t.unstable_now()-zI||125ne?(I.sortIndex=_,e(u,I),n(a)===null&&I===n(u)&&(k?(p(O),O=-1):k=!0,$s(b,_-ne))):(I.sortIndex=de,e(a,I),y||g||(y=!0,Ss(C))),I},t.unstable_shouldYield=st,t.unstable_wrapCallback=function(I){var D=f;return function(){var _=f;f=D;try{return I.apply(this,arguments)}finally{f=_}}}})(Ad);Dd.exports=Ad;var wm=Dd.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _d=ba,Ge=wm;function x(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),gl=Object.prototype.hasOwnProperty,bm=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,_u={},Lu={};function xm(t){return gl.call(Lu,t)?!0:gl.call(_u,t)?!1:bm.test(t)?Lu[t]=!0:(_u[t]=!0,!1)}function km(t,e,n,i){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function Cm(t,e,n,i){if(e===null||typeof e>"u"||km(t,e,n,i))return!0;if(i)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function _e(t,e,n,i,r,o,s){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=o,this.removeEmptyString=s}var ge={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){ge[t]=new _e(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];ge[e]=new _e(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){ge[t]=new _e(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){ge[t]=new _e(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){ge[t]=new _e(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){ge[t]=new _e(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){ge[t]=new _e(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){ge[t]=new _e(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){ge[t]=new _e(t,5,!1,t.toLowerCase(),null,!1,!1)});var xa=/[\-:]([a-z])/g;function ka(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(xa,ka);ge[e]=new _e(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(xa,ka);ge[e]=new _e(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(xa,ka);ge[e]=new _e(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){ge[t]=new _e(t,1,!1,t.toLowerCase(),null,!1,!1)});ge.xlinkHref=new _e("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){ge[t]=new _e(t,1,!1,t.toLowerCase(),null,!0,!0)});function Ca(t,e,n,i){var r=ge.hasOwnProperty(e)?ge[e]:null;(r!==null?r.type!==0:i||!(2l||r[s]!==o[l]){var a=` +`+r[s].replace(" at new "," at ");return t.displayName&&a.includes("")&&(a=a.replace("",t.displayName)),a}while(1<=s&&0<=l);break}}}finally{Rs=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?Hi(t):""}function Sm(t){switch(t.tag){case 5:return Hi(t.type);case 16:return Hi("Lazy");case 13:return Hi("Suspense");case 19:return Hi("SuspenseList");case 0:case 2:case 15:return t=Os(t.type,!1),t;case 11:return t=Os(t.type.render,!1),t;case 1:return t=Os(t.type,!0),t;default:return""}}function xl(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case zn:return"Fragment";case Fn:return"Portal";case yl:return"Profiler";case Sa:return"StrictMode";case wl:return"Suspense";case bl:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case Fd:return(t.displayName||"Context")+".Consumer";case Nd:return(t._context.displayName||"Context")+".Provider";case $a:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Ea:return e=t.displayName||null,e!==null?e:xl(t.type)||"Memo";case Bt:e=t._payload,t=t._init;try{return xl(t(e))}catch{}}return null}function $m(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return xl(e);case 8:return e===Sa?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function en(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Bd(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Em(t){var e=Bd(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),i=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var r=n.get,o=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return r.call(this)},set:function(s){i=""+s,o.call(this,s)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(s){i=""+s},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Hr(t){t._valueTracker||(t._valueTracker=Em(t))}function Md(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),i="";return t&&(i=Bd(t)?t.checked?"true":"false":t.value),t=i,t!==n?(e.setValue(t),!0):!1}function To(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function kl(t,e){var n=e.checked;return J({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Fu(t,e){var n=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;n=en(e.value!=null?e.value:n),t._wrapperState={initialChecked:i,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function Vd(t,e){e=e.checked,e!=null&&Ca(t,"checked",e,!1)}function Cl(t,e){Vd(t,e);var n=en(e.value),i=e.type;if(n!=null)i==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(i==="submit"||i==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?Sl(t,e.type,n):e.hasOwnProperty("defaultValue")&&Sl(t,e.type,en(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function zu(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function Sl(t,e,n){(e!=="number"||To(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var ji=Array.isArray;function Zn(t,e,n,i){if(t=t.options,e){e={};for(var r=0;r"+e.valueOf().toString()+"",e=jr.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function sr(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Qi={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Tm=["Webkit","ms","Moz","O"];Object.keys(Qi).forEach(function(t){Tm.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Qi[e]=Qi[t]})});function Wd(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Qi.hasOwnProperty(t)&&Qi[t]?(""+e).trim():e+"px"}function Qd(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var i=n.indexOf("--")===0,r=Wd(n,e[n],i);n==="float"&&(n="cssFloat"),i?t.setProperty(n,r):t[n]=r}}var Im=J({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Tl(t,e){if(e){if(Im[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(x(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(x(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(x(61))}if(e.style!=null&&typeof e.style!="object")throw Error(x(62))}}function Il(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Rl=null;function Ta(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Ol=null,Jn=null,Kn=null;function Vu(t){if(t=Or(t)){if(typeof Ol!="function")throw Error(x(280));var e=t.stateNode;e&&(e=ss(e),Ol(t.stateNode,t.type,e))}}function Gd(t){Jn?Kn?Kn.push(t):Kn=[t]:Jn=t}function qd(){if(Jn){var t=Jn,e=Kn;if(Kn=Jn=null,Vu(t),e)for(t=0;t>>=0,t===0?32:31-(Bm(t)/Mm|0)|0}var Ur=64,Wr=4194304;function Ui(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Po(t,e){var n=t.pendingLanes;if(n===0)return 0;var i=0,r=t.suspendedLanes,o=t.pingedLanes,s=n&268435455;if(s!==0){var l=s&~r;l!==0?i=Ui(l):(o&=s,o!==0&&(i=Ui(o)))}else s=n&~r,s!==0?i=Ui(s):o!==0&&(i=Ui(o));if(i===0)return 0;if(e!==0&&e!==i&&!(e&r)&&(r=i&-i,o=e&-e,r>=o||r===16&&(o&4194240)!==0))return e;if(i&4&&(i|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=i;0n;n++)e.push(t);return e}function Ir(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-ht(e),t[e]=n}function Um(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var i=t.eventTimes;for(t=t.expirationTimes;0=qi),Xu=" ",Zu=!1;function ph(t,e){switch(t){case"keyup":return yv.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function mh(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Bn=!1;function bv(t,e){switch(t){case"compositionend":return mh(e);case"keypress":return e.which!==32?null:(Zu=!0,Xu);case"textInput":return t=e.data,t===Xu&&Zu?null:t;default:return null}}function xv(t,e){if(Bn)return t==="compositionend"||!La&&ph(t,e)?(t=hh(),mo=Da=jt=null,Bn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=tc(n)}}function wh(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?wh(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function bh(){for(var t=window,e=To();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=To(t.document)}return e}function Na(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function Ov(t){var e=bh(),n=t.focusedElem,i=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&wh(n.ownerDocument.documentElement,n)){if(i!==null&&Na(n)){if(e=i.start,t=i.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var r=n.textContent.length,o=Math.min(i.start,r);i=i.end===void 0?o:Math.min(i.end,r),!t.extend&&o>i&&(r=i,i=o,o=r),r=nc(n,o);var s=nc(n,i);r&&s&&(t.rangeCount!==1||t.anchorNode!==r.node||t.anchorOffset!==r.offset||t.focusNode!==s.node||t.focusOffset!==s.offset)&&(e=e.createRange(),e.setStart(r.node,r.offset),t.removeAllRanges(),o>i?(t.addRange(e),t.extend(s.node,s.offset)):(e.setEnd(s.node,s.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Mn=null,Nl=null,Xi=null,Fl=!1;function ic(t,e,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Fl||Mn==null||Mn!==To(i)||(i=Mn,"selectionStart"in i&&Na(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Xi&&hr(Xi,i)||(Xi=i,i=_o(Nl,"onSelect"),0jn||(t.current=jl[jn],jl[jn]=null,jn--)}function j(t,e){jn++,jl[jn]=t.current,t.current=e}var tn={},ke=sn(tn),ze=sn(!1),Sn=tn;function ai(t,e){var n=t.type.contextTypes;if(!n)return tn;var i=t.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var r={},o;for(o in n)r[o]=e[o];return i&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=r),r}function Be(t){return t=t.childContextTypes,t!=null}function No(){W(ze),W(ke)}function cc(t,e,n){if(ke.current!==tn)throw Error(x(168));j(ke,e),j(ze,n)}function Rh(t,e,n){var i=t.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return n;i=i.getChildContext();for(var r in i)if(!(r in e))throw Error(x(108,$m(t)||"Unknown",r));return J({},n,i)}function Fo(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||tn,Sn=ke.current,j(ke,t),j(ze,ze.current),!0}function dc(t,e,n){var i=t.stateNode;if(!i)throw Error(x(169));n?(t=Rh(t,e,Sn),i.__reactInternalMemoizedMergedChildContext=t,W(ze),W(ke),j(ke,t)):W(ze),j(ze,n)}var St=null,ls=!1,Us=!1;function Oh(t){St===null?St=[t]:St.push(t)}function Hv(t){ls=!0,Oh(t)}function ln(){if(!Us&&St!==null){Us=!0;var t=0,e=H;try{var n=St;for(H=1;t>=s,r-=s,Et=1<<32-ht(e)+r|n<O?(te=R,R=null):te=R.sibling;var z=f(p,R,m[O],b);if(z===null){R===null&&(R=te);break}t&&R&&z.alternate===null&&e(p,R),d=o(z,d,O),T===null?C=z:T.sibling=z,T=z,R=te}if(O===m.length)return n(p,R),Q&&pn(p,O),C;if(R===null){for(;OO?(te=R,R=null):te=R.sibling;var st=f(p,R,z.value,b);if(st===null){R===null&&(R=te);break}t&&R&&st.alternate===null&&e(p,R),d=o(st,d,O),T===null?C=st:T.sibling=st,T=st,R=te}if(z.done)return n(p,R),Q&&pn(p,O),C;if(R===null){for(;!z.done;O++,z=m.next())z=h(p,z.value,b),z!==null&&(d=o(z,d,O),T===null?C=z:T.sibling=z,T=z);return Q&&pn(p,O),C}for(R=i(p,R);!z.done;O++,z=m.next())z=g(R,p,O,z.value,b),z!==null&&(t&&z.alternate!==null&&R.delete(z.key===null?O:z.key),d=o(z,d,O),T===null?C=z:T.sibling=z,T=z);return t&&R.forEach(function(Ti){return e(p,Ti)}),Q&&pn(p,O),C}function A(p,d,m,b){if(typeof m=="object"&&m!==null&&m.type===zn&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case Vr:e:{for(var C=m.key,T=d;T!==null;){if(T.key===C){if(C=m.type,C===zn){if(T.tag===7){n(p,T.sibling),d=r(T,m.props.children),d.return=p,p=d;break e}}else if(T.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Bt&&yc(C)===T.type){n(p,T.sibling),d=r(T,m.props),d.ref=_i(p,T,m),d.return=p,p=d;break e}n(p,T);break}else e(p,T);T=T.sibling}m.type===zn?(d=kn(m.props.children,p.mode,b,m.key),d.return=p,p=d):(b=Co(m.type,m.key,m.props,null,p.mode,b),b.ref=_i(p,d,m),b.return=p,p=b)}return s(p);case Fn:e:{for(T=m.key;d!==null;){if(d.key===T)if(d.tag===4&&d.stateNode.containerInfo===m.containerInfo&&d.stateNode.implementation===m.implementation){n(p,d.sibling),d=r(d,m.children||[]),d.return=p,p=d;break e}else{n(p,d);break}else e(p,d);d=d.sibling}d=Js(m,p.mode,b),d.return=p,p=d}return s(p);case Bt:return T=m._init,A(p,d,T(m._payload),b)}if(ji(m))return y(p,d,m,b);if(Ri(m))return k(p,d,m,b);Jr(p,m)}return typeof m=="string"&&m!==""||typeof m=="number"?(m=""+m,d!==null&&d.tag===6?(n(p,d.sibling),d=r(d,m),d.return=p,p=d):(n(p,d),d=Zs(m,p.mode,b),d.return=p,p=d),s(p)):n(p,d)}return A}var ci=zh(!0),Bh=zh(!1),Pr={},kt=sn(Pr),vr=sn(Pr),gr=sn(Pr);function wn(t){if(t===Pr)throw Error(x(174));return t}function Wa(t,e){switch(j(gr,e),j(vr,t),j(kt,Pr),t=e.nodeType,t){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:El(null,"");break;default:t=t===8?e.parentNode:e,e=t.namespaceURI||null,t=t.tagName,e=El(e,t)}W(kt),j(kt,e)}function di(){W(kt),W(vr),W(gr)}function Mh(t){wn(gr.current);var e=wn(kt.current),n=El(e,t.type);e!==n&&(j(vr,t),j(kt,n))}function Qa(t){vr.current===t&&(W(kt),W(vr))}var X=sn(0);function jo(t){for(var e=t;e!==null;){if(e.tag===13){var n=e.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Ws=[];function Ga(){for(var t=0;tn?n:4,t(!0);var i=Qs.transition;Qs.transition={};try{t(!1),e()}finally{H=n,Qs.transition=i}}function nf(){return it().memoizedState}function Qv(t,e,n){var i=Zt(t);if(n={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null},rf(t))of(e,n);else if(n=_h(t,e,n,i),n!==null){var r=Re();ft(n,t,i,r),sf(n,e,i)}}function Gv(t,e,n){var i=Zt(t),r={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null};if(rf(t))of(e,r);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=e.lastRenderedReducer,o!==null))try{var s=e.lastRenderedState,l=o(s,n);if(r.hasEagerState=!0,r.eagerState=l,pt(l,s)){var a=e.interleaved;a===null?(r.next=r,ja(e)):(r.next=a.next,a.next=r),e.interleaved=r;return}}catch{}finally{}n=_h(t,e,r,i),n!==null&&(r=Re(),ft(n,t,i,r),sf(n,e,i))}}function rf(t){var e=t.alternate;return t===Z||e!==null&&e===Z}function of(t,e){Zi=Uo=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function sf(t,e,n){if(n&4194240){var i=e.lanes;i&=t.pendingLanes,n|=i,e.lanes=n,Ra(t,n)}}var Wo={readContext:nt,useCallback:ye,useContext:ye,useEffect:ye,useImperativeHandle:ye,useInsertionEffect:ye,useLayoutEffect:ye,useMemo:ye,useReducer:ye,useRef:ye,useState:ye,useDebugValue:ye,useDeferredValue:ye,useTransition:ye,useMutableSource:ye,useSyncExternalStore:ye,useId:ye,unstable_isNewReconciler:!1},qv={readContext:nt,useCallback:function(t,e){return wt().memoizedState=[t,e===void 0?null:e],t},useContext:nt,useEffect:bc,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,wo(4194308,4,Zh.bind(null,e,t),n)},useLayoutEffect:function(t,e){return wo(4194308,4,t,e)},useInsertionEffect:function(t,e){return wo(4,2,t,e)},useMemo:function(t,e){var n=wt();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var i=wt();return e=n!==void 0?n(e):e,i.memoizedState=i.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},i.queue=t,t=t.dispatch=Qv.bind(null,Z,t),[i.memoizedState,t]},useRef:function(t){var e=wt();return t={current:t},e.memoizedState=t},useState:wc,useDebugValue:Ja,useDeferredValue:function(t){return wt().memoizedState=t},useTransition:function(){var t=wc(!1),e=t[0];return t=Wv.bind(null,t[1]),wt().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var i=Z,r=wt();if(Q){if(n===void 0)throw Error(x(407));n=n()}else{if(n=e(),pe===null)throw Error(x(349));En&30||jh(i,e,n)}r.memoizedState=n;var o={value:n,getSnapshot:e};return r.queue=o,bc(Wh.bind(null,i,o,t),[t]),i.flags|=2048,br(9,Uh.bind(null,i,o,n,e),void 0,null),n},useId:function(){var t=wt(),e=pe.identifierPrefix;if(Q){var n=Tt,i=Et;n=(i&~(1<<32-ht(i)-1)).toString(32)+n,e=":"+e+"R"+n,n=yr++,0<\/script>",t=t.removeChild(t.firstChild)):typeof i.is=="string"?t=s.createElement(n,{is:i.is}):(t=s.createElement(n),n==="select"&&(s=t,i.multiple?s.multiple=!0:i.size&&(s.size=i.size))):t=s.createElementNS(t,n),t[bt]=e,t[mr]=i,mf(t,e,!1,!1),e.stateNode=t;e:{switch(s=Il(n,i),n){case"dialog":U("cancel",t),U("close",t),r=i;break;case"iframe":case"object":case"embed":U("load",t),r=i;break;case"video":case"audio":for(r=0;rfi&&(e.flags|=128,i=!0,Li(o,!1),e.lanes=4194304)}else{if(!i)if(t=jo(s),t!==null){if(e.flags|=128,i=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),Li(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Q)return we(e),null}else 2*oe()-o.renderingStartTime>fi&&n!==1073741824&&(e.flags|=128,i=!0,Li(o,!1),e.lanes=4194304);o.isBackwards?(s.sibling=e.child,e.child=s):(n=o.last,n!==null?n.sibling=s:e.child=s,o.last=s)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=oe(),e.sibling=null,n=X.current,j(X,i?n&1|2:n&1),e):(we(e),null);case 22:case 23:return ru(),i=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?Ue&1073741824&&(we(e),e.subtreeFlags&6&&(e.flags|=8192)):we(e),null;case 24:return null;case 25:return null}throw Error(x(156,e.tag))}function ng(t,e){switch(za(e),e.tag){case 1:return Be(e.type)&&No(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return di(),W(ze),W(ke),Ga(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Qa(e),null;case 13:if(W(X),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(x(340));ui()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return W(X),null;case 4:return di(),null;case 10:return Ha(e.type._context),null;case 22:case 23:return ru(),null;case 24:return null;default:return null}}var eo=!1,be=!1,ig=typeof WeakSet=="function"?WeakSet:Set,$=null;function Gn(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(i){ee(t,e,i)}else n.current=null}function ta(t,e,n){try{n()}catch(i){ee(t,e,i)}}var Rc=!1;function rg(t,e){if(zl=Do,t=bh(),Na(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var r=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var s=0,l=-1,a=-1,u=0,c=0,h=t,f=null;t:for(;;){for(var g;h!==n||r!==0&&h.nodeType!==3||(l=s+r),h!==o||i!==0&&h.nodeType!==3||(a=s+i),h.nodeType===3&&(s+=h.nodeValue.length),(g=h.firstChild)!==null;)f=h,h=g;for(;;){if(h===t)break t;if(f===n&&++u===r&&(l=s),f===o&&++c===i&&(a=s),(g=h.nextSibling)!==null)break;h=f,f=h.parentNode}h=g}n=l===-1||a===-1?null:{start:l,end:a}}else n=null}n=n||{start:0,end:0}}else n=null;for(Bl={focusedElem:t,selectionRange:n},Do=!1,$=e;$!==null;)if(e=$,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,$=t;else for(;$!==null;){e=$;try{var y=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var k=y.memoizedProps,A=y.memoizedState,p=e.stateNode,d=p.getSnapshotBeforeUpdate(e.elementType===e.type?k:at(e.type,k),A);p.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var m=e.stateNode.containerInfo;m.nodeType===1?m.textContent="":m.nodeType===9&&m.documentElement&&m.removeChild(m.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(x(163))}}catch(b){ee(e,e.return,b)}if(t=e.sibling,t!==null){t.return=e.return,$=t;break}$=e.return}return y=Rc,Rc=!1,y}function Ji(t,e,n){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&t)===t){var o=r.destroy;r.destroy=void 0,o!==void 0&&ta(e,n,o)}r=r.next}while(r!==i)}}function cs(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var i=n.create;n.destroy=i()}n=n.next}while(n!==e)}}function na(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function yf(t){var e=t.alternate;e!==null&&(t.alternate=null,yf(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[bt],delete e[mr],delete e[Hl],delete e[Mv],delete e[Vv])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function wf(t){return t.tag===5||t.tag===3||t.tag===4}function Oc(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||wf(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function ia(t,e,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=Lo));else if(i!==4&&(t=t.child,t!==null))for(ia(t,e,n),t=t.sibling;t!==null;)ia(t,e,n),t=t.sibling}function ra(t,e,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(i!==4&&(t=t.child,t!==null))for(ra(t,e,n),t=t.sibling;t!==null;)ra(t,e,n),t=t.sibling}var me=null,ut=!1;function Ft(t,e,n){for(n=n.child;n!==null;)bf(t,e,n),n=n.sibling}function bf(t,e,n){if(xt&&typeof xt.onCommitFiberUnmount=="function")try{xt.onCommitFiberUnmount(ns,n)}catch{}switch(n.tag){case 5:be||Gn(n,e);case 6:var i=me,r=ut;me=null,Ft(t,e,n),me=i,ut=r,me!==null&&(ut?(t=me,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):me.removeChild(n.stateNode));break;case 18:me!==null&&(ut?(t=me,n=n.stateNode,t.nodeType===8?js(t.parentNode,n):t.nodeType===1&&js(t,n),cr(t)):js(me,n.stateNode));break;case 4:i=me,r=ut,me=n.stateNode.containerInfo,ut=!0,Ft(t,e,n),me=i,ut=r;break;case 0:case 11:case 14:case 15:if(!be&&(i=n.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var o=r,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&ta(n,e,s),r=r.next}while(r!==i)}Ft(t,e,n);break;case 1:if(!be&&(Gn(n,e),i=n.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=n.memoizedProps,i.state=n.memoizedState,i.componentWillUnmount()}catch(l){ee(n,e,l)}Ft(t,e,n);break;case 21:Ft(t,e,n);break;case 22:n.mode&1?(be=(i=be)||n.memoizedState!==null,Ft(t,e,n),be=i):Ft(t,e,n);break;default:Ft(t,e,n)}}function Pc(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new ig),e.forEach(function(i){var r=fg.bind(null,t,i);n.has(i)||(n.add(i),i.then(r,r))})}}function lt(t,e){var n=e.deletions;if(n!==null)for(var i=0;ir&&(r=s),i&=~o}if(i=r,i=oe()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*sg(i/1960))-i,10t?16:t,Ut===null)var i=!1;else{if(t=Ut,Ut=null,qo=0,M&6)throw Error(x(331));var r=M;for(M|=4,$=t.current;$!==null;){var o=$,s=o.child;if($.flags&16){var l=o.deletions;if(l!==null){for(var a=0;aoe()-nu?xn(t,0):tu|=n),Me(t,e)}function If(t,e){e===0&&(t.mode&1?(e=Wr,Wr<<=1,!(Wr&130023424)&&(Wr=4194304)):e=1);var n=Re();t=Dt(t,e),t!==null&&(Ir(t,e,n),Me(t,n))}function hg(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),If(t,n)}function fg(t,e){var n=0;switch(t.tag){case 13:var i=t.stateNode,r=t.memoizedState;r!==null&&(n=r.retryLane);break;case 19:i=t.stateNode;break;default:throw Error(x(314))}i!==null&&i.delete(e),If(t,n)}var Rf;Rf=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||ze.current)Fe=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return Fe=!1,eg(t,e,n);Fe=!!(t.flags&131072)}else Fe=!1,Q&&e.flags&1048576&&Ph(e,Bo,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;bo(t,e),t=e.pendingProps;var r=ai(e,ke.current);ti(e,n),r=Ya(null,e,i,t,r,n);var o=Xa();return e.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Be(i)?(o=!0,Fo(e)):o=!1,e.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,Ua(e),r.updater=as,e.stateNode=r,r._reactInternals=e,ql(e,i,t,n),e=Zl(null,e,i,!0,o,n)):(e.tag=0,Q&&o&&Fa(e),Te(null,e,r,n),e=e.child),e;case 16:i=e.elementType;e:{switch(bo(t,e),t=e.pendingProps,r=i._init,i=r(i._payload),e.type=i,r=e.tag=mg(i),t=at(i,t),r){case 0:e=Xl(null,e,i,t,n);break e;case 1:e=Ec(null,e,i,t,n);break e;case 11:e=Sc(null,e,i,t,n);break e;case 14:e=$c(null,e,i,at(i.type,t),n);break e}throw Error(x(306,i,""))}return e;case 0:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:at(i,r),Xl(t,e,i,r,n);case 1:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:at(i,r),Ec(t,e,i,r,n);case 3:e:{if(hf(e),t===null)throw Error(x(387));i=e.pendingProps,o=e.memoizedState,r=o.element,Lh(t,e),Ho(e,i,null,n);var s=e.memoizedState;if(i=s.element,o.isDehydrated)if(o={element:i,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},e.updateQueue.baseState=o,e.memoizedState=o,e.flags&256){r=hi(Error(x(423)),e),e=Tc(t,e,i,n,r);break e}else if(i!==r){r=hi(Error(x(424)),e),e=Tc(t,e,i,n,r);break e}else for(We=qt(e.stateNode.containerInfo.firstChild),Qe=e,Q=!0,ct=null,n=Bh(e,null,i,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ui(),i===r){e=At(t,e,n);break e}Te(t,e,i,n)}e=e.child}return e;case 5:return Mh(e),t===null&&Wl(e),i=e.type,r=e.pendingProps,o=t!==null?t.memoizedProps:null,s=r.children,Ml(i,r)?s=null:o!==null&&Ml(i,o)&&(e.flags|=32),df(t,e),Te(t,e,s,n),e.child;case 6:return t===null&&Wl(e),null;case 13:return ff(t,e,n);case 4:return Wa(e,e.stateNode.containerInfo),i=e.pendingProps,t===null?e.child=ci(e,null,i,n):Te(t,e,i,n),e.child;case 11:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:at(i,r),Sc(t,e,i,r,n);case 7:return Te(t,e,e.pendingProps,n),e.child;case 8:return Te(t,e,e.pendingProps.children,n),e.child;case 12:return Te(t,e,e.pendingProps.children,n),e.child;case 10:e:{if(i=e.type._context,r=e.pendingProps,o=e.memoizedProps,s=r.value,j(Mo,i._currentValue),i._currentValue=s,o!==null)if(pt(o.value,s)){if(o.children===r.children&&!ze.current){e=At(t,e,n);break e}}else for(o=e.child,o!==null&&(o.return=e);o!==null;){var l=o.dependencies;if(l!==null){s=o.child;for(var a=l.firstContext;a!==null;){if(a.context===i){if(o.tag===1){a=Rt(-1,n&-n),a.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?a.next=a:(a.next=c.next,c.next=a),u.pending=a}}o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),Ql(o.return,n,e),l.lanes|=n;break}a=a.next}}else if(o.tag===10)s=o.type===e.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(x(341));s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),Ql(s,n,e),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===e){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}Te(t,e,r.children,n),e=e.child}return e;case 9:return r=e.type,i=e.pendingProps.children,ti(e,n),r=nt(r),i=i(r),e.flags|=1,Te(t,e,i,n),e.child;case 14:return i=e.type,r=at(i,e.pendingProps),r=at(i.type,r),$c(t,e,i,r,n);case 15:return uf(t,e,e.type,e.pendingProps,n);case 17:return i=e.type,r=e.pendingProps,r=e.elementType===i?r:at(i,r),bo(t,e),e.tag=1,Be(i)?(t=!0,Fo(e)):t=!1,ti(e,n),Fh(e,i,r),ql(e,i,r,n),Zl(null,e,i,!0,t,n);case 19:return pf(t,e,n);case 22:return cf(t,e,n)}throw Error(x(156,e.tag))};function Of(t,e){return th(t,e)}function pg(t,e,n,i){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function et(t,e,n,i){return new pg(t,e,n,i)}function su(t){return t=t.prototype,!(!t||!t.isReactComponent)}function mg(t){if(typeof t=="function")return su(t)?1:0;if(t!=null){if(t=t.$$typeof,t===$a)return 11;if(t===Ea)return 14}return 2}function Jt(t,e){var n=t.alternate;return n===null?(n=et(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function Co(t,e,n,i,r,o){var s=2;if(i=t,typeof t=="function")su(t)&&(s=1);else if(typeof t=="string")s=5;else e:switch(t){case zn:return kn(n.children,r,o,e);case Sa:s=8,r|=8;break;case yl:return t=et(12,n,e,r|2),t.elementType=yl,t.lanes=o,t;case wl:return t=et(13,n,e,r),t.elementType=wl,t.lanes=o,t;case bl:return t=et(19,n,e,r),t.elementType=bl,t.lanes=o,t;case zd:return hs(n,r,o,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case Nd:s=10;break e;case Fd:s=9;break e;case $a:s=11;break e;case Ea:s=14;break e;case Bt:s=16,i=null;break e}throw Error(x(130,t==null?t:typeof t,""))}return e=et(s,n,e,r),e.elementType=t,e.type=i,e.lanes=o,e}function kn(t,e,n,i){return t=et(7,t,i,e),t.lanes=n,t}function hs(t,e,n,i){return t=et(22,t,i,e),t.elementType=zd,t.lanes=n,t.stateNode={isHidden:!1},t}function Zs(t,e,n){return t=et(6,t,null,e),t.lanes=n,t}function Js(t,e,n){return e=et(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function vg(t,e,n,i,r){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ds(0),this.expirationTimes=Ds(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ds(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function lu(t,e,n,i,r,o,s,l,a){return t=new vg(t,e,n,l,a),e===1?(e=1,o===!0&&(e|=8)):e=0,o=et(3,null,null,e),t.current=o,o.stateNode=t,o.memoizedState={element:i,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ua(o),t}function gg(t,e,n){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_f)}catch(t){console.error(t)}}_f(),Pd.exports=qe;var kg=Pd.exports,Bc=kg;vl.createRoot=Bc.createRoot,vl.hydrateRoot=Bc.hydrateRoot;const Cg=()=>ie.jsx(ie.Fragment,{children:"Console Controller"}),Sg=()=>ie.jsx(ie.Fragment,{children:"Explorer Controller"});class du{constructor(e,n,i){this.type=e,this.version=n,this.data=i}static fromString(e){try{let n=JSON.parse(e);return new du(n.type,n.version,n.data)}catch(n){return`Error parsing JSON string: ${n} string: ${e}`}}update(e){this.version=e.version,this.data=e.data}}class $g{constructor(e){this.suibaseJson=e,this.onChangeCallbacks=[]}}class io{constructor(){this.map=new Map}get(e){let n=this.map.get(e);return n?n.suibaseJson:this.addDefaultElement(e).suibaseJson}set(e){let n=this.map.get(e.type);if(n){let i=n.suibaseJson;i.versionr(i)))}else this.addDefaultElement(e.type).suibaseJson.update(e)}addCallback(e,n){let i=this.map.get(e);i||(i=this.addDefaultElement(e)),i.onChangeCallbacks.push(n),n(i.suibaseJson)}addDefaultElement(e){let n=new du(e,0,""),i=new $g(n);return this.map.set(e,i),i}}class Eg{constructor(){Ou(this,"vsCodeApi");typeof acquireVsCodeApi=="function"&&(this.vsCodeApi=acquireVsCodeApi())}postMessage(e){this.vsCodeApi?this.vsCodeApi.postMessage(e):console.log(e)}getState(){if(this.vsCodeApi)return this.vsCodeApi.getState();{const e=localStorage.getItem("vscodeState");return e?JSON.parse(e):void 0}}setState(e){return this.vsCodeApi?this.vsCodeApi.setState(e):(localStorage.setItem("vscodeState",JSON.stringify(e)),e)}}const Ks=new Eg,nn=function(){if(typeof globalThis<"u")return globalThis;if(typeof global<"u")return global;if(typeof self<"u")return self;if(typeof window<"u")return window;try{return new Function("return this")()}catch{return{}}}();nn.trustedTypes===void 0&&(nn.trustedTypes={createPolicy:(t,e)=>e});const Lf={configurable:!1,enumerable:!1,writable:!1};nn.FAST===void 0&&Reflect.defineProperty(nn,"FAST",Object.assign({value:Object.create(null)},Lf));const kr=nn.FAST;if(kr.getById===void 0){const t=Object.create(null);Reflect.defineProperty(kr,"getById",Object.assign({value(e,n){let i=t[e];return i===void 0&&(i=n?t[e]=n():null),i}},Lf))}const Cn=Object.freeze([]);function Nf(){const t=new WeakMap;return function(e){let n=t.get(e);if(n===void 0){let i=Reflect.getPrototypeOf(e);for(;n===void 0&&i!==null;)n=t.get(i),i=Reflect.getPrototypeOf(i);n=n===void 0?[]:n.slice(0),t.set(e,n)}return n}}const el=nn.FAST.getById(1,()=>{const t=[],e=[];function n(){if(e.length)throw e.shift()}function i(s){try{s.call()}catch(l){e.push(l),setTimeout(n,0)}}function r(){let l=0;for(;l1024){for(let a=0,u=t.length-l;at});let tl=Ff;const tr=`fast-${Math.random().toString(36).substring(2,8)}`,zf=`${tr}{`,hu=`}${tr}`,N=Object.freeze({supportsAdoptedStyleSheets:Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype,setHTMLPolicy(t){if(tl!==Ff)throw new Error("The HTML policy can only be set once.");tl=t},createHTML(t){return tl.createHTML(t)},isMarker(t){return t&&t.nodeType===8&&t.data.startsWith(tr)},extractDirectiveIndexFromMarker(t){return parseInt(t.data.replace(`${tr}:`,""))},createInterpolationPlaceholder(t){return`${zf}${t}${hu}`},createCustomAttributePlaceholder(t,e){return`${t}="${this.createInterpolationPlaceholder(e)}"`},createBlockPlaceholder(t){return``},queueUpdate:el.enqueue,processUpdates:el.process,nextUpdate(){return new Promise(el.enqueue)},setAttribute(t,e,n){n==null?t.removeAttribute(e):t.setAttribute(e,n)},setBooleanAttribute(t,e,n){n?t.setAttribute(e,""):t.removeAttribute(e)},removeChildNodes(t){for(let e=t.firstChild;e!==null;e=t.firstChild)t.removeChild(e)},createTemplateWalker(t){return document.createTreeWalker(t,133,null,!1)}});class Zo{constructor(e,n){this.sub1=void 0,this.sub2=void 0,this.spillover=void 0,this.source=e,this.sub1=n}has(e){return this.spillover===void 0?this.sub1===e||this.sub2===e:this.spillover.indexOf(e)!==-1}subscribe(e){const n=this.spillover;if(n===void 0){if(this.has(e))return;if(this.sub1===void 0){this.sub1=e;return}if(this.sub2===void 0){this.sub2=e;return}this.spillover=[this.sub1,this.sub2,e],this.sub1=void 0,this.sub2=void 0}else n.indexOf(e)===-1&&n.push(e)}unsubscribe(e){const n=this.spillover;if(n===void 0)this.sub1===e?this.sub1=void 0:this.sub2===e&&(this.sub2=void 0);else{const i=n.indexOf(e);i!==-1&&n.splice(i,1)}}notify(e){const n=this.spillover,i=this.source;if(n===void 0){const r=this.sub1,o=this.sub2;r!==void 0&&r.handleChange(i,e),o!==void 0&&o.handleChange(i,e)}else for(let r=0,o=n.length;r{const t=/(:|&&|\|\||if)/,e=new WeakMap,n=N.queueUpdate;let i,r=u=>{throw new Error("Must call enableArrayObservation before observing arrays.")};function o(u){let c=u.$fastController||e.get(u);return c===void 0&&(Array.isArray(u)?c=r(u):e.set(u,c=new Bf(u))),c}const s=Nf();class l{constructor(c){this.name=c,this.field=`_${c}`,this.callback=`${c}Changed`}getValue(c){return i!==void 0&&i.watch(c,this.name),c[this.field]}setValue(c,h){const f=this.field,g=c[f];if(g!==h){c[f]=h;const y=c[this.callback];typeof y=="function"&&y.call(c,g,h),o(c).notify(this.name)}}}class a extends Zo{constructor(c,h,f=!1){super(c,h),this.binding=c,this.isVolatileBinding=f,this.needsRefresh=!0,this.needsQueue=!0,this.first=this,this.last=null,this.propertySource=void 0,this.propertyName=void 0,this.notifier=void 0,this.next=void 0}observe(c,h){this.needsRefresh&&this.last!==null&&this.disconnect();const f=i;i=this.needsRefresh?this:void 0,this.needsRefresh=this.isVolatileBinding;const g=this.binding(c,h);return i=f,g}disconnect(){if(this.last!==null){let c=this.first;for(;c!==void 0;)c.notifier.unsubscribe(this,c.propertyName),c=c.next;this.last=null,this.needsRefresh=this.needsQueue=!0}}watch(c,h){const f=this.last,g=o(c),y=f===null?this.first:{};if(y.propertySource=c,y.propertyName=h,y.notifier=g,g.subscribe(this,h),f!==null){if(!this.needsRefresh){let k;i=void 0,k=f.propertySource[f.propertyName],i=this,c===k&&(this.needsRefresh=!0)}f.next=y}this.last=y}handleChange(){this.needsQueue&&(this.needsQueue=!1,n(this))}call(){this.last!==null&&(this.needsQueue=!0,this.notify(this))}records(){let c=this.first;return{next:()=>{const h=c;return h===void 0?{value:void 0,done:!0}:(c=c.next,{value:h,done:!1})},[Symbol.iterator]:function(){return this}}}}return Object.freeze({setArrayObserverFactory(u){r=u},getNotifier:o,track(u,c){i!==void 0&&i.watch(u,c)},trackVolatile(){i!==void 0&&(i.needsRefresh=!0)},notify(u,c){o(u).notify(c)},defineProperty(u,c){typeof c=="string"&&(c=new l(c)),s(u).push(c),Reflect.defineProperty(u,c.name,{enumerable:!0,get:function(){return c.getValue(this)},set:function(h){c.setValue(this,h)}})},getAccessors:s,binding(u,c,h=this.isVolatileBinding(u)){return new a(u,c,h)},isVolatileBinding(u){return t.test(u.toString())}})});function E(t,e){L.defineProperty(t,e)}function Tg(t,e,n){return Object.assign({},n,{get:function(){return L.trackVolatile(),n.get.apply(this)}})}const Mc=kr.getById(3,()=>{let t=null;return{get(){return t},set(e){t=e}}});class Cr{constructor(){this.index=0,this.length=0,this.parent=null,this.parentContext=null}get event(){return Mc.get()}get isEven(){return this.index%2===0}get isOdd(){return this.index%2!==0}get isFirst(){return this.index===0}get isInMiddle(){return!this.isFirst&&!this.isLast}get isLast(){return this.index===this.length-1}static setEvent(e){Mc.set(e)}}L.defineProperty(Cr.prototype,"index");L.defineProperty(Cr.prototype,"length");const nr=Object.seal(new Cr);class gs{constructor(){this.targetIndex=0}}class Mf extends gs{constructor(){super(...arguments),this.createPlaceholder=N.createInterpolationPlaceholder}}class fu extends gs{constructor(e,n,i){super(),this.name=e,this.behavior=n,this.options=i}createPlaceholder(e){return N.createCustomAttributePlaceholder(this.name,e)}createBehavior(e){return new this.behavior(e,this.options)}}function Ig(t,e){this.source=t,this.context=e,this.bindingObserver===null&&(this.bindingObserver=L.binding(this.binding,this,this.isBindingVolatile)),this.updateTarget(this.bindingObserver.observe(t,e))}function Rg(t,e){this.source=t,this.context=e,this.target.addEventListener(this.targetName,this)}function Og(){this.bindingObserver.disconnect(),this.source=null,this.context=null}function Pg(){this.bindingObserver.disconnect(),this.source=null,this.context=null;const t=this.target.$fastView;t!==void 0&&t.isComposed&&(t.unbind(),t.needsBindOnly=!0)}function Dg(){this.target.removeEventListener(this.targetName,this),this.source=null,this.context=null}function Ag(t){N.setAttribute(this.target,this.targetName,t)}function _g(t){N.setBooleanAttribute(this.target,this.targetName,t)}function Lg(t){if(t==null&&(t=""),t.create){this.target.textContent="";let e=this.target.$fastView;e===void 0?e=t.create():this.target.$fastTemplate!==t&&(e.isComposed&&(e.remove(),e.unbind()),e=t.create()),e.isComposed?e.needsBindOnly&&(e.needsBindOnly=!1,e.bind(this.source,this.context)):(e.isComposed=!0,e.bind(this.source,this.context),e.insertBefore(this.target),this.target.$fastView=e,this.target.$fastTemplate=t)}else{const e=this.target.$fastView;e!==void 0&&e.isComposed&&(e.isComposed=!1,e.remove(),e.needsBindOnly?e.needsBindOnly=!1:e.unbind()),this.target.textContent=t}}function Ng(t){this.target[this.targetName]=t}function Fg(t){const e=this.classVersions||Object.create(null),n=this.target;let i=this.version||0;if(t!=null&&t.length){const r=t.split(/\s+/);for(let o=0,s=r.length;oN.createHTML(n(i,r))}break;case"?":this.cleanedTargetName=e.substr(1),this.updateTarget=_g;break;case"@":this.cleanedTargetName=e.substr(1),this.bind=Rg,this.unbind=Dg;break;default:this.cleanedTargetName=e,e==="class"&&(this.updateTarget=Fg);break}}targetAtContent(){this.updateTarget=Lg,this.unbind=Pg}createBehavior(e){return new zg(e,this.binding,this.isBindingVolatile,this.bind,this.unbind,this.updateTarget,this.cleanedTargetName)}}class zg{constructor(e,n,i,r,o,s,l){this.source=null,this.context=null,this.bindingObserver=null,this.target=e,this.binding=n,this.isBindingVolatile=i,this.bind=r,this.unbind=o,this.updateTarget=s,this.targetName=l}handleChange(){this.updateTarget(this.bindingObserver.observe(this.source,this.context))}handleEvent(e){Cr.setEvent(e);const n=this.binding(this.source,this.context);Cr.setEvent(null),n!==!0&&e.preventDefault()}}let nl=null;class mu{addFactory(e){e.targetIndex=this.targetIndex,this.behaviorFactories.push(e)}captureContentBinding(e){e.targetAtContent(),this.addFactory(e)}reset(){this.behaviorFactories=[],this.targetIndex=-1}release(){nl=this}static borrow(e){const n=nl||new mu;return n.directives=e,n.reset(),nl=null,n}}function Bg(t){if(t.length===1)return t[0];let e;const n=t.length,i=t.map(s=>typeof s=="string"?()=>s:(e=s.targetName||e,s.binding)),r=(s,l)=>{let a="";for(let u=0;ul),u.targetName=s.name):u=Bg(a),u!==null&&(e.removeAttributeNode(s),r--,o--,t.addFactory(u))}}function Vg(t,e,n){const i=Vf(t,e.textContent);if(i!==null){let r=e;for(let o=0,s=i.length;o0}const n=this.fragment.cloneNode(!0),i=this.viewBehaviorFactories,r=new Array(this.behaviorCount),o=N.createTemplateWalker(n);let s=0,l=this.targetOffset,a=o.nextNode();for(let u=i.length;s=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function V(t,...e){const n=[];let i="";for(let r=0,o=t.length-1;ra}if(typeof l=="function"&&(l=new pu(l)),l instanceof Mf){const a=jg.exec(s);a!==null&&(l.targetName=a[2])}l instanceof gs?(i+=l.createPlaceholder(n.length),n.push(l)):i+=l}return i+=t[t.length-1],new Hc(i,n)}class Ve{constructor(){this.targets=new WeakSet}addStylesTo(e){this.targets.add(e)}removeStylesFrom(e){this.targets.delete(e)}isAttachedTo(e){return this.targets.has(e)}withBehaviors(...e){return this.behaviors=this.behaviors===null?e:this.behaviors.concat(e),this}}Ve.create=(()=>{if(N.supportsAdoptedStyleSheets){const t=new Map;return e=>new Ug(e,t)}return t=>new Gg(t)})();function vu(t){return t.map(e=>e instanceof Ve?vu(e.styles):[e]).reduce((e,n)=>e.concat(n),[])}function jf(t){return t.map(e=>e instanceof Ve?e.behaviors:null).reduce((e,n)=>n===null?e:(e===null&&(e=[]),e.concat(n)),null)}const Uf=Symbol("prependToAdoptedStyleSheets");function Wf(t){const e=[],n=[];return t.forEach(i=>(i[Uf]?e:n).push(i)),{prepend:e,append:n}}let Qf=(t,e)=>{const{prepend:n,append:i}=Wf(e);t.adoptedStyleSheets=[...n,...t.adoptedStyleSheets,...i]},Gf=(t,e)=>{t.adoptedStyleSheets=t.adoptedStyleSheets.filter(n=>e.indexOf(n)===-1)};if(N.supportsAdoptedStyleSheets)try{document.adoptedStyleSheets.push(),document.adoptedStyleSheets.splice(),Qf=(t,e)=>{const{prepend:n,append:i}=Wf(e);t.adoptedStyleSheets.splice(0,0,...n),t.adoptedStyleSheets.push(...i)},Gf=(t,e)=>{for(const n of e){const i=t.adoptedStyleSheets.indexOf(n);i!==-1&&t.adoptedStyleSheets.splice(i,1)}}}catch{}class Ug extends Ve{constructor(e,n){super(),this.styles=e,this.styleSheetCache=n,this._styleSheets=void 0,this.behaviors=jf(e)}get styleSheets(){if(this._styleSheets===void 0){const e=this.styles,n=this.styleSheetCache;this._styleSheets=vu(e).map(i=>{if(i instanceof CSSStyleSheet)return i;let r=n.get(i);return r===void 0&&(r=new CSSStyleSheet,r.replaceSync(i),n.set(i,r)),r})}return this._styleSheets}addStylesTo(e){Qf(e,this.styleSheets),super.addStylesTo(e)}removeStylesFrom(e){Gf(e,this.styleSheets),super.removeStylesFrom(e)}}let Wg=0;function Qg(){return`fast-style-class-${++Wg}`}class Gg extends Ve{constructor(e){super(),this.styles=e,this.behaviors=null,this.behaviors=jf(e),this.styleSheets=vu(e),this.styleClass=Qg()}addStylesTo(e){const n=this.styleSheets,i=this.styleClass;e=this.normalizeTarget(e);for(let r=0;r{i.add(e);const r=e[this.fieldName];switch(n){case"reflect":const o=this.converter;N.setAttribute(e,this.attribute,o!==void 0?o.toView(r):r);break;case"boolean":N.setBooleanAttribute(e,this.attribute,r);break}i.delete(e)})}static collect(e,...n){const i=[];n.push(Jo.locate(e));for(let r=0,o=n.length;r1&&(n.property=o),Jo.locate(r.constructor).push(n)}if(arguments.length>1){n={},i(t,e);return}return n=t===void 0?{}:t,i}const jc={mode:"open"},Uc={},ua=kr.getById(4,()=>{const t=new Map;return Object.freeze({register(e){return t.has(e.type)?!1:(t.set(e.type,e),!0)},getByType(e){return t.get(e)}})});class Dr{constructor(e,n=e.definition){typeof n=="string"&&(n={name:n}),this.type=e,this.name=n.name,this.template=n.template;const i=Ko.collect(e,n.attributes),r=new Array(i.length),o={},s={};for(let l=0,a=i.length;l0){const o=this.boundObservables=Object.create(null);for(let s=0,l=r.length;s0||n>0;){if(e===0){r.push(ca),n--;continue}if(n===0){r.push(da),e--;continue}const o=t[e-1][n-1],s=t[e-1][n],l=t[e][n-1];let a;s=0){t.splice(l,1),l--,s-=a.addedCount-a.removed.length,r.addedCount+=a.addedCount-u;const c=r.removed.length+a.removed.length-u;if(!r.addedCount&&!c)o=!0;else{let h=a.removed;if(r.indexa.index+a.addedCount){const f=r.removed.slice(a.index+a.addedCount-r.index);Qc.apply(h,f)}r.removed=h,a.indexi?n=i-t.addedCount:n<0&&(n=i+t.removed.length+n-t.addedCount),n<0&&(n=0),t.index=n,t}class ry extends Zo{constructor(e){super(e),this.oldCollection=void 0,this.splices=void 0,this.needsQueue=!0,this.call=this.flush,Reflect.defineProperty(e,"$fastController",{value:this,enumerable:!1})}subscribe(e){this.flush(),super.subscribe(e)}addSplice(e){this.splices===void 0?this.splices=[e]:this.splices.push(e),this.needsQueue&&(this.needsQueue=!1,N.queueUpdate(this))}reset(e){this.oldCollection=e,this.needsQueue&&(this.needsQueue=!1,N.queueUpdate(this))}flush(){const e=this.splices,n=this.oldCollection;if(e===void 0&&n===void 0)return;this.needsQueue=!0,this.splices=void 0,this.oldCollection=void 0;const i=n===void 0?iy(this.source,e):Kf(this.source,0,this.source.length,n,0,n.length);this.notify(i)}}function oy(){if(Gc)return;Gc=!0,L.setArrayObserverFactory(a=>new ry(a));const t=Array.prototype;if(t.$fastPatch)return;Reflect.defineProperty(t,"$fastPatch",{value:1,enumerable:!1});const e=t.pop,n=t.push,i=t.reverse,r=t.shift,o=t.sort,s=t.splice,l=t.unshift;t.pop=function(){const a=this.length>0,u=e.apply(this,arguments),c=this.$fastController;return c!==void 0&&a&&c.addSplice(dt(this.length,[u],0)),u},t.push=function(){const a=n.apply(this,arguments),u=this.$fastController;return u!==void 0&&u.addSplice(ol(dt(this.length-arguments.length,[],arguments.length),this)),a},t.reverse=function(){let a;const u=this.$fastController;u!==void 0&&(u.flush(),a=this.slice());const c=i.apply(this,arguments);return u!==void 0&&u.reset(a),c},t.shift=function(){const a=this.length>0,u=r.apply(this,arguments),c=this.$fastController;return c!==void 0&&a&&c.addSplice(dt(0,[u],0)),u},t.sort=function(){let a;const u=this.$fastController;u!==void 0&&(u.flush(),a=this.slice());const c=o.apply(this,arguments);return u!==void 0&&u.reset(a),c},t.splice=function(){const a=s.apply(this,arguments),u=this.$fastController;return u!==void 0&&u.addSplice(ol(dt(+arguments[0],a,arguments.length>2?arguments.length-2:0),this)),a},t.unshift=function(){const a=l.apply(this,arguments),u=this.$fastController;return u!==void 0&&u.addSplice(ol(dt(0,[],arguments.length),this)),a}}class sy{constructor(e,n){this.target=e,this.propertyName=n}bind(e){e[this.propertyName]=this.target}unbind(){}}function Pe(t){return new fu("fast-ref",sy,t)}const ep=t=>typeof t=="function",ly=()=>null;function qc(t){return t===void 0?ly:ep(t)?t:()=>t}function yu(t,e,n){const i=ep(t)?t:()=>t,r=qc(e),o=qc(n);return(s,l)=>i(s,l)?r(s,l):o(s,l)}function ay(t,e,n,i){t.bind(e[n],i)}function uy(t,e,n,i){const r=Object.create(i);r.index=n,r.length=e.length,t.bind(e[n],r)}class cy{constructor(e,n,i,r,o,s){this.location=e,this.itemsBinding=n,this.templateBinding=r,this.options=s,this.source=null,this.views=[],this.items=null,this.itemsObserver=null,this.originalContext=void 0,this.childContext=void 0,this.bindView=ay,this.itemsBindingObserver=L.binding(n,this,i),this.templateBindingObserver=L.binding(r,this,o),s.positioning&&(this.bindView=uy)}bind(e,n){this.source=e,this.originalContext=n,this.childContext=Object.create(n),this.childContext.parent=e,this.childContext.parentContext=this.originalContext,this.items=this.itemsBindingObserver.observe(e,this.originalContext),this.template=this.templateBindingObserver.observe(e,this.originalContext),this.observeItems(!0),this.refreshAllViews()}unbind(){this.source=null,this.items=null,this.itemsObserver!==null&&this.itemsObserver.unsubscribe(this),this.unbindAllViews(),this.itemsBindingObserver.disconnect(),this.templateBindingObserver.disconnect()}handleChange(e,n){e===this.itemsBinding?(this.items=this.itemsBindingObserver.observe(this.source,this.originalContext),this.observeItems(),this.refreshAllViews()):e===this.templateBinding?(this.template=this.templateBindingObserver.observe(this.source,this.originalContext),this.refreshAllViews(!0)):this.updateViews(n)}observeItems(e=!1){if(!this.items){this.items=Cn;return}const n=this.itemsObserver,i=this.itemsObserver=L.getNotifier(this.items),r=n!==i;r&&n!==null&&n.unsubscribe(this),(r||e)&&i.subscribe(this)}updateViews(e){const n=this.childContext,i=this.views,r=this.bindView,o=this.items,s=this.template,l=this.options.recycle,a=[];let u=0,c=0;for(let h=0,f=e.length;h0?(k<=m&&d.length>0?(T=d[k],k++):(T=a[u],u++),c--):T=s.create(),i.splice(A,0,T),r(T,o,A,n),T.insertBefore(C)}d[k]&&a.push(...d.slice(k))}for(let h=u,f=a.length;hi.name===n),this.source=e,this.updateTarget(this.computeNodes()),this.shouldUpdate&&this.observe()}unbind(){this.updateTarget(Cn),this.source=null,this.shouldUpdate&&this.disconnect()}handleEvent(){this.updateTarget(this.computeNodes())}computeNodes(){let e=this.getNodes();return this.options.filter!==void 0&&(e=e.filter(this.options.filter)),e}updateTarget(e){this.source[this.options.property]=e}}class dy extends np{constructor(e,n){super(e,n)}observe(){this.target.addEventListener("slotchange",this)}disconnect(){this.target.removeEventListener("slotchange",this)}getNodes(){return this.target.assignedNodes(this.options)}}function rt(t){return typeof t=="string"&&(t={property:t}),new fu("fast-slotted",dy,t)}class hy extends np{constructor(e,n){super(e,n),this.observer=null,n.childList=!0}observe(){this.observer===null&&(this.observer=new MutationObserver(this.handleEvent.bind(this))),this.observer.observe(this.target,this.options)}disconnect(){this.observer.disconnect()}getNodes(){return"subtree"in this.options?Array.from(this.target.querySelectorAll(this.options.selector)):Array.from(this.target.childNodes)}}function ip(t){return typeof t=="string"&&(t={property:t}),new fu("fast-children",hy,t)}class bi{handleStartContentChange(){this.startContainer.classList.toggle("start",this.start.assignedNodes().length>0)}handleEndContentChange(){this.endContainer.classList.toggle("end",this.end.assignedNodes().length>0)}}const xi=(t,e)=>V` + e.end?"end":void 0} + > + + ${e.end||""} + + +`,ki=(t,e)=>V` + + + ${e.start||""} + + +`;V` + + + +`;V` + + + +`;/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function v(t,e,n,i){var r=arguments.length,o=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,n,i);else for(var l=t.length-1;l>=0;l--)(s=t[l])&&(o=(r<3?s(o):r>3?s(e,n,o):s(e,n))||o);return r>3&&o&&Object.defineProperty(e,n,o),o}const sl=new Map;"metadata"in Reflect||(Reflect.metadata=function(t,e){return function(n){Reflect.defineMetadata(t,e,n)}},Reflect.defineMetadata=function(t,e,n){let i=sl.get(n);i===void 0&&sl.set(n,i=new Map),i.set(t,e)},Reflect.getOwnMetadata=function(t,e){const n=sl.get(e);if(n!==void 0)return n.get(t)});class fy{constructor(e,n){this.container=e,this.key=n}instance(e){return this.registerResolver(0,e)}singleton(e){return this.registerResolver(1,e)}transient(e){return this.registerResolver(2,e)}callback(e){return this.registerResolver(3,e)}cachedCallback(e){return this.registerResolver(3,op(e))}aliasTo(e){return this.registerResolver(5,e)}registerResolver(e,n){const{container:i,key:r}=this;return this.container=this.key=void 0,i.registerResolver(r,new Ke(r,e,n))}}function Fi(t){const e=t.slice(),n=Object.keys(t),i=n.length;let r;for(let o=0;onull,responsibleForOwnerRequests:!1,defaultResolver:py.singleton})}),Yc=new Map;function Xc(t){return e=>Reflect.getOwnMetadata(t,e)}let Zc=null;const Y=Object.freeze({createContainer(t){return new ir(null,Object.assign({},ll.default,t))},findResponsibleContainer(t){const e=t.$$container$$;return e&&e.responsibleForOwnerRequests?e:Y.findParentContainer(t)},findParentContainer(t){const e=new CustomEvent(rp,{bubbles:!0,composed:!0,cancelable:!0,detail:{container:void 0}});return t.dispatchEvent(e),e.detail.container||Y.getOrCreateDOMContainer()},getOrCreateDOMContainer(t,e){return t?t.$$container$$||new ir(t,Object.assign({},ll.default,e,{parentLocator:Y.findParentContainer})):Zc||(Zc=new ir(null,Object.assign({},ll.default,e,{parentLocator:()=>null})))},getDesignParamtypes:Xc("design:paramtypes"),getAnnotationParamtypes:Xc("di:paramtypes"),getOrCreateAnnotationParamTypes(t){let e=this.getAnnotationParamtypes(t);return e===void 0&&Reflect.defineMetadata("di:paramtypes",e=[],t),e},getDependencies(t){let e=Yc.get(t);if(e===void 0){const n=t.inject;if(n===void 0){const i=Y.getDesignParamtypes(t),r=Y.getAnnotationParamtypes(t);if(i===void 0)if(r===void 0){const o=Object.getPrototypeOf(t);typeof o=="function"&&o!==Function.prototype?e=Fi(Y.getDependencies(o)):e=[]}else e=Fi(r);else if(r===void 0)e=Fi(i);else{e=Fi(i);let o=r.length,s;for(let u=0;u{const c=Y.findResponsibleContainer(this).get(n),h=this[r];c!==h&&(this[r]=o,l.notify(e))};l.subscribe({handleChange:a},"isConnected")}return o}})},createInterface(t,e){const n=typeof t=="function"?t:e,i=typeof t=="string"?t:t&&"friendlyName"in t&&t.friendlyName||td,r=typeof t=="string"?!1:t&&"respectConnection"in t&&t.respectConnection||!1,o=function(s,l,a){if(s==null||new.target!==void 0)throw new Error(`No registration for interface: '${o.friendlyName}'`);if(l)Y.defineProperty(s,l,o,r);else{const u=Y.getOrCreateAnnotationParamTypes(s);u[a]=o}};return o.$isInterface=!0,o.friendlyName=i??"(anonymous)",n!=null&&(o.register=function(s,l){return n(new fy(s,l??o))}),o.toString=function(){return`InterfaceSymbol<${o.friendlyName}>`},o},inject(...t){return function(e,n,i){if(typeof i=="number"){const r=Y.getOrCreateAnnotationParamTypes(e),o=t[0];o!==void 0&&(r[i]=o)}else if(n)Y.defineProperty(e,n,t[0]);else{const r=i?Y.getOrCreateAnnotationParamTypes(i.value):Y.getOrCreateAnnotationParamTypes(e);let o;for(let s=0;s{i.composedPath()[0]!==this.owner&&(i.detail.container=this,i.stopImmediatePropagation())})}get parent(){return this._parent===void 0&&(this._parent=this.config.parentLocator(this.owner)),this._parent}get depth(){return this.parent===null?0:this.parent.depth+1}get responsibleForOwnerRequests(){return this.config.responsibleForOwnerRequests}registerWithContext(e,...n){return this.context=e,this.register(...n),this.context=null,this}register(...e){if(++this.registerDepth===100)throw new Error("Unable to autoregister dependency");let n,i,r,o,s;const l=this.context;for(let a=0,u=e.length;athis}))}jitRegister(e,n){if(typeof e!="function")throw new Error(`Attempted to jitRegister something that is not a constructor: '${e}'. Did you forget to register this dependency?`);if(ky.has(e.name))throw new Error(`Attempted to jitRegister an intrinsic type: ${e.name}. Did you forget to add @inject(Key)`);if(So(e)){const i=e.register(n);if(!(i instanceof Object)||i.resolve==null){const r=n.resolvers.get(e);if(r!=null)return r;throw new Error("A valid resolver was not returned from the static register method")}return i}else{if(e.$isInterface)throw new Error(`Attempted to jitRegister an interface: ${e.friendlyName}`);{const i=this.config.defaultResolver(e,n);return n.resolvers.set(e,i),i}}}}const ul=new WeakMap;function op(t){return function(e,n,i){if(ul.has(i))return ul.get(i);const r=t(e,n,i);return ul.set(i,r),r}}const Sr=Object.freeze({instance(t,e){return new Ke(t,0,e)},singleton(t,e){return new Ke(t,1,e)},transient(t,e){return new Ke(t,2,e)},callback(t,e){return new Ke(t,3,e)},cachedCallback(t,e){return new Ke(t,3,op(e))},aliasTo(t,e){return new Ke(e,5,t)}});function ro(t){if(t==null)throw new Error("key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI?")}function ed(t,e,n){if(t instanceof Ke&&t.strategy===4){const i=t.state;let r=i.length;const o=new Array(r);for(;r--;)o[r]=i[r].resolve(e,n);return o}return[t.resolve(e,n)]}const td="(anonymous)";function nd(t){return typeof t=="object"&&t!==null||typeof t=="function"}const Cy=function(){const t=new WeakMap;let e=!1,n="",i=0;return function(r){return e=t.get(r),e===void 0&&(n=r.toString(),i=n.length,e=i>=29&&i<=100&&n.charCodeAt(i-1)===125&&n.charCodeAt(i-2)<=32&&n.charCodeAt(i-3)===93&&n.charCodeAt(i-4)===101&&n.charCodeAt(i-5)===100&&n.charCodeAt(i-6)===111&&n.charCodeAt(i-7)===99&&n.charCodeAt(i-8)===32&&n.charCodeAt(i-9)===101&&n.charCodeAt(i-10)===118&&n.charCodeAt(i-11)===105&&n.charCodeAt(i-12)===116&&n.charCodeAt(i-13)===97&&n.charCodeAt(i-14)===110&&n.charCodeAt(i-15)===88,t.set(r,e)),e}}(),oo={};function sp(t){switch(typeof t){case"number":return t>=0&&(t|0)===t;case"string":{const e=oo[t];if(e!==void 0)return e;const n=t.length;if(n===0)return oo[t]=!1;let i=0;for(let r=0;r1||i<48||i>57)return oo[t]=!1;return oo[t]=!0}default:return!1}}function id(t){return`${t.toLowerCase()}:presentation`}const so=new Map,lp=Object.freeze({define(t,e,n){const i=id(t);so.get(i)===void 0?so.set(i,e):so.set(i,!1),n.register(Sr.instance(i,e))},forTag(t,e){const n=id(t),i=so.get(n);return i===!1?Y.findResponsibleContainer(e).get(n):i||null}});class Sy{constructor(e,n){this.template=e||null,this.styles=n===void 0?null:Array.isArray(n)?Ve.create(n):n instanceof Ve?n:Ve.create([n])}applyTo(e){const n=e.$fastController;n.template===null&&(n.template=this.template),n.styles===null&&(n.styles=this.styles)}}class G extends ys{constructor(){super(...arguments),this._presentation=void 0}get $presentation(){return this._presentation===void 0&&(this._presentation=lp.forTag(this.tagName,this)),this._presentation}templateChanged(){this.template!==void 0&&(this.$fastController.template=this.template)}stylesChanged(){this.styles!==void 0&&(this.$fastController.styles=this.styles)}connectedCallback(){this.$presentation!==null&&this.$presentation.applyTo(this),super.connectedCallback()}static compose(e){return(n={})=>new ap(this===G?class extends G{}:this,e,n)}}v([E],G.prototype,"template",void 0);v([E],G.prototype,"styles",void 0);function zi(t,e,n){return typeof t=="function"?t(e,n):t}class ap{constructor(e,n,i){this.type=e,this.elementDefinition=n,this.overrideDefinition=i,this.definition=Object.assign(Object.assign({},this.elementDefinition),this.overrideDefinition)}register(e,n){const i=this.definition,r=this.overrideDefinition,s=`${i.prefix||n.elementPrefix}-${i.baseName}`;n.tryDefineElement({name:s,type:this.type,baseClass:this.elementDefinition.baseClass,callback:l=>{const a=new Sy(zi(i.template,l,i),zi(i.styles,l,i));l.definePresentation(a);let u=zi(i.shadowOptions,l,i);l.shadowRootMode&&(u?r.shadowOptions||(u.mode=l.shadowRootMode):u!==null&&(u={mode:l.shadowRootMode})),l.defineElement({elementOptions:zi(i.elementOptions,l,i),shadowOptions:u,attributes:zi(i.attributes,l,i)})}})}}function je(t,...e){const n=Jo.locate(t);e.forEach(i=>{Object.getOwnPropertyNames(i.prototype).forEach(o=>{o!=="constructor"&&Object.defineProperty(t.prototype,o,Object.getOwnPropertyDescriptor(i.prototype,o))}),Jo.locate(i).forEach(o=>n.push(o))})}const bu={horizontal:"horizontal",vertical:"vertical"};function $y(t,e){let n=t.length;for(;n--;)if(e(t[n],n,t))return n;return-1}function Ey(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ty(...t){return t.every(e=>e instanceof HTMLElement)}function Iy(){const t=document.querySelector('meta[property="csp-nonce"]');return t?t.getAttribute("content"):null}let fn;function Ry(){if(typeof fn=="boolean")return fn;if(!Ey())return fn=!1,fn;const t=document.createElement("style"),e=Iy();e!==null&&t.setAttribute("nonce",e),document.head.appendChild(t);try{t.sheet.insertRule("foo:focus-visible {color:inherit}",0),fn=!0}catch{fn=!1}finally{document.head.removeChild(t)}return fn}const rd="focus",od="focusin",pi="focusout",mi="keydown";var sd;(function(t){t[t.alt=18]="alt",t[t.arrowDown=40]="arrowDown",t[t.arrowLeft=37]="arrowLeft",t[t.arrowRight=39]="arrowRight",t[t.arrowUp=38]="arrowUp",t[t.back=8]="back",t[t.backSlash=220]="backSlash",t[t.break=19]="break",t[t.capsLock=20]="capsLock",t[t.closeBracket=221]="closeBracket",t[t.colon=186]="colon",t[t.colon2=59]="colon2",t[t.comma=188]="comma",t[t.ctrl=17]="ctrl",t[t.delete=46]="delete",t[t.end=35]="end",t[t.enter=13]="enter",t[t.equals=187]="equals",t[t.equals2=61]="equals2",t[t.equals3=107]="equals3",t[t.escape=27]="escape",t[t.forwardSlash=191]="forwardSlash",t[t.function1=112]="function1",t[t.function10=121]="function10",t[t.function11=122]="function11",t[t.function12=123]="function12",t[t.function2=113]="function2",t[t.function3=114]="function3",t[t.function4=115]="function4",t[t.function5=116]="function5",t[t.function6=117]="function6",t[t.function7=118]="function7",t[t.function8=119]="function8",t[t.function9=120]="function9",t[t.home=36]="home",t[t.insert=45]="insert",t[t.menu=93]="menu",t[t.minus=189]="minus",t[t.minus2=109]="minus2",t[t.numLock=144]="numLock",t[t.numPad0=96]="numPad0",t[t.numPad1=97]="numPad1",t[t.numPad2=98]="numPad2",t[t.numPad3=99]="numPad3",t[t.numPad4=100]="numPad4",t[t.numPad5=101]="numPad5",t[t.numPad6=102]="numPad6",t[t.numPad7=103]="numPad7",t[t.numPad8=104]="numPad8",t[t.numPad9=105]="numPad9",t[t.numPadDivide=111]="numPadDivide",t[t.numPadDot=110]="numPadDot",t[t.numPadMinus=109]="numPadMinus",t[t.numPadMultiply=106]="numPadMultiply",t[t.numPadPlus=107]="numPadPlus",t[t.openBracket=219]="openBracket",t[t.pageDown=34]="pageDown",t[t.pageUp=33]="pageUp",t[t.period=190]="period",t[t.print=44]="print",t[t.quote=222]="quote",t[t.scrollLock=145]="scrollLock",t[t.shift=16]="shift",t[t.space=32]="space",t[t.tab=9]="tab",t[t.tilde=192]="tilde",t[t.windowsLeft=91]="windowsLeft",t[t.windowsOpera=219]="windowsOpera",t[t.windowsRight=92]="windowsRight"})(sd||(sd={}));const Pn="ArrowDown",$r="ArrowLeft",Er="ArrowRight",Dn="ArrowUp",Ar="Enter",ws="Escape",Ci="Home",Si="End",Oy="F2",Py="PageDown",Dy="PageUp",_r=" ",xu="Tab",Ay={ArrowDown:Pn,ArrowLeft:$r,ArrowRight:Er,ArrowUp:Dn};var vi;(function(t){t.ltr="ltr",t.rtl="rtl"})(vi||(vi={}));function _y(t,e,n){return Math.min(Math.max(n,t),e)}function lo(t,e,n=0){return[e,n]=[e,n].sort((i,r)=>i-r),e<=t&&tV` + + ${ki(t,e)} + + + + ${xi(t,e)} + +`;class q{}v([w({attribute:"aria-atomic"})],q.prototype,"ariaAtomic",void 0);v([w({attribute:"aria-busy"})],q.prototype,"ariaBusy",void 0);v([w({attribute:"aria-controls"})],q.prototype,"ariaControls",void 0);v([w({attribute:"aria-current"})],q.prototype,"ariaCurrent",void 0);v([w({attribute:"aria-describedby"})],q.prototype,"ariaDescribedby",void 0);v([w({attribute:"aria-details"})],q.prototype,"ariaDetails",void 0);v([w({attribute:"aria-disabled"})],q.prototype,"ariaDisabled",void 0);v([w({attribute:"aria-errormessage"})],q.prototype,"ariaErrormessage",void 0);v([w({attribute:"aria-flowto"})],q.prototype,"ariaFlowto",void 0);v([w({attribute:"aria-haspopup"})],q.prototype,"ariaHaspopup",void 0);v([w({attribute:"aria-hidden"})],q.prototype,"ariaHidden",void 0);v([w({attribute:"aria-invalid"})],q.prototype,"ariaInvalid",void 0);v([w({attribute:"aria-keyshortcuts"})],q.prototype,"ariaKeyshortcuts",void 0);v([w({attribute:"aria-label"})],q.prototype,"ariaLabel",void 0);v([w({attribute:"aria-labelledby"})],q.prototype,"ariaLabelledby",void 0);v([w({attribute:"aria-live"})],q.prototype,"ariaLive",void 0);v([w({attribute:"aria-owns"})],q.prototype,"ariaOwns",void 0);v([w({attribute:"aria-relevant"})],q.prototype,"ariaRelevant",void 0);v([w({attribute:"aria-roledescription"})],q.prototype,"ariaRoledescription",void 0);class vt extends G{constructor(){super(...arguments),this.handleUnsupportedDelegatesFocus=()=>{var e;window.ShadowRoot&&!window.ShadowRoot.prototype.hasOwnProperty("delegatesFocus")&&(!((e=this.$fastController.definition.shadowOptions)===null||e===void 0)&&e.delegatesFocus)&&(this.focus=()=>{var n;(n=this.control)===null||n===void 0||n.focus()})}}connectedCallback(){super.connectedCallback(),this.handleUnsupportedDelegatesFocus()}}v([w],vt.prototype,"download",void 0);v([w],vt.prototype,"href",void 0);v([w],vt.prototype,"hreflang",void 0);v([w],vt.prototype,"ping",void 0);v([w],vt.prototype,"referrerpolicy",void 0);v([w],vt.prototype,"rel",void 0);v([w],vt.prototype,"target",void 0);v([w],vt.prototype,"type",void 0);v([E],vt.prototype,"defaultSlottedContent",void 0);class ku{}v([w({attribute:"aria-expanded"})],ku.prototype,"ariaExpanded",void 0);je(ku,q);je(vt,bi,ku);const Fy=t=>{const e=t.closest("[dir]");return e!==null&&e.dir==="rtl"?vi.rtl:vi.ltr},up=(t,e)=>V` + +`;let Lr=class extends G{constructor(){super(...arguments),this.generateBadgeStyle=()=>{if(!this.fill&&!this.color)return;const e=`background-color: var(--badge-fill-${this.fill});`,n=`color: var(--badge-color-${this.color});`;return this.fill&&!this.color?e:this.color&&!this.fill?n:`${n} ${e}`}}};v([w({attribute:"fill"})],Lr.prototype,"fill",void 0);v([w({attribute:"color"})],Lr.prototype,"color",void 0);v([w({mode:"boolean"})],Lr.prototype,"circular",void 0);const zy=(t,e)=>V` + +`,ld="form-associated-proxy",ad="ElementInternals",ud=ad in window&&"setFormValue"in window[ad].prototype,cd=new WeakMap;function Nr(t){const e=class extends t{constructor(...n){super(...n),this.dirtyValue=!1,this.disabled=!1,this.proxyEventsToBlock=["change","click"],this.proxyInitialized=!1,this.required=!1,this.initialValue=this.initialValue||"",this.elementInternals||(this.formResetCallback=this.formResetCallback.bind(this))}static get formAssociated(){return ud}get validity(){return this.elementInternals?this.elementInternals.validity:this.proxy.validity}get form(){return this.elementInternals?this.elementInternals.form:this.proxy.form}get validationMessage(){return this.elementInternals?this.elementInternals.validationMessage:this.proxy.validationMessage}get willValidate(){return this.elementInternals?this.elementInternals.willValidate:this.proxy.willValidate}get labels(){if(this.elementInternals)return Object.freeze(Array.from(this.elementInternals.labels));if(this.proxy instanceof HTMLElement&&this.proxy.ownerDocument&&this.id){const n=this.proxy.labels,i=Array.from(this.proxy.getRootNode().querySelectorAll(`[for='${this.id}']`)),r=n?i.concat(Array.from(n)):i;return Object.freeze(r)}else return Cn}valueChanged(n,i){this.dirtyValue=!0,this.proxy instanceof HTMLElement&&(this.proxy.value=this.value),this.currentValue=this.value,this.setFormValue(this.value),this.validate()}currentValueChanged(){this.value=this.currentValue}initialValueChanged(n,i){this.dirtyValue||(this.value=this.initialValue,this.dirtyValue=!1)}disabledChanged(n,i){this.proxy instanceof HTMLElement&&(this.proxy.disabled=this.disabled),N.queueUpdate(()=>this.classList.toggle("disabled",this.disabled))}nameChanged(n,i){this.proxy instanceof HTMLElement&&(this.proxy.name=this.name)}requiredChanged(n,i){this.proxy instanceof HTMLElement&&(this.proxy.required=this.required),N.queueUpdate(()=>this.classList.toggle("required",this.required)),this.validate()}get elementInternals(){if(!ud)return null;let n=cd.get(this);return n||(n=this.attachInternals(),cd.set(this,n)),n}connectedCallback(){super.connectedCallback(),this.addEventListener("keypress",this._keypressHandler),this.value||(this.value=this.initialValue,this.dirtyValue=!1),this.elementInternals||(this.attachProxy(),this.form&&this.form.addEventListener("reset",this.formResetCallback))}disconnectedCallback(){super.disconnectedCallback(),this.proxyEventsToBlock.forEach(n=>this.proxy.removeEventListener(n,this.stopPropagation)),!this.elementInternals&&this.form&&this.form.removeEventListener("reset",this.formResetCallback)}checkValidity(){return this.elementInternals?this.elementInternals.checkValidity():this.proxy.checkValidity()}reportValidity(){return this.elementInternals?this.elementInternals.reportValidity():this.proxy.reportValidity()}setValidity(n,i,r){this.elementInternals?this.elementInternals.setValidity(n,i,r):typeof i=="string"&&this.proxy.setCustomValidity(i)}formDisabledCallback(n){this.disabled=n}formResetCallback(){this.value=this.initialValue,this.dirtyValue=!1}attachProxy(){var n;this.proxyInitialized||(this.proxyInitialized=!0,this.proxy.style.display="none",this.proxyEventsToBlock.forEach(i=>this.proxy.addEventListener(i,this.stopPropagation)),this.proxy.disabled=this.disabled,this.proxy.required=this.required,typeof this.name=="string"&&(this.proxy.name=this.name),typeof this.value=="string"&&(this.proxy.value=this.value),this.proxy.setAttribute("slot",ld),this.proxySlot=document.createElement("slot"),this.proxySlot.setAttribute("name",ld)),(n=this.shadowRoot)===null||n===void 0||n.appendChild(this.proxySlot),this.appendChild(this.proxy)}detachProxy(){var n;this.removeChild(this.proxy),(n=this.shadowRoot)===null||n===void 0||n.removeChild(this.proxySlot)}validate(n){this.proxy instanceof HTMLElement&&this.setValidity(this.proxy.validity,this.proxy.validationMessage,n)}setFormValue(n,i){this.elementInternals&&this.elementInternals.setFormValue(n,i||n)}_keypressHandler(n){switch(n.key){case Ar:if(this.form instanceof HTMLFormElement){const i=this.form.querySelector("[type=submit]");i==null||i.click()}break}}stopPropagation(n){n.stopPropagation()}};return w({mode:"boolean"})(e.prototype,"disabled"),w({mode:"fromView",attribute:"value"})(e.prototype,"initialValue"),w({attribute:"current-value"})(e.prototype,"currentValue"),w(e.prototype,"name"),w({mode:"boolean"})(e.prototype,"required"),E(e.prototype,"value"),e}function cp(t){class e extends Nr(t){}class n extends e{constructor(...r){super(r),this.dirtyChecked=!1,this.checkedAttribute=!1,this.checked=!1,this.dirtyChecked=!1}checkedAttributeChanged(){this.defaultChecked=this.checkedAttribute}defaultCheckedChanged(){this.dirtyChecked||(this.checked=this.defaultChecked,this.dirtyChecked=!1)}checkedChanged(r,o){this.dirtyChecked||(this.dirtyChecked=!0),this.currentChecked=this.checked,this.updateForm(),this.proxy instanceof HTMLInputElement&&(this.proxy.checked=this.checked),r!==void 0&&this.$emit("change"),this.validate()}currentCheckedChanged(r,o){this.checked=this.currentChecked}updateForm(){const r=this.checked?this.value:null;this.setFormValue(r,r)}connectedCallback(){super.connectedCallback(),this.updateForm()}formResetCallback(){super.formResetCallback(),this.checked=!!this.checkedAttribute,this.dirtyChecked=!1}}return w({attribute:"checked",mode:"boolean"})(n.prototype,"checkedAttribute"),w({attribute:"current-checked",converter:qf})(n.prototype,"currentChecked"),E(n.prototype,"defaultChecked"),E(n.prototype,"checked"),n}class By extends G{}class My extends Nr(By){constructor(){super(...arguments),this.proxy=document.createElement("input")}}let gt=class extends My{constructor(){super(...arguments),this.handleClick=e=>{var n;this.disabled&&((n=this.defaultSlottedContent)===null||n===void 0?void 0:n.length)<=1&&e.stopPropagation()},this.handleSubmission=()=>{if(!this.form)return;const e=this.proxy.isConnected;e||this.attachProxy(),typeof this.form.requestSubmit=="function"?this.form.requestSubmit(this.proxy):this.proxy.click(),e||this.detachProxy()},this.handleFormReset=()=>{var e;(e=this.form)===null||e===void 0||e.reset()},this.handleUnsupportedDelegatesFocus=()=>{var e;window.ShadowRoot&&!window.ShadowRoot.prototype.hasOwnProperty("delegatesFocus")&&(!((e=this.$fastController.definition.shadowOptions)===null||e===void 0)&&e.delegatesFocus)&&(this.focus=()=>{this.control.focus()})}}formactionChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.formAction=this.formaction)}formenctypeChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.formEnctype=this.formenctype)}formmethodChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.formMethod=this.formmethod)}formnovalidateChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.formNoValidate=this.formnovalidate)}formtargetChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.formTarget=this.formtarget)}typeChanged(e,n){this.proxy instanceof HTMLInputElement&&(this.proxy.type=this.type),n==="submit"&&this.addEventListener("click",this.handleSubmission),e==="submit"&&this.removeEventListener("click",this.handleSubmission),n==="reset"&&this.addEventListener("click",this.handleFormReset),e==="reset"&&this.removeEventListener("click",this.handleFormReset)}validate(){super.validate(this.control)}connectedCallback(){var e;super.connectedCallback(),this.proxy.setAttribute("type",this.type),this.handleUnsupportedDelegatesFocus();const n=Array.from((e=this.control)===null||e===void 0?void 0:e.children);n&&n.forEach(i=>{i.addEventListener("click",this.handleClick)})}disconnectedCallback(){var e;super.disconnectedCallback();const n=Array.from((e=this.control)===null||e===void 0?void 0:e.children);n&&n.forEach(i=>{i.removeEventListener("click",this.handleClick)})}};v([w({mode:"boolean"})],gt.prototype,"autofocus",void 0);v([w({attribute:"form"})],gt.prototype,"formId",void 0);v([w],gt.prototype,"formaction",void 0);v([w],gt.prototype,"formenctype",void 0);v([w],gt.prototype,"formmethod",void 0);v([w({mode:"boolean"})],gt.prototype,"formnovalidate",void 0);v([w],gt.prototype,"formtarget",void 0);v([w],gt.prototype,"type",void 0);v([E],gt.prototype,"defaultSlottedContent",void 0);class bs{}v([w({attribute:"aria-expanded"})],bs.prototype,"ariaExpanded",void 0);v([w({attribute:"aria-pressed"})],bs.prototype,"ariaPressed",void 0);je(bs,q);je(gt,bi,bs);const ao={none:"none",default:"default",sticky:"sticky"},zt={default:"default",columnHeader:"columnheader",rowHeader:"rowheader"},rr={default:"default",header:"header",stickyHeader:"sticky-header"};let Se=class extends G{constructor(){super(...arguments),this.rowType=rr.default,this.rowData=null,this.columnDefinitions=null,this.isActiveRow=!1,this.cellsRepeatBehavior=null,this.cellsPlaceholder=null,this.focusColumnIndex=0,this.refocusOnLoad=!1,this.updateRowStyle=()=>{this.style.gridTemplateColumns=this.gridTemplateColumns}}gridTemplateColumnsChanged(){this.$fastController.isConnected&&this.updateRowStyle()}rowTypeChanged(){this.$fastController.isConnected&&this.updateItemTemplate()}rowDataChanged(){if(this.rowData!==null&&this.isActiveRow){this.refocusOnLoad=!0;return}}cellItemTemplateChanged(){this.updateItemTemplate()}headerCellItemTemplateChanged(){this.updateItemTemplate()}connectedCallback(){super.connectedCallback(),this.cellsRepeatBehavior===null&&(this.cellsPlaceholder=document.createComment(""),this.appendChild(this.cellsPlaceholder),this.updateItemTemplate(),this.cellsRepeatBehavior=new tp(e=>e.columnDefinitions,e=>e.activeCellItemTemplate,{positioning:!0}).createBehavior(this.cellsPlaceholder),this.$fastController.addBehaviors([this.cellsRepeatBehavior])),this.addEventListener("cell-focused",this.handleCellFocus),this.addEventListener(pi,this.handleFocusout),this.addEventListener(mi,this.handleKeydown),this.updateRowStyle(),this.refocusOnLoad&&(this.refocusOnLoad=!1,this.cellElements.length>this.focusColumnIndex&&this.cellElements[this.focusColumnIndex].focus())}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("cell-focused",this.handleCellFocus),this.removeEventListener(pi,this.handleFocusout),this.removeEventListener(mi,this.handleKeydown)}handleFocusout(e){this.contains(e.target)||(this.isActiveRow=!1,this.focusColumnIndex=0)}handleCellFocus(e){this.isActiveRow=!0,this.focusColumnIndex=this.cellElements.indexOf(e.target),this.$emit("row-focused",this)}handleKeydown(e){if(e.defaultPrevented)return;let n=0;switch(e.key){case $r:n=Math.max(0,this.focusColumnIndex-1),this.cellElements[n].focus(),e.preventDefault();break;case Er:n=Math.min(this.cellElements.length-1,this.focusColumnIndex+1),this.cellElements[n].focus(),e.preventDefault();break;case Ci:e.ctrlKey||(this.cellElements[0].focus(),e.preventDefault());break;case Si:e.ctrlKey||(this.cellElements[this.cellElements.length-1].focus(),e.preventDefault());break}}updateItemTemplate(){this.activeCellItemTemplate=this.rowType===rr.default&&this.cellItemTemplate!==void 0?this.cellItemTemplate:this.rowType===rr.default&&this.cellItemTemplate===void 0?this.defaultCellItemTemplate:this.headerCellItemTemplate!==void 0?this.headerCellItemTemplate:this.defaultHeaderCellItemTemplate}};v([w({attribute:"grid-template-columns"})],Se.prototype,"gridTemplateColumns",void 0);v([w({attribute:"row-type"})],Se.prototype,"rowType",void 0);v([E],Se.prototype,"rowData",void 0);v([E],Se.prototype,"columnDefinitions",void 0);v([E],Se.prototype,"cellItemTemplate",void 0);v([E],Se.prototype,"headerCellItemTemplate",void 0);v([E],Se.prototype,"rowIndex",void 0);v([E],Se.prototype,"isActiveRow",void 0);v([E],Se.prototype,"activeCellItemTemplate",void 0);v([E],Se.prototype,"defaultCellItemTemplate",void 0);v([E],Se.prototype,"defaultHeaderCellItemTemplate",void 0);v([E],Se.prototype,"cellElements",void 0);function Vy(t){const e=t.tagFor(Se);return V` + <${e} + :rowData="${n=>n}" + :cellItemTemplate="${(n,i)=>i.parent.cellItemTemplate}" + :headerCellItemTemplate="${(n,i)=>i.parent.headerCellItemTemplate}" + > +`}const Hy=(t,e)=>{const n=Vy(t),i=t.tagFor(Se);return V` + + `};let $e=class ha extends G{constructor(){super(),this.noTabbing=!1,this.generateHeader=ao.default,this.rowsData=[],this.columnDefinitions=null,this.focusRowIndex=0,this.focusColumnIndex=0,this.rowsPlaceholder=null,this.generatedHeader=null,this.isUpdatingFocus=!1,this.pendingFocusUpdate=!1,this.rowindexUpdateQueued=!1,this.columnDefinitionsStale=!0,this.generatedGridTemplateColumns="",this.focusOnCell=(e,n,i)=>{if(this.rowElements.length===0){this.focusRowIndex=0,this.focusColumnIndex=0;return}const r=Math.max(0,Math.min(this.rowElements.length-1,e)),s=this.rowElements[r].querySelectorAll('[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"]'),l=Math.max(0,Math.min(s.length-1,n)),a=s[l];i&&this.scrollHeight!==this.clientHeight&&(r0||r>this.focusRowIndex&&this.scrollTop{e&&e.length&&(e.forEach(i=>{i.addedNodes.forEach(r=>{r.nodeType===1&&r.getAttribute("role")==="row"&&(r.columnDefinitions=this.columnDefinitions)})}),this.queueRowIndexUpdate())},this.queueRowIndexUpdate=()=>{this.rowindexUpdateQueued||(this.rowindexUpdateQueued=!0,N.queueUpdate(this.updateRowIndexes))},this.updateRowIndexes=()=>{let e=this.gridTemplateColumns;if(e===void 0){if(this.generatedGridTemplateColumns===""&&this.rowElements.length>0){const n=this.rowElements[0];this.generatedGridTemplateColumns=new Array(n.cellElements.length).fill("1fr").join(" ")}e=this.generatedGridTemplateColumns}this.rowElements.forEach((n,i)=>{const r=n;r.rowIndex=i,r.gridTemplateColumns=e,this.columnDefinitionsStale&&(r.columnDefinitions=this.columnDefinitions)}),this.rowindexUpdateQueued=!1,this.columnDefinitionsStale=!1}}static generateTemplateColumns(e){let n="";return e.forEach(i=>{n=`${n}${n===""?"":" "}1fr`}),n}noTabbingChanged(){this.$fastController.isConnected&&(this.noTabbing?this.setAttribute("tabIndex","-1"):this.setAttribute("tabIndex",this.contains(document.activeElement)||this===document.activeElement?"-1":"0"))}generateHeaderChanged(){this.$fastController.isConnected&&this.toggleGeneratedHeader()}gridTemplateColumnsChanged(){this.$fastController.isConnected&&this.updateRowIndexes()}rowsDataChanged(){this.columnDefinitions===null&&this.rowsData.length>0&&(this.columnDefinitions=ha.generateColumns(this.rowsData[0])),this.$fastController.isConnected&&this.toggleGeneratedHeader()}columnDefinitionsChanged(){if(this.columnDefinitions===null){this.generatedGridTemplateColumns="";return}this.generatedGridTemplateColumns=ha.generateTemplateColumns(this.columnDefinitions),this.$fastController.isConnected&&(this.columnDefinitionsStale=!0,this.queueRowIndexUpdate())}headerCellItemTemplateChanged(){this.$fastController.isConnected&&this.generatedHeader!==null&&(this.generatedHeader.headerCellItemTemplate=this.headerCellItemTemplate)}focusRowIndexChanged(){this.$fastController.isConnected&&this.queueFocusUpdate()}focusColumnIndexChanged(){this.$fastController.isConnected&&this.queueFocusUpdate()}connectedCallback(){super.connectedCallback(),this.rowItemTemplate===void 0&&(this.rowItemTemplate=this.defaultRowItemTemplate),this.rowsPlaceholder=document.createComment(""),this.appendChild(this.rowsPlaceholder),this.toggleGeneratedHeader(),this.rowsRepeatBehavior=new tp(e=>e.rowsData,e=>e.rowItemTemplate,{positioning:!0}).createBehavior(this.rowsPlaceholder),this.$fastController.addBehaviors([this.rowsRepeatBehavior]),this.addEventListener("row-focused",this.handleRowFocus),this.addEventListener(rd,this.handleFocus),this.addEventListener(mi,this.handleKeydown),this.addEventListener(pi,this.handleFocusOut),this.observer=new MutationObserver(this.onChildListChange),this.observer.observe(this,{childList:!0}),this.noTabbing&&this.setAttribute("tabindex","-1"),N.queueUpdate(this.queueRowIndexUpdate)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("row-focused",this.handleRowFocus),this.removeEventListener(rd,this.handleFocus),this.removeEventListener(mi,this.handleKeydown),this.removeEventListener(pi,this.handleFocusOut),this.observer.disconnect(),this.rowsPlaceholder=null,this.generatedHeader=null}handleRowFocus(e){this.isUpdatingFocus=!0;const n=e.target;this.focusRowIndex=this.rowElements.indexOf(n),this.focusColumnIndex=n.focusColumnIndex,this.setAttribute("tabIndex","-1"),this.isUpdatingFocus=!1}handleFocus(e){this.focusOnCell(this.focusRowIndex,this.focusColumnIndex,!0)}handleFocusOut(e){(e.relatedTarget===null||!this.contains(e.relatedTarget))&&this.setAttribute("tabIndex",this.noTabbing?"-1":"0")}handleKeydown(e){if(e.defaultPrevented)return;let n;const i=this.rowElements.length-1,r=this.offsetHeight+this.scrollTop,o=this.rowElements[i];switch(e.key){case Dn:e.preventDefault(),this.focusOnCell(this.focusRowIndex-1,this.focusColumnIndex,!0);break;case Pn:e.preventDefault(),this.focusOnCell(this.focusRowIndex+1,this.focusColumnIndex,!0);break;case Dy:if(e.preventDefault(),this.rowElements.length===0){this.focusOnCell(0,0,!1);break}if(this.focusRowIndex===0){this.focusOnCell(0,this.focusColumnIndex,!1);return}for(n=this.focusRowIndex-1,n;n>=0;n--){const s=this.rowElements[n];if(s.offsetTop=i||o.offsetTop+o.offsetHeight<=r){this.focusOnCell(i,this.focusColumnIndex,!1);return}for(n=this.focusRowIndex+1,n;n<=i;n++){const s=this.rowElements[n];if(s.offsetTop+s.offsetHeight>r){let l=0;this.generateHeader===ao.sticky&&this.generatedHeader!==null&&(l=this.generatedHeader.clientHeight),this.scrollTop=s.offsetTop-l;break}}this.focusOnCell(n,this.focusColumnIndex,!1);break;case Ci:e.ctrlKey&&(e.preventDefault(),this.focusOnCell(0,0,!0));break;case Si:e.ctrlKey&&this.columnDefinitions!==null&&(e.preventDefault(),this.focusOnCell(this.rowElements.length-1,this.columnDefinitions.length-1,!0));break}}queueFocusUpdate(){this.isUpdatingFocus&&(this.contains(document.activeElement)||this===document.activeElement)||this.pendingFocusUpdate===!1&&(this.pendingFocusUpdate=!0,N.queueUpdate(()=>this.updateFocus()))}updateFocus(){this.pendingFocusUpdate=!1,this.focusOnCell(this.focusRowIndex,this.focusColumnIndex,!0)}toggleGeneratedHeader(){if(this.generatedHeader!==null&&(this.removeChild(this.generatedHeader),this.generatedHeader=null),this.generateHeader!==ao.none&&this.rowsData.length>0){const e=document.createElement(this.rowElementTag);this.generatedHeader=e,this.generatedHeader.columnDefinitions=this.columnDefinitions,this.generatedHeader.gridTemplateColumns=this.gridTemplateColumns,this.generatedHeader.rowType=this.generateHeader===ao.sticky?rr.stickyHeader:rr.header,(this.firstChild!==null||this.rowsPlaceholder!==null)&&this.insertBefore(e,this.firstChild!==null?this.firstChild:this.rowsPlaceholder);return}}};$e.generateColumns=t=>Object.getOwnPropertyNames(t).map((e,n)=>({columnDataKey:e,gridColumn:`${n}`}));v([w({attribute:"no-tabbing",mode:"boolean"})],$e.prototype,"noTabbing",void 0);v([w({attribute:"generate-header"})],$e.prototype,"generateHeader",void 0);v([w({attribute:"grid-template-columns"})],$e.prototype,"gridTemplateColumns",void 0);v([E],$e.prototype,"rowsData",void 0);v([E],$e.prototype,"columnDefinitions",void 0);v([E],$e.prototype,"rowItemTemplate",void 0);v([E],$e.prototype,"cellItemTemplate",void 0);v([E],$e.prototype,"headerCellItemTemplate",void 0);v([E],$e.prototype,"focusRowIndex",void 0);v([E],$e.prototype,"focusColumnIndex",void 0);v([E],$e.prototype,"defaultRowItemTemplate",void 0);v([E],$e.prototype,"rowElementTag",void 0);v([E],$e.prototype,"rowElements",void 0);const jy=V` + +`,Uy=V` + +`;let an=class extends G{constructor(){super(...arguments),this.cellType=zt.default,this.rowData=null,this.columnDefinition=null,this.isActiveCell=!1,this.customCellView=null,this.updateCellStyle=()=>{this.style.gridColumn=this.gridColumn}}cellTypeChanged(){this.$fastController.isConnected&&this.updateCellView()}gridColumnChanged(){this.$fastController.isConnected&&this.updateCellStyle()}columnDefinitionChanged(e,n){this.$fastController.isConnected&&this.updateCellView()}connectedCallback(){var e;super.connectedCallback(),this.addEventListener(od,this.handleFocusin),this.addEventListener(pi,this.handleFocusout),this.addEventListener(mi,this.handleKeydown),this.style.gridColumn=`${((e=this.columnDefinition)===null||e===void 0?void 0:e.gridColumn)===void 0?0:this.columnDefinition.gridColumn}`,this.updateCellView(),this.updateCellStyle()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(od,this.handleFocusin),this.removeEventListener(pi,this.handleFocusout),this.removeEventListener(mi,this.handleKeydown),this.disconnectCellView()}handleFocusin(e){if(!this.isActiveCell){switch(this.isActiveCell=!0,this.cellType){case zt.columnHeader:if(this.columnDefinition!==null&&this.columnDefinition.headerCellInternalFocusQueue!==!0&&typeof this.columnDefinition.headerCellFocusTargetCallback=="function"){const n=this.columnDefinition.headerCellFocusTargetCallback(this);n!==null&&n.focus()}break;default:if(this.columnDefinition!==null&&this.columnDefinition.cellInternalFocusQueue!==!0&&typeof this.columnDefinition.cellFocusTargetCallback=="function"){const n=this.columnDefinition.cellFocusTargetCallback(this);n!==null&&n.focus()}break}this.$emit("cell-focused",this)}}handleFocusout(e){this!==document.activeElement&&!this.contains(document.activeElement)&&(this.isActiveCell=!1)}handleKeydown(e){if(!(e.defaultPrevented||this.columnDefinition===null||this.cellType===zt.default&&this.columnDefinition.cellInternalFocusQueue!==!0||this.cellType===zt.columnHeader&&this.columnDefinition.headerCellInternalFocusQueue!==!0))switch(e.key){case Ar:case Oy:if(this.contains(document.activeElement)&&document.activeElement!==this)return;switch(this.cellType){case zt.columnHeader:if(this.columnDefinition.headerCellFocusTargetCallback!==void 0){const n=this.columnDefinition.headerCellFocusTargetCallback(this);n!==null&&n.focus(),e.preventDefault()}break;default:if(this.columnDefinition.cellFocusTargetCallback!==void 0){const n=this.columnDefinition.cellFocusTargetCallback(this);n!==null&&n.focus(),e.preventDefault()}break}break;case ws:this.contains(document.activeElement)&&document.activeElement!==this&&(this.focus(),e.preventDefault());break}}updateCellView(){if(this.disconnectCellView(),this.columnDefinition!==null)switch(this.cellType){case zt.columnHeader:this.columnDefinition.headerCellTemplate!==void 0?this.customCellView=this.columnDefinition.headerCellTemplate.render(this,this):this.customCellView=Uy.render(this,this);break;case void 0:case zt.rowHeader:case zt.default:this.columnDefinition.cellTemplate!==void 0?this.customCellView=this.columnDefinition.cellTemplate.render(this,this):this.customCellView=jy.render(this,this);break}}disconnectCellView(){this.customCellView!==null&&(this.customCellView.dispose(),this.customCellView=null)}};v([w({attribute:"cell-type"})],an.prototype,"cellType",void 0);v([w({attribute:"grid-column"})],an.prototype,"gridColumn",void 0);v([E],an.prototype,"rowData",void 0);v([E],an.prototype,"columnDefinition",void 0);function Wy(t){const e=t.tagFor(an);return V` + <${e} + cell-type="${n=>n.isRowHeader?"rowheader":void 0}" + grid-column="${(n,i)=>i.index+1}" + :rowData="${(n,i)=>i.parent.rowData}" + :columnDefinition="${n=>n}" + > +`}function Qy(t){const e=t.tagFor(an);return V` + <${e} + cell-type="columnheader" + grid-column="${(n,i)=>i.index+1}" + :columnDefinition="${n=>n}" + > +`}const Gy=(t,e)=>{const n=Wy(t),i=Qy(t);return V` + + `},qy=(t,e)=>V` + + `,Yy=(t,e)=>V` + +`;class Xy extends G{}class Zy extends cp(Xy){constructor(){super(...arguments),this.proxy=document.createElement("input")}}let xs=class extends Zy{constructor(){super(),this.initialValue="on",this.indeterminate=!1,this.keypressHandler=e=>{if(!this.readOnly)switch(e.key){case _r:this.indeterminate&&(this.indeterminate=!1),this.checked=!this.checked;break}},this.clickHandler=e=>{!this.disabled&&!this.readOnly&&(this.indeterminate&&(this.indeterminate=!1),this.checked=!this.checked)},this.proxy.setAttribute("type","checkbox")}readOnlyChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.readOnly=this.readOnly)}};v([w({attribute:"readonly",mode:"boolean"})],xs.prototype,"readOnly",void 0);v([E],xs.prototype,"defaultSlottedNodes",void 0);v([E],xs.prototype,"indeterminate",void 0);function dp(t){return Ty(t)&&(t.getAttribute("role")==="option"||t instanceof HTMLOptionElement)}class Lt extends G{constructor(e,n,i,r){super(),this.defaultSelected=!1,this.dirtySelected=!1,this.selected=this.defaultSelected,this.dirtyValue=!1,e&&(this.textContent=e),n&&(this.initialValue=n),i&&(this.defaultSelected=i),r&&(this.selected=r),this.proxy=new Option(`${this.textContent}`,this.initialValue,this.defaultSelected,this.selected),this.proxy.disabled=this.disabled}checkedChanged(e,n){if(typeof n=="boolean"){this.ariaChecked=n?"true":"false";return}this.ariaChecked=null}contentChanged(e,n){this.proxy instanceof HTMLOptionElement&&(this.proxy.textContent=this.textContent),this.$emit("contentchange",null,{bubbles:!0})}defaultSelectedChanged(){this.dirtySelected||(this.selected=this.defaultSelected,this.proxy instanceof HTMLOptionElement&&(this.proxy.selected=this.defaultSelected))}disabledChanged(e,n){this.ariaDisabled=this.disabled?"true":"false",this.proxy instanceof HTMLOptionElement&&(this.proxy.disabled=this.disabled)}selectedAttributeChanged(){this.defaultSelected=this.selectedAttribute,this.proxy instanceof HTMLOptionElement&&(this.proxy.defaultSelected=this.defaultSelected)}selectedChanged(){this.ariaSelected=this.selected?"true":"false",this.dirtySelected||(this.dirtySelected=!0),this.proxy instanceof HTMLOptionElement&&(this.proxy.selected=this.selected)}initialValueChanged(e,n){this.dirtyValue||(this.value=this.initialValue,this.dirtyValue=!1)}get label(){var e;return(e=this.value)!==null&&e!==void 0?e:this.text}get text(){var e,n;return(n=(e=this.textContent)===null||e===void 0?void 0:e.replace(/\s+/g," ").trim())!==null&&n!==void 0?n:""}set value(e){const n=`${e??""}`;this._value=n,this.dirtyValue=!0,this.proxy instanceof HTMLOptionElement&&(this.proxy.value=n),L.notify(this,"value")}get value(){var e;return L.track(this,"value"),(e=this._value)!==null&&e!==void 0?e:this.text}get form(){return this.proxy?this.proxy.form:null}}v([E],Lt.prototype,"checked",void 0);v([E],Lt.prototype,"content",void 0);v([E],Lt.prototype,"defaultSelected",void 0);v([w({mode:"boolean"})],Lt.prototype,"disabled",void 0);v([w({attribute:"selected",mode:"boolean"})],Lt.prototype,"selectedAttribute",void 0);v([E],Lt.prototype,"selected",void 0);v([w({attribute:"value",mode:"fromView"})],Lt.prototype,"initialValue",void 0);class $i{}v([E],$i.prototype,"ariaChecked",void 0);v([E],$i.prototype,"ariaPosInSet",void 0);v([E],$i.prototype,"ariaSelected",void 0);v([E],$i.prototype,"ariaSetSize",void 0);je($i,q);je(Lt,bi,$i);class Oe extends G{constructor(){super(...arguments),this._options=[],this.selectedIndex=-1,this.selectedOptions=[],this.shouldSkipFocus=!1,this.typeaheadBuffer="",this.typeaheadExpired=!0,this.typeaheadTimeout=-1}get firstSelectedOption(){var e;return(e=this.selectedOptions[0])!==null&&e!==void 0?e:null}get hasSelectableOptions(){return this.options.length>0&&!this.options.every(e=>e.disabled)}get length(){var e,n;return(n=(e=this.options)===null||e===void 0?void 0:e.length)!==null&&n!==void 0?n:0}get options(){return L.track(this,"options"),this._options}set options(e){this._options=e,L.notify(this,"options")}get typeAheadExpired(){return this.typeaheadExpired}set typeAheadExpired(e){this.typeaheadExpired=e}clickHandler(e){const n=e.target.closest("option,[role=option]");if(n&&!n.disabled)return this.selectedIndex=this.options.indexOf(n),!0}focusAndScrollOptionIntoView(e=this.firstSelectedOption){this.contains(document.activeElement)&&e!==null&&(e.focus(),requestAnimationFrame(()=>{e.scrollIntoView({block:"nearest"})}))}focusinHandler(e){!this.shouldSkipFocus&&e.target===e.currentTarget&&(this.setSelectedOptions(),this.focusAndScrollOptionIntoView()),this.shouldSkipFocus=!1}getTypeaheadMatches(){const e=this.typeaheadBuffer.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(`^${e}`,"gi");return this.options.filter(i=>i.text.trim().match(n))}getSelectableIndex(e=this.selectedIndex,n){const i=e>n?-1:e!s&&!l.disabled&&a!s&&!l.disabled&&a>r?l:s,o);break}}return this.options.indexOf(o)}handleChange(e,n){switch(n){case"selected":{Oe.slottedOptionFilter(e)&&(this.selectedIndex=this.options.indexOf(e)),this.setSelectedOptions();break}}}handleTypeAhead(e){this.typeaheadTimeout&&window.clearTimeout(this.typeaheadTimeout),this.typeaheadTimeout=window.setTimeout(()=>this.typeaheadExpired=!0,Oe.TYPE_AHEAD_TIMEOUT_MS),!(e.length>1)&&(this.typeaheadBuffer=`${this.typeaheadExpired?"":this.typeaheadBuffer}${e}`)}keydownHandler(e){if(this.disabled)return!0;this.shouldSkipFocus=!1;const n=e.key;switch(n){case Ci:{e.shiftKey||(e.preventDefault(),this.selectFirstOption());break}case Pn:{e.shiftKey||(e.preventDefault(),this.selectNextOption());break}case Dn:{e.shiftKey||(e.preventDefault(),this.selectPreviousOption());break}case Si:{e.preventDefault(),this.selectLastOption();break}case xu:return this.focusAndScrollOptionIntoView(),!0;case Ar:case ws:return!0;case _r:if(this.typeaheadExpired)return!0;default:return n.length===1&&this.handleTypeAhead(`${n}`),!0}}mousedownHandler(e){return this.shouldSkipFocus=!this.contains(document.activeElement),!0}multipleChanged(e,n){this.ariaMultiSelectable=n?"true":null}selectedIndexChanged(e,n){var i;if(!this.hasSelectableOptions){this.selectedIndex=-1;return}if(!((i=this.options[this.selectedIndex])===null||i===void 0)&&i.disabled&&typeof e=="number"){const r=this.getSelectableIndex(e,n),o=r>-1?r:e;this.selectedIndex=o,n===o&&this.selectedIndexChanged(n,o);return}this.setSelectedOptions()}selectedOptionsChanged(e,n){var i;const r=n.filter(Oe.slottedOptionFilter);(i=this.options)===null||i===void 0||i.forEach(o=>{const s=L.getNotifier(o);s.unsubscribe(this,"selected"),o.selected=r.includes(o),s.subscribe(this,"selected")})}selectFirstOption(){var e,n;this.disabled||(this.selectedIndex=(n=(e=this.options)===null||e===void 0?void 0:e.findIndex(i=>!i.disabled))!==null&&n!==void 0?n:-1)}selectLastOption(){this.disabled||(this.selectedIndex=$y(this.options,e=>!e.disabled))}selectNextOption(){!this.disabled&&this.selectedIndex0&&(this.selectedIndex=this.selectedIndex-1)}setDefaultSelectedOption(){var e,n;this.selectedIndex=(n=(e=this.options)===null||e===void 0?void 0:e.findIndex(i=>i.defaultSelected))!==null&&n!==void 0?n:-1}setSelectedOptions(){var e,n,i;!((e=this.options)===null||e===void 0)&&e.length&&(this.selectedOptions=[this.options[this.selectedIndex]],this.ariaActiveDescendant=(i=(n=this.firstSelectedOption)===null||n===void 0?void 0:n.id)!==null&&i!==void 0?i:"",this.focusAndScrollOptionIntoView())}slottedOptionsChanged(e,n){this.options=n.reduce((r,o)=>(dp(o)&&r.push(o),r),[]);const i=`${this.options.length}`;this.options.forEach((r,o)=>{r.id||(r.id=es("option-")),r.ariaPosInSet=`${o+1}`,r.ariaSetSize=i}),this.$fastController.isConnected&&(this.setSelectedOptions(),this.setDefaultSelectedOption())}typeaheadBufferChanged(e,n){if(this.$fastController.isConnected){const i=this.getTypeaheadMatches();if(i.length){const r=this.options.indexOf(i[0]);r>-1&&(this.selectedIndex=r)}this.typeaheadExpired=!1}}}Oe.slottedOptionFilter=t=>dp(t)&&!t.hidden;Oe.TYPE_AHEAD_TIMEOUT_MS=1e3;v([w({mode:"boolean"})],Oe.prototype,"disabled",void 0);v([E],Oe.prototype,"selectedIndex",void 0);v([E],Oe.prototype,"selectedOptions",void 0);v([E],Oe.prototype,"slottedOptions",void 0);v([E],Oe.prototype,"typeaheadBuffer",void 0);class An{}v([E],An.prototype,"ariaActiveDescendant",void 0);v([E],An.prototype,"ariaDisabled",void 0);v([E],An.prototype,"ariaExpanded",void 0);v([E],An.prototype,"ariaMultiSelectable",void 0);je(An,q);je(Oe,An);const cl={above:"above",below:"below"};function fa(t){const e=t.parentElement;if(e)return e;{const n=t.getRootNode();if(n.host instanceof HTMLElement)return n.host}return null}function Jy(t,e){let n=e;for(;n!==null;){if(n===t)return!0;n=fa(n)}return!1}const It=document.createElement("div");function Ky(t){return t instanceof ys}class Cu{setProperty(e,n){N.queueUpdate(()=>this.target.setProperty(e,n))}removeProperty(e){N.queueUpdate(()=>this.target.removeProperty(e))}}class e0 extends Cu{constructor(e){super();const n=new CSSStyleSheet;n[Uf]=!0,this.target=n.cssRules[n.insertRule(":host{}")].style,e.$fastController.addStyles(Ve.create([n]))}}class t0 extends Cu{constructor(){super();const e=new CSSStyleSheet;this.target=e.cssRules[e.insertRule(":root{}")].style,document.adoptedStyleSheets=[...document.adoptedStyleSheets,e]}}class n0 extends Cu{constructor(){super(),this.style=document.createElement("style"),document.head.appendChild(this.style);const{sheet:e}=this.style;if(e){const n=e.insertRule(":root{}",e.cssRules.length);this.target=e.cssRules[n].style}}}class hp{constructor(e){this.store=new Map,this.target=null;const n=e.$fastController;this.style=document.createElement("style"),n.addStyles(this.style),L.getNotifier(n).subscribe(this,"isConnected"),this.handleChange(n,"isConnected")}targetChanged(){if(this.target!==null)for(const[e,n]of this.store.entries())this.target.setProperty(e,n)}setProperty(e,n){this.store.set(e,n),N.queueUpdate(()=>{this.target!==null&&this.target.setProperty(e,n)})}removeProperty(e){this.store.delete(e),N.queueUpdate(()=>{this.target!==null&&this.target.removeProperty(e)})}handleChange(e,n){const{sheet:i}=this.style;if(i){const r=i.insertRule(":host{}",i.cssRules.length);this.target=i.cssRules[r].style}else this.target=null}}v([E],hp.prototype,"target",void 0);class i0{constructor(e){this.target=e.style}setProperty(e,n){N.queueUpdate(()=>this.target.setProperty(e,n))}removeProperty(e){N.queueUpdate(()=>this.target.removeProperty(e))}}class he{setProperty(e,n){he.properties[e]=n;for(const i of he.roots.values())Yn.getOrCreate(he.normalizeRoot(i)).setProperty(e,n)}removeProperty(e){delete he.properties[e];for(const n of he.roots.values())Yn.getOrCreate(he.normalizeRoot(n)).removeProperty(e)}static registerRoot(e){const{roots:n}=he;if(!n.has(e)){n.add(e);const i=Yn.getOrCreate(this.normalizeRoot(e));for(const r in he.properties)i.setProperty(r,he.properties[r])}}static unregisterRoot(e){const{roots:n}=he;if(n.has(e)){n.delete(e);const i=Yn.getOrCreate(he.normalizeRoot(e));for(const r in he.properties)i.removeProperty(r)}}static normalizeRoot(e){return e===It?document:e}}he.roots=new Set;he.properties={};const dl=new WeakMap,r0=N.supportsAdoptedStyleSheets?e0:hp,Yn=Object.freeze({getOrCreate(t){if(dl.has(t))return dl.get(t);let e;return t===It?e=new he:t instanceof Document?e=N.supportsAdoptedStyleSheets?new t0:new n0:Ky(t)?e=new r0(t):e=new i0(t),dl.set(t,e),e}});class Ie extends Xf{constructor(e){super(),this.subscribers=new WeakMap,this._appliedTo=new Set,this.name=e.name,e.cssCustomPropertyName!==null&&(this.cssCustomProperty=`--${e.cssCustomPropertyName}`,this.cssVar=`var(${this.cssCustomProperty})`),this.id=Ie.uniqueId(),Ie.tokensById.set(this.id,this)}get appliedTo(){return[...this._appliedTo]}static from(e){return new Ie({name:typeof e=="string"?e:e.name,cssCustomPropertyName:typeof e=="string"?e:e.cssCustomPropertyName===void 0?e.name:e.cssCustomPropertyName})}static isCSSDesignToken(e){return typeof e.cssCustomProperty=="string"}static isDerivedDesignTokenValue(e){return typeof e=="function"}static getTokenById(e){return Ie.tokensById.get(e)}getOrCreateSubscriberSet(e=this){return this.subscribers.get(e)||this.subscribers.set(e,new Set)&&this.subscribers.get(e)}createCSS(){return this.cssVar||""}getValueFor(e){const n=re.getOrCreate(e).get(this);if(n!==void 0)return n;throw new Error(`Value could not be retrieved for token named "${this.name}". Ensure the value is set for ${e} or an ancestor of ${e}.`)}setValueFor(e,n){return this._appliedTo.add(e),n instanceof Ie&&(n=this.alias(n)),re.getOrCreate(e).set(this,n),this}deleteValueFor(e){return this._appliedTo.delete(e),re.existsFor(e)&&re.getOrCreate(e).delete(this),this}withDefault(e){return this.setValueFor(It,e),this}subscribe(e,n){const i=this.getOrCreateSubscriberSet(n);n&&!re.existsFor(n)&&re.getOrCreate(n),i.has(e)||i.add(e)}unsubscribe(e,n){const i=this.subscribers.get(n||this);i&&i.has(e)&&i.delete(e)}notify(e){const n=Object.freeze({token:this,target:e});this.subscribers.has(this)&&this.subscribers.get(this).forEach(i=>i.handleChange(n)),this.subscribers.has(e)&&this.subscribers.get(e).forEach(i=>i.handleChange(n))}alias(e){return n=>e.getValueFor(n)}}Ie.uniqueId=(()=>{let t=0;return()=>(t++,t.toString(16))})();Ie.tokensById=new Map;class o0{startReflection(e,n){e.subscribe(this,n),this.handleChange({token:e,target:n})}stopReflection(e,n){e.unsubscribe(this,n),this.remove(e,n)}handleChange(e){const{token:n,target:i}=e;this.add(n,i)}add(e,n){Yn.getOrCreate(n).setProperty(e.cssCustomProperty,this.resolveCSSValue(re.getOrCreate(n).get(e)))}remove(e,n){Yn.getOrCreate(n).removeProperty(e.cssCustomProperty)}resolveCSSValue(e){return e&&typeof e.createCSS=="function"?e.createCSS():e}}class s0{constructor(e,n,i){this.source=e,this.token=n,this.node=i,this.dependencies=new Set,this.observer=L.binding(e,this,!1),this.observer.handleChange=this.observer.call,this.handleChange()}disconnect(){this.observer.disconnect()}handleChange(){this.node.store.set(this.token,this.observer.observe(this.node.target,nr))}}class l0{constructor(){this.values=new Map}set(e,n){this.values.get(e)!==n&&(this.values.set(e,n),L.getNotifier(this).notify(e.id))}get(e){return L.track(this,e.id),this.values.get(e)}delete(e){this.values.delete(e)}all(){return this.values.entries()}}const Bi=new WeakMap,Mi=new WeakMap;class re{constructor(e){this.target=e,this.store=new l0,this.children=[],this.assignedValues=new Map,this.reflecting=new Set,this.bindingObservers=new Map,this.tokenValueChangeHandler={handleChange:(n,i)=>{const r=Ie.getTokenById(i);r&&(r.notify(this.target),this.updateCSSTokenReflection(n,r))}},Bi.set(e,this),L.getNotifier(this.store).subscribe(this.tokenValueChangeHandler),e instanceof ys?e.$fastController.addBehaviors([this]):e.isConnected&&this.bind()}static getOrCreate(e){return Bi.get(e)||new re(e)}static existsFor(e){return Bi.has(e)}static findParent(e){if(It!==e.target){let n=fa(e.target);for(;n!==null;){if(Bi.has(n))return Bi.get(n);n=fa(n)}return re.getOrCreate(It)}return null}static findClosestAssignedNode(e,n){let i=n;do{if(i.has(e))return i;i=i.parent?i.parent:i.target!==It?re.getOrCreate(It):null}while(i!==null);return null}get parent(){return Mi.get(this)||null}updateCSSTokenReflection(e,n){if(Ie.isCSSDesignToken(n)){const i=this.parent,r=this.isReflecting(n);if(i){const o=i.get(n),s=e.get(n);o!==s&&!r?this.reflectToCSS(n):o===s&&r&&this.stopReflectToCSS(n)}else r||this.reflectToCSS(n)}}has(e){return this.assignedValues.has(e)}get(e){const n=this.store.get(e);if(n!==void 0)return n;const i=this.getRaw(e);if(i!==void 0)return this.hydrate(e,i),this.get(e)}getRaw(e){var n;return this.assignedValues.has(e)?this.assignedValues.get(e):(n=re.findClosestAssignedNode(e,this))===null||n===void 0?void 0:n.getRaw(e)}set(e,n){Ie.isDerivedDesignTokenValue(this.assignedValues.get(e))&&this.tearDownBindingObserver(e),this.assignedValues.set(e,n),Ie.isDerivedDesignTokenValue(n)?this.setupBindingObserver(e,n):this.store.set(e,n)}delete(e){this.assignedValues.delete(e),this.tearDownBindingObserver(e);const n=this.getRaw(e);n?this.hydrate(e,n):this.store.delete(e)}bind(){const e=re.findParent(this);e&&e.appendChild(this);for(const n of this.assignedValues.keys())n.notify(this.target)}unbind(){this.parent&&Mi.get(this).removeChild(this)}appendChild(e){e.parent&&Mi.get(e).removeChild(e);const n=this.children.filter(i=>e.contains(i));Mi.set(e,this),this.children.push(e),n.forEach(i=>e.appendChild(i)),L.getNotifier(this.store).subscribe(e);for(const[i,r]of this.store.all())e.hydrate(i,this.bindingObservers.has(i)?this.getRaw(i):r)}removeChild(e){const n=this.children.indexOf(e);return n!==-1&&this.children.splice(n,1),L.getNotifier(this.store).unsubscribe(e),e.parent===this?Mi.delete(e):!1}contains(e){return Jy(this.target,e.target)}reflectToCSS(e){this.isReflecting(e)||(this.reflecting.add(e),re.cssCustomPropertyReflector.startReflection(e,this.target))}stopReflectToCSS(e){this.isReflecting(e)&&(this.reflecting.delete(e),re.cssCustomPropertyReflector.stopReflection(e,this.target))}isReflecting(e){return this.reflecting.has(e)}handleChange(e,n){const i=Ie.getTokenById(n);i&&(this.hydrate(i,this.getRaw(i)),this.updateCSSTokenReflection(this.store,i))}hydrate(e,n){if(!this.has(e)){const i=this.bindingObservers.get(e);Ie.isDerivedDesignTokenValue(n)?i?i.source!==n&&(this.tearDownBindingObserver(e),this.setupBindingObserver(e,n)):this.setupBindingObserver(e,n):(i&&this.tearDownBindingObserver(e),this.store.set(e,n))}}setupBindingObserver(e,n){const i=new s0(n,e,this);return this.bindingObservers.set(e,i),i}tearDownBindingObserver(e){return this.bindingObservers.has(e)?(this.bindingObservers.get(e).disconnect(),this.bindingObservers.delete(e),!0):!1}}re.cssCustomPropertyReflector=new o0;v([E],re.prototype,"children",void 0);function a0(t){return Ie.from(t)}const fp=Object.freeze({create:a0,notifyConnection(t){return!t.isConnected||!re.existsFor(t)?!1:(re.getOrCreate(t).bind(),!0)},notifyDisconnection(t){return t.isConnected||!re.existsFor(t)?!1:(re.getOrCreate(t).unbind(),!0)},registerRoot(t=It){he.registerRoot(t)},unregisterRoot(t=It){he.unregisterRoot(t)}}),hl=Object.freeze({definitionCallbackOnly:null,ignoreDuplicate:Symbol()}),fl=new Map,$o=new Map;let ii=null;const Vi=Y.createInterface(t=>t.cachedCallback(e=>(ii===null&&(ii=new mp(null,e)),ii))),pp=Object.freeze({tagFor(t){return $o.get(t)},responsibleFor(t){const e=t.$$designSystem$$;return e||Y.findResponsibleContainer(t).get(Vi)},getOrCreate(t){if(!t)return ii===null&&(ii=Y.getOrCreateDOMContainer().get(Vi)),ii;const e=t.$$designSystem$$;if(e)return e;const n=Y.getOrCreateDOMContainer(t);if(n.has(Vi,!1))return n.get(Vi);{const i=new mp(t,n);return n.register(Sr.instance(Vi,i)),i}}});function u0(t,e,n){return typeof t=="string"?{name:t,type:e,callback:n}:t}class mp{constructor(e,n){this.owner=e,this.container=n,this.designTokensInitialized=!1,this.prefix="fast",this.shadowRootMode=void 0,this.disambiguate=()=>hl.definitionCallbackOnly,e!==null&&(e.$$designSystem$$=this)}withPrefix(e){return this.prefix=e,this}withShadowRootMode(e){return this.shadowRootMode=e,this}withElementDisambiguation(e){return this.disambiguate=e,this}withDesignTokenRoot(e){return this.designTokenRoot=e,this}register(...e){const n=this.container,i=[],r=this.disambiguate,o=this.shadowRootMode,s={elementPrefix:this.prefix,tryDefineElement(l,a,u){const c=u0(l,a,u),{name:h,callback:f,baseClass:g}=c;let{type:y}=c,k=h,A=fl.get(k),p=!0;for(;A;){const d=r(k,y,A);switch(d){case hl.ignoreDuplicate:return;case hl.definitionCallbackOnly:p=!1,A=void 0;break;default:k=d,A=fl.get(k);break}}p&&(($o.has(y)||y===G)&&(y=class extends y{}),fl.set(k,y),$o.set(y,k),g&&$o.set(g,k)),i.push(new c0(n,k,y,o,f,p))}};this.designTokensInitialized||(this.designTokensInitialized=!0,this.designTokenRoot!==null&&fp.registerRoot(this.designTokenRoot)),n.registerWithContext(s,...e);for(const l of i)l.callback(l),l.willDefine&&l.definition!==null&&l.definition.define();return this}}class c0{constructor(e,n,i,r,o,s){this.container=e,this.name=n,this.type=i,this.shadowRootMode=r,this.callback=o,this.willDefine=s,this.definition=null}definePresentation(e){lp.define(this.name,e,this.container)}defineElement(e){this.definition=new Dr(this.type,Object.assign(Object.assign({},e),{name:this.name}))}tagFor(e){return pp.tagFor(e)}}const d0=(t,e)=>V` + +`,h0={separator:"separator",presentation:"presentation"};let Su=class extends G{constructor(){super(...arguments),this.role=h0.separator,this.orientation=bu.horizontal}};v([w],Su.prototype,"role",void 0);v([w],Su.prototype,"orientation",void 0);const f0=(t,e)=>V` + +`;class ks extends Oe{constructor(){super(...arguments),this.activeIndex=-1,this.rangeStartIndex=-1}get activeOption(){return this.options[this.activeIndex]}get checkedOptions(){var e;return(e=this.options)===null||e===void 0?void 0:e.filter(n=>n.checked)}get firstSelectedOptionIndex(){return this.options.indexOf(this.firstSelectedOption)}activeIndexChanged(e,n){var i,r;this.ariaActiveDescendant=(r=(i=this.options[n])===null||i===void 0?void 0:i.id)!==null&&r!==void 0?r:"",this.focusAndScrollOptionIntoView()}checkActiveIndex(){if(!this.multiple)return;const e=this.activeOption;e&&(e.checked=!0)}checkFirstOption(e=!1){e?(this.rangeStartIndex===-1&&(this.rangeStartIndex=this.activeIndex+1),this.options.forEach((n,i)=>{n.checked=lo(i,this.rangeStartIndex)})):this.uncheckAllOptions(),this.activeIndex=0,this.checkActiveIndex()}checkLastOption(e=!1){e?(this.rangeStartIndex===-1&&(this.rangeStartIndex=this.activeIndex),this.options.forEach((n,i)=>{n.checked=lo(i,this.rangeStartIndex,this.options.length)})):this.uncheckAllOptions(),this.activeIndex=this.options.length-1,this.checkActiveIndex()}connectedCallback(){super.connectedCallback(),this.addEventListener("focusout",this.focusoutHandler)}disconnectedCallback(){this.removeEventListener("focusout",this.focusoutHandler),super.disconnectedCallback()}checkNextOption(e=!1){e?(this.rangeStartIndex===-1&&(this.rangeStartIndex=this.activeIndex),this.options.forEach((n,i)=>{n.checked=lo(i,this.rangeStartIndex,this.activeIndex+1)})):this.uncheckAllOptions(),this.activeIndex+=this.activeIndex{n.checked=lo(i,this.activeIndex,this.rangeStartIndex)})):this.uncheckAllOptions(),this.activeIndex-=this.activeIndex>0?1:0,this.checkActiveIndex()}clickHandler(e){var n;if(!this.multiple)return super.clickHandler(e);const i=(n=e.target)===null||n===void 0?void 0:n.closest("[role=option]");if(!(!i||i.disabled))return this.uncheckAllOptions(),this.activeIndex=this.options.indexOf(i),this.checkActiveIndex(),this.toggleSelectedForAllCheckedOptions(),!0}focusAndScrollOptionIntoView(){super.focusAndScrollOptionIntoView(this.activeOption)}focusinHandler(e){if(!this.multiple)return super.focusinHandler(e);!this.shouldSkipFocus&&e.target===e.currentTarget&&(this.uncheckAllOptions(),this.activeIndex===-1&&(this.activeIndex=this.firstSelectedOptionIndex!==-1?this.firstSelectedOptionIndex:0),this.checkActiveIndex(),this.setSelectedOptions(),this.focusAndScrollOptionIntoView()),this.shouldSkipFocus=!1}focusoutHandler(e){this.multiple&&this.uncheckAllOptions()}keydownHandler(e){if(!this.multiple)return super.keydownHandler(e);if(this.disabled)return!0;const{key:n,shiftKey:i}=e;switch(this.shouldSkipFocus=!1,n){case Ci:{this.checkFirstOption(i);return}case Pn:{this.checkNextOption(i);return}case Dn:{this.checkPreviousOption(i);return}case Si:{this.checkLastOption(i);return}case xu:return this.focusAndScrollOptionIntoView(),!0;case ws:return this.uncheckAllOptions(),this.checkActiveIndex(),!0;case _r:if(e.preventDefault(),this.typeAheadExpired){this.toggleSelectedForAllCheckedOptions();return}default:return n.length===1&&this.handleTypeAhead(`${n}`),!0}}mousedownHandler(e){if(e.offsetX>=0&&e.offsetX<=this.scrollWidth)return super.mousedownHandler(e)}multipleChanged(e,n){var i;this.ariaMultiSelectable=n?"true":null,(i=this.options)===null||i===void 0||i.forEach(r=>{r.checked=n?!1:void 0}),this.setSelectedOptions()}setSelectedOptions(){if(!this.multiple){super.setSelectedOptions();return}this.$fastController.isConnected&&this.options&&(this.selectedOptions=this.options.filter(e=>e.selected),this.focusAndScrollOptionIntoView())}sizeChanged(e,n){var i;const r=Math.max(0,parseInt((i=n==null?void 0:n.toFixed())!==null&&i!==void 0?i:"",10));r!==n&&N.queueUpdate(()=>{this.size=r})}toggleSelectedForAllCheckedOptions(){const e=this.checkedOptions.filter(i=>!i.disabled),n=!e.every(i=>i.selected);e.forEach(i=>i.selected=n),this.selectedIndex=this.options.indexOf(e[e.length-1]),this.setSelectedOptions()}typeaheadBufferChanged(e,n){if(!this.multiple){super.typeaheadBufferChanged(e,n);return}if(this.$fastController.isConnected){const i=this.getTypeaheadMatches(),r=this.options.indexOf(i[0]);r>-1&&(this.activeIndex=r,this.uncheckAllOptions(),this.checkActiveIndex()),this.typeAheadExpired=!1}}uncheckAllOptions(e=!1){this.options.forEach(n=>n.checked=this.multiple?!1:void 0),e||(this.rangeStartIndex=-1)}}v([E],ks.prototype,"activeIndex",void 0);v([w({mode:"boolean"})],ks.prototype,"multiple",void 0);v([w({converter:mt})],ks.prototype,"size",void 0);class p0 extends G{}class m0 extends Nr(p0){constructor(){super(...arguments),this.proxy=document.createElement("input")}}const v0={email:"email",password:"password",tel:"tel",text:"text",url:"url"};let Xe=class extends m0{constructor(){super(...arguments),this.type=v0.text}readOnlyChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.readOnly=this.readOnly,this.validate())}autofocusChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.autofocus=this.autofocus,this.validate())}placeholderChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.placeholder=this.placeholder)}typeChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.type=this.type,this.validate())}listChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.setAttribute("list",this.list),this.validate())}maxlengthChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.maxLength=this.maxlength,this.validate())}minlengthChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.minLength=this.minlength,this.validate())}patternChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.pattern=this.pattern,this.validate())}sizeChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.size=this.size)}spellcheckChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.spellcheck=this.spellcheck)}connectedCallback(){super.connectedCallback(),this.proxy.setAttribute("type",this.type),this.validate(),this.autofocus&&N.queueUpdate(()=>{this.focus()})}select(){this.control.select(),this.$emit("select")}handleTextInput(){this.value=this.control.value}handleChange(){this.$emit("change")}validate(){super.validate(this.control)}};v([w({attribute:"readonly",mode:"boolean"})],Xe.prototype,"readOnly",void 0);v([w({mode:"boolean"})],Xe.prototype,"autofocus",void 0);v([w],Xe.prototype,"placeholder",void 0);v([w],Xe.prototype,"type",void 0);v([w],Xe.prototype,"list",void 0);v([w({converter:mt})],Xe.prototype,"maxlength",void 0);v([w({converter:mt})],Xe.prototype,"minlength",void 0);v([w],Xe.prototype,"pattern",void 0);v([w({converter:mt})],Xe.prototype,"size",void 0);v([w({mode:"boolean"})],Xe.prototype,"spellcheck",void 0);v([E],Xe.prototype,"defaultSlottedNodes",void 0);class $u{}je($u,q);je(Xe,bi,$u);const dd=44,g0=(t,e)=>V` + +`;class Ei extends G{constructor(){super(...arguments),this.percentComplete=0}valueChanged(){this.$fastController.isConnected&&this.updatePercentComplete()}minChanged(){this.$fastController.isConnected&&this.updatePercentComplete()}maxChanged(){this.$fastController.isConnected&&this.updatePercentComplete()}connectedCallback(){super.connectedCallback(),this.updatePercentComplete()}updatePercentComplete(){const e=typeof this.min=="number"?this.min:0,n=typeof this.max=="number"?this.max:100,i=typeof this.value=="number"?this.value:0,r=n-e;this.percentComplete=r===0?0:Math.fround((i-e)/r*100)}}v([w({converter:mt})],Ei.prototype,"value",void 0);v([w({converter:mt})],Ei.prototype,"min",void 0);v([w({converter:mt})],Ei.prototype,"max",void 0);v([w({mode:"boolean"})],Ei.prototype,"paused",void 0);v([E],Ei.prototype,"percentComplete",void 0);const y0=(t,e)=>V` + +`;let un=class extends G{constructor(){super(...arguments),this.orientation=bu.horizontal,this.radioChangeHandler=e=>{const n=e.target;n.checked&&(this.slottedRadioButtons.forEach(i=>{i!==n&&(i.checked=!1,this.isInsideFoundationToolbar||i.setAttribute("tabindex","-1"))}),this.selectedRadio=n,this.value=n.value,n.setAttribute("tabindex","0"),this.focusedRadio=n),e.stopPropagation()},this.moveToRadioByIndex=(e,n)=>{const i=e[n];this.isInsideToolbar||(i.setAttribute("tabindex","0"),i.readOnly?this.slottedRadioButtons.forEach(r=>{r!==i&&r.setAttribute("tabindex","-1")}):(i.checked=!0,this.selectedRadio=i)),this.focusedRadio=i,i.focus()},this.moveRightOffGroup=()=>{var e;(e=this.nextElementSibling)===null||e===void 0||e.focus()},this.moveLeftOffGroup=()=>{var e;(e=this.previousElementSibling)===null||e===void 0||e.focus()},this.focusOutHandler=e=>{const n=this.slottedRadioButtons,i=e.target,r=i!==null?n.indexOf(i):0,o=this.focusedRadio?n.indexOf(this.focusedRadio):-1;return(o===0&&r===o||o===n.length-1&&o===r)&&(this.selectedRadio?(this.focusedRadio=this.selectedRadio,this.isInsideFoundationToolbar||(this.selectedRadio.setAttribute("tabindex","0"),n.forEach(s=>{s!==this.selectedRadio&&s.setAttribute("tabindex","-1")}))):(this.focusedRadio=n[0],this.focusedRadio.setAttribute("tabindex","0"),n.forEach(s=>{s!==this.focusedRadio&&s.setAttribute("tabindex","-1")}))),!0},this.clickHandler=e=>{const n=e.target;if(n){const i=this.slottedRadioButtons;n.checked||i.indexOf(n)===0?(n.setAttribute("tabindex","0"),this.selectedRadio=n):(n.setAttribute("tabindex","-1"),this.selectedRadio=null),this.focusedRadio=n}e.preventDefault()},this.shouldMoveOffGroupToTheRight=(e,n,i)=>e===n.length&&this.isInsideToolbar&&i===Er,this.shouldMoveOffGroupToTheLeft=(e,n)=>(this.focusedRadio?e.indexOf(this.focusedRadio)-1:0)<0&&this.isInsideToolbar&&n===$r,this.checkFocusedRadio=()=>{this.focusedRadio!==null&&!this.focusedRadio.readOnly&&!this.focusedRadio.checked&&(this.focusedRadio.checked=!0,this.focusedRadio.setAttribute("tabindex","0"),this.focusedRadio.focus(),this.selectedRadio=this.focusedRadio)},this.moveRight=e=>{const n=this.slottedRadioButtons;let i=0;if(i=this.focusedRadio?n.indexOf(this.focusedRadio)+1:1,this.shouldMoveOffGroupToTheRight(i,n,e.key)){this.moveRightOffGroup();return}else i===n.length&&(i=0);for(;i1;)if(n[i].disabled){if(this.focusedRadio&&i===n.indexOf(this.focusedRadio))break;if(i+1>=n.length){if(this.isInsideToolbar)break;i=0}else i+=1}else{this.moveToRadioByIndex(n,i);break}},this.moveLeft=e=>{const n=this.slottedRadioButtons;let i=0;if(i=this.focusedRadio?n.indexOf(this.focusedRadio)-1:0,i=i<0?n.length-1:i,this.shouldMoveOffGroupToTheLeft(n,e.key)){this.moveLeftOffGroup();return}for(;i>=0&&n.length>1;)if(n[i].disabled){if(this.focusedRadio&&i===n.indexOf(this.focusedRadio))break;i-1<0?i=n.length-1:i-=1}else{this.moveToRadioByIndex(n,i);break}},this.keydownHandler=e=>{const n=e.key;if(n in Ay&&this.isInsideFoundationToolbar)return!0;switch(n){case Ar:{this.checkFocusedRadio();break}case Er:case Pn:{this.direction===vi.ltr?this.moveRight(e):this.moveLeft(e);break}case $r:case Dn:{this.direction===vi.ltr?this.moveLeft(e):this.moveRight(e);break}default:return!0}}}readOnlyChanged(){this.slottedRadioButtons!==void 0&&this.slottedRadioButtons.forEach(e=>{this.readOnly?e.readOnly=!0:e.readOnly=!1})}disabledChanged(){this.slottedRadioButtons!==void 0&&this.slottedRadioButtons.forEach(e=>{this.disabled?e.disabled=!0:e.disabled=!1})}nameChanged(){this.slottedRadioButtons&&this.slottedRadioButtons.forEach(e=>{e.setAttribute("name",this.name)})}valueChanged(){this.slottedRadioButtons&&this.slottedRadioButtons.forEach(e=>{e.value===this.value&&(e.checked=!0,this.selectedRadio=e)}),this.$emit("change")}slottedRadioButtonsChanged(e,n){this.slottedRadioButtons&&this.slottedRadioButtons.length>0&&this.setupRadioButtons()}get parentToolbar(){return this.closest('[role="toolbar"]')}get isInsideToolbar(){var e;return(e=this.parentToolbar)!==null&&e!==void 0?e:!1}get isInsideFoundationToolbar(){var e;return!!(!((e=this.parentToolbar)===null||e===void 0)&&e.$fastController)}connectedCallback(){super.connectedCallback(),this.direction=Fy(this),this.setupRadioButtons()}disconnectedCallback(){this.slottedRadioButtons.forEach(e=>{e.removeEventListener("change",this.radioChangeHandler)})}setupRadioButtons(){const e=this.slottedRadioButtons.filter(r=>r.hasAttribute("checked")),n=e?e.length:0;if(n>1){const r=e[n-1];r.checked=!0}let i=!1;if(this.slottedRadioButtons.forEach(r=>{this.name!==void 0&&r.setAttribute("name",this.name),this.disabled&&(r.disabled=!0),this.readOnly&&(r.readOnly=!0),this.value&&this.value===r.value?(this.selectedRadio=r,this.focusedRadio=r,r.checked=!0,r.setAttribute("tabindex","0"),i=!0):(this.isInsideFoundationToolbar||r.setAttribute("tabindex","-1"),r.checked=!1),r.addEventListener("change",this.radioChangeHandler)}),this.value===void 0&&this.slottedRadioButtons.length>0){const r=this.slottedRadioButtons.filter(s=>s.hasAttribute("checked")),o=r!==null?r.length:0;if(o>0&&!i){const s=r[o-1];s.checked=!0,this.focusedRadio=s,s.setAttribute("tabindex","0")}else this.slottedRadioButtons[0].setAttribute("tabindex","0"),this.focusedRadio=this.slottedRadioButtons[0]}}};v([w({attribute:"readonly",mode:"boolean"})],un.prototype,"readOnly",void 0);v([w({attribute:"disabled",mode:"boolean"})],un.prototype,"disabled",void 0);v([w],un.prototype,"name",void 0);v([w],un.prototype,"value",void 0);v([w],un.prototype,"orientation",void 0);v([E],un.prototype,"childItems",void 0);v([E],un.prototype,"slottedRadioButtons",void 0);const w0=(t,e)=>V` + +`;class b0 extends G{}class x0 extends cp(b0){constructor(){super(...arguments),this.proxy=document.createElement("input")}}let Cs=class extends x0{constructor(){super(),this.initialValue="on",this.keypressHandler=e=>{switch(e.key){case _r:!this.checked&&!this.readOnly&&(this.checked=!0);return}return!0},this.proxy.setAttribute("type","radio")}readOnlyChanged(){this.proxy instanceof HTMLInputElement&&(this.proxy.readOnly=this.readOnly)}defaultCheckedChanged(){var e;this.$fastController.isConnected&&!this.dirtyChecked&&(this.isInsideRadioGroup()||(this.checked=(e=this.defaultChecked)!==null&&e!==void 0?e:!1,this.dirtyChecked=!1))}connectedCallback(){var e,n;super.connectedCallback(),this.validate(),((e=this.parentElement)===null||e===void 0?void 0:e.getAttribute("role"))!=="radiogroup"&&this.getAttribute("tabindex")===null&&(this.disabled||this.setAttribute("tabindex","0")),this.checkedAttribute&&(this.dirtyChecked||this.isInsideRadioGroup()||(this.checked=(n=this.defaultChecked)!==null&&n!==void 0?n:!1,this.dirtyChecked=!1))}isInsideRadioGroup(){return this.closest("[role=radiogroup]")!==null}clickHandler(e){!this.disabled&&!this.readOnly&&!this.checked&&(this.checked=!0)}};v([w({attribute:"readonly",mode:"boolean"})],Cs.prototype,"readOnly",void 0);v([E],Cs.prototype,"name",void 0);v([E],Cs.prototype,"defaultSlottedNodes",void 0);function k0(t,e,n){return t.nodeType!==Node.TEXT_NODE?!0:typeof t.nodeValue=="string"&&!!t.nodeValue.trim().length}class C0 extends ks{}class S0 extends Nr(C0){constructor(){super(...arguments),this.proxy=document.createElement("select")}}class cn extends S0{constructor(){super(...arguments),this.open=!1,this.forcedPosition=!1,this.listboxId=es("listbox-"),this.maxHeight=0}openChanged(e,n){if(this.collapsible){if(this.open){this.ariaControls=this.listboxId,this.ariaExpanded="true",this.setPositioning(),this.focusAndScrollOptionIntoView(),this.indexWhenOpened=this.selectedIndex,N.queueUpdate(()=>this.focus());return}this.ariaControls="",this.ariaExpanded="false"}}get collapsible(){return!(this.multiple||typeof this.size=="number")}get value(){return L.track(this,"value"),this._value}set value(e){var n,i,r,o,s,l,a;const u=`${this._value}`;if(!((n=this._options)===null||n===void 0)&&n.length){const c=this._options.findIndex(g=>g.value===e),h=(r=(i=this._options[this.selectedIndex])===null||i===void 0?void 0:i.value)!==null&&r!==void 0?r:null,f=(s=(o=this._options[c])===null||o===void 0?void 0:o.value)!==null&&s!==void 0?s:null;(c===-1||h!==f)&&(e="",this.selectedIndex=c),e=(a=(l=this.firstSelectedOption)===null||l===void 0?void 0:l.value)!==null&&a!==void 0?a:e}u!==e&&(this._value=e,super.valueChanged(u,e),L.notify(this,"value"),this.updateDisplayValue())}updateValue(e){var n,i;this.$fastController.isConnected&&(this.value=(i=(n=this.firstSelectedOption)===null||n===void 0?void 0:n.value)!==null&&i!==void 0?i:""),e&&(this.$emit("input"),this.$emit("change",this,{bubbles:!0,composed:void 0}))}selectedIndexChanged(e,n){super.selectedIndexChanged(e,n),this.updateValue()}positionChanged(e,n){this.positionAttribute=n,this.setPositioning()}setPositioning(){const e=this.getBoundingClientRect(),i=window.innerHeight-e.bottom;this.position=this.forcedPosition?this.positionAttribute:e.top>i?cl.above:cl.below,this.positionAttribute=this.forcedPosition?this.positionAttribute:this.position,this.maxHeight=this.position===cl.above?~~e.top:~~i}get displayValue(){var e,n;return L.track(this,"displayValue"),(n=(e=this.firstSelectedOption)===null||e===void 0?void 0:e.text)!==null&&n!==void 0?n:""}disabledChanged(e,n){super.disabledChanged&&super.disabledChanged(e,n),this.ariaDisabled=this.disabled?"true":"false"}formResetCallback(){this.setProxyOptions(),super.setDefaultSelectedOption(),this.selectedIndex===-1&&(this.selectedIndex=0)}clickHandler(e){if(!this.disabled){if(this.open){const n=e.target.closest("option,[role=option]");if(n&&n.disabled)return}return super.clickHandler(e),this.open=this.collapsible&&!this.open,!this.open&&this.indexWhenOpened!==this.selectedIndex&&this.updateValue(!0),!0}}focusoutHandler(e){var n;if(super.focusoutHandler(e),!this.open)return!0;const i=e.relatedTarget;if(this.isSameNode(i)){this.focus();return}!((n=this.options)===null||n===void 0)&&n.includes(i)||(this.open=!1,this.indexWhenOpened!==this.selectedIndex&&this.updateValue(!0))}handleChange(e,n){super.handleChange(e,n),n==="value"&&this.updateValue()}slottedOptionsChanged(e,n){this.options.forEach(i=>{L.getNotifier(i).unsubscribe(this,"value")}),super.slottedOptionsChanged(e,n),this.options.forEach(i=>{L.getNotifier(i).subscribe(this,"value")}),this.setProxyOptions(),this.updateValue()}mousedownHandler(e){var n;return e.offsetX>=0&&e.offsetX<=((n=this.listbox)===null||n===void 0?void 0:n.scrollWidth)?super.mousedownHandler(e):this.collapsible}multipleChanged(e,n){super.multipleChanged(e,n),this.proxy&&(this.proxy.multiple=n)}selectedOptionsChanged(e,n){var i;super.selectedOptionsChanged(e,n),(i=this.options)===null||i===void 0||i.forEach((r,o)=>{var s;const l=(s=this.proxy)===null||s===void 0?void 0:s.options.item(o);l&&(l.selected=r.selected)})}setDefaultSelectedOption(){var e;const n=(e=this.options)!==null&&e!==void 0?e:Array.from(this.children).filter(Oe.slottedOptionFilter),i=n==null?void 0:n.findIndex(r=>r.hasAttribute("selected")||r.selected||r.value===this.value);if(i!==-1){this.selectedIndex=i;return}this.selectedIndex=0}setProxyOptions(){this.proxy instanceof HTMLSelectElement&&this.options&&(this.proxy.options.length=0,this.options.forEach(e=>{const n=e.proxy||(e instanceof HTMLOptionElement?e.cloneNode():null);n&&this.proxy.options.add(n)}))}keydownHandler(e){super.keydownHandler(e);const n=e.key||e.key.charCodeAt(0);switch(n){case _r:{e.preventDefault(),this.collapsible&&this.typeAheadExpired&&(this.open=!this.open);break}case Ci:case Si:{e.preventDefault();break}case Ar:{e.preventDefault(),this.open=!this.open;break}case ws:{this.collapsible&&this.open&&(e.preventDefault(),this.open=!1);break}case xu:return this.collapsible&&this.open&&(e.preventDefault(),this.open=!1),!0}return!this.open&&this.indexWhenOpened!==this.selectedIndex&&(this.updateValue(!0),this.indexWhenOpened=this.selectedIndex),!(n===Pn||n===Dn)}connectedCallback(){super.connectedCallback(),this.forcedPosition=!!this.positionAttribute,this.addEventListener("contentchange",this.updateDisplayValue)}disconnectedCallback(){this.removeEventListener("contentchange",this.updateDisplayValue),super.disconnectedCallback()}sizeChanged(e,n){super.sizeChanged(e,n),this.proxy&&(this.proxy.size=n)}updateDisplayValue(){this.collapsible&&L.notify(this,"displayValue")}}v([w({attribute:"open",mode:"boolean"})],cn.prototype,"open",void 0);v([Tg],cn.prototype,"collapsible",null);v([E],cn.prototype,"control",void 0);v([w({attribute:"position"})],cn.prototype,"positionAttribute",void 0);v([E],cn.prototype,"position",void 0);v([E],cn.prototype,"maxHeight",void 0);class Eu{}v([E],Eu.prototype,"ariaControls",void 0);je(Eu,An);je(cn,bi,Eu);const $0=(t,e)=>V` + +`,E0=(t,e)=>V` + +`;class T0 extends G{}const I0=(t,e)=>V` + +`;class vp extends G{}v([w({mode:"boolean"})],vp.prototype,"disabled",void 0);const R0=(t,e)=>V` + +`,pa={vertical:"vertical",horizontal:"horizontal"};class Nt extends G{constructor(){super(...arguments),this.orientation=pa.horizontal,this.activeindicator=!0,this.showActiveIndicator=!0,this.prevActiveTabIndex=0,this.activeTabIndex=0,this.ticking=!1,this.change=()=>{this.$emit("change",this.activetab)},this.isDisabledElement=e=>e.getAttribute("aria-disabled")==="true",this.isHiddenElement=e=>e.hasAttribute("hidden"),this.isFocusableElement=e=>!this.isDisabledElement(e)&&!this.isHiddenElement(e),this.setTabs=()=>{const e="gridColumn",n="gridRow",i=this.isHorizontal()?e:n;this.activeTabIndex=this.getActiveIndex(),this.showActiveIndicator=!1,this.tabs.forEach((r,o)=>{if(r.slot==="tab"){const s=this.activeTabIndex===o&&this.isFocusableElement(r);this.activeindicator&&this.isFocusableElement(r)&&(this.showActiveIndicator=!0);const l=this.tabIds[o],a=this.tabpanelIds[o];r.setAttribute("id",l),r.setAttribute("aria-selected",s?"true":"false"),r.setAttribute("aria-controls",a),r.addEventListener("click",this.handleTabClick),r.addEventListener("keydown",this.handleTabKeyDown),r.setAttribute("tabindex",s?"0":"-1"),s&&(this.activetab=r,this.activeid=l)}r.style[e]="",r.style[n]="",r.style[i]=`${o+1}`,this.isHorizontal()?r.classList.remove("vertical"):r.classList.add("vertical")})},this.setTabPanels=()=>{this.tabpanels.forEach((e,n)=>{const i=this.tabIds[n],r=this.tabpanelIds[n];e.setAttribute("id",r),e.setAttribute("aria-labelledby",i),this.activeTabIndex!==n?e.setAttribute("hidden",""):e.removeAttribute("hidden")})},this.handleTabClick=e=>{const n=e.currentTarget;n.nodeType===1&&this.isFocusableElement(n)&&(this.prevActiveTabIndex=this.activeTabIndex,this.activeTabIndex=this.tabs.indexOf(n),this.setComponent())},this.handleTabKeyDown=e=>{if(this.isHorizontal())switch(e.key){case $r:e.preventDefault(),this.adjustBackward(e);break;case Er:e.preventDefault(),this.adjustForward(e);break}else switch(e.key){case Dn:e.preventDefault(),this.adjustBackward(e);break;case Pn:e.preventDefault(),this.adjustForward(e);break}switch(e.key){case Ci:e.preventDefault(),this.adjust(-this.activeTabIndex);break;case Si:e.preventDefault(),this.adjust(this.tabs.length-this.activeTabIndex-1);break}},this.adjustForward=e=>{const n=this.tabs;let i=0;for(i=this.activetab?n.indexOf(this.activetab)+1:1,i===n.length&&(i=0);i1;)if(this.isFocusableElement(n[i])){this.moveToTabByIndex(n,i);break}else{if(this.activetab&&i===n.indexOf(this.activetab))break;i+1>=n.length?i=0:i+=1}},this.adjustBackward=e=>{const n=this.tabs;let i=0;for(i=this.activetab?n.indexOf(this.activetab)-1:0,i=i<0?n.length-1:i;i>=0&&n.length>1;)if(this.isFocusableElement(n[i])){this.moveToTabByIndex(n,i);break}else i-1<0?i=n.length-1:i-=1},this.moveToTabByIndex=(e,n)=>{const i=e[n];this.activetab=i,this.prevActiveTabIndex=this.activeTabIndex,this.activeTabIndex=n,i.focus(),this.setComponent()}}orientationChanged(){this.$fastController.isConnected&&(this.setTabs(),this.setTabPanels(),this.handleActiveIndicatorPosition())}activeidChanged(e,n){this.$fastController.isConnected&&this.tabs.length<=this.tabpanels.length&&(this.prevActiveTabIndex=this.tabs.findIndex(i=>i.id===e),this.setTabs(),this.setTabPanels(),this.handleActiveIndicatorPosition())}tabsChanged(){this.$fastController.isConnected&&this.tabs.length<=this.tabpanels.length&&(this.tabIds=this.getTabIds(),this.tabpanelIds=this.getTabPanelIds(),this.setTabs(),this.setTabPanels(),this.handleActiveIndicatorPosition())}tabpanelsChanged(){this.$fastController.isConnected&&this.tabpanels.length<=this.tabs.length&&(this.tabIds=this.getTabIds(),this.tabpanelIds=this.getTabPanelIds(),this.setTabs(),this.setTabPanels(),this.handleActiveIndicatorPosition())}getActiveIndex(){return this.activeid!==void 0?this.tabIds.indexOf(this.activeid)===-1?0:this.tabIds.indexOf(this.activeid):0}getTabIds(){return this.tabs.map(e=>{var n;return(n=e.getAttribute("id"))!==null&&n!==void 0?n:`tab-${es()}`})}getTabPanelIds(){return this.tabpanels.map(e=>{var n;return(n=e.getAttribute("id"))!==null&&n!==void 0?n:`panel-${es()}`})}setComponent(){this.activeTabIndex!==this.prevActiveTabIndex&&(this.activeid=this.tabIds[this.activeTabIndex],this.focusTab(),this.change())}isHorizontal(){return this.orientation===pa.horizontal}handleActiveIndicatorPosition(){this.showActiveIndicator&&this.activeindicator&&this.activeTabIndex!==this.prevActiveTabIndex&&(this.ticking?this.ticking=!1:(this.ticking=!0,this.animateActiveIndicator()))}animateActiveIndicator(){this.ticking=!0;const e=this.isHorizontal()?"gridColumn":"gridRow",n=this.isHorizontal()?"translateX":"translateY",i=this.isHorizontal()?"offsetLeft":"offsetTop",r=this.activeIndicatorRef[i];this.activeIndicatorRef.style[e]=`${this.activeTabIndex+1}`;const o=this.activeIndicatorRef[i];this.activeIndicatorRef.style[e]=`${this.prevActiveTabIndex+1}`;const s=o-r;this.activeIndicatorRef.style.transform=`${n}(${s}px)`,this.activeIndicatorRef.classList.add("activeIndicatorTransition"),this.activeIndicatorRef.addEventListener("transitionend",()=>{this.ticking=!1,this.activeIndicatorRef.style[e]=`${this.activeTabIndex+1}`,this.activeIndicatorRef.style.transform=`${n}(0px)`,this.activeIndicatorRef.classList.remove("activeIndicatorTransition")})}adjust(e){const n=this.tabs.filter(s=>this.isFocusableElement(s)),i=n.indexOf(this.activetab),r=_y(0,n.length-1,i+e),o=this.tabs.indexOf(n[r]);o>-1&&this.moveToTabByIndex(this.tabs,o)}focusTab(){this.tabs[this.activeTabIndex].focus()}connectedCallback(){super.connectedCallback(),this.tabIds=this.getTabIds(),this.tabpanelIds=this.getTabPanelIds(),this.activeTabIndex=this.getActiveIndex()}}v([w],Nt.prototype,"orientation",void 0);v([w],Nt.prototype,"activeid",void 0);v([E],Nt.prototype,"tabs",void 0);v([E],Nt.prototype,"tabpanels",void 0);v([w({mode:"boolean"})],Nt.prototype,"activeindicator",void 0);v([E],Nt.prototype,"activeIndicatorRef",void 0);v([E],Nt.prototype,"showActiveIndicator",void 0);je(Nt,bi);class O0 extends G{}class P0 extends Nr(O0){constructor(){super(...arguments),this.proxy=document.createElement("textarea")}}const gp={none:"none",both:"both",horizontal:"horizontal",vertical:"vertical"};let Le=class extends P0{constructor(){super(...arguments),this.resize=gp.none,this.cols=20,this.handleTextInput=()=>{this.value=this.control.value}}readOnlyChanged(){this.proxy instanceof HTMLTextAreaElement&&(this.proxy.readOnly=this.readOnly)}autofocusChanged(){this.proxy instanceof HTMLTextAreaElement&&(this.proxy.autofocus=this.autofocus)}listChanged(){this.proxy instanceof HTMLTextAreaElement&&this.proxy.setAttribute("list",this.list)}maxlengthChanged(){this.proxy instanceof HTMLTextAreaElement&&(this.proxy.maxLength=this.maxlength)}minlengthChanged(){this.proxy instanceof HTMLTextAreaElement&&(this.proxy.minLength=this.minlength)}spellcheckChanged(){this.proxy instanceof HTMLTextAreaElement&&(this.proxy.spellcheck=this.spellcheck)}select(){this.control.select(),this.$emit("select")}handleChange(){this.$emit("change")}validate(){super.validate(this.control)}};v([w({mode:"boolean"})],Le.prototype,"readOnly",void 0);v([w],Le.prototype,"resize",void 0);v([w({mode:"boolean"})],Le.prototype,"autofocus",void 0);v([w({attribute:"form"})],Le.prototype,"formId",void 0);v([w],Le.prototype,"list",void 0);v([w({converter:mt})],Le.prototype,"maxlength",void 0);v([w({converter:mt})],Le.prototype,"minlength",void 0);v([w],Le.prototype,"name",void 0);v([w],Le.prototype,"placeholder",void 0);v([w({converter:mt,mode:"fromView"})],Le.prototype,"cols",void 0);v([w({converter:mt,mode:"fromView"})],Le.prototype,"rows",void 0);v([w({mode:"boolean"})],Le.prototype,"spellcheck",void 0);v([E],Le.prototype,"defaultSlottedNodes",void 0);je(Le,$u);const D0=(t,e)=>V` + +`,A0=(t,e)=>V` + +`,rn="not-allowed",_0=":host([hidden]){display:none}";function Ee(t){return`${_0}:host{display:${t}}`}const Ce=Ry()?"focus-visible":"focus",L0=new Set(["children","localName","ref","style","className"]),N0=Object.freeze(Object.create(null)),hd="_default",uo=new Map;function F0(t,e){typeof t=="function"?t(e):t.current=e}function yp(t,e){if(!e.name){const n=Dr.forType(t);if(n)e.name=n.name;else throw new Error("React wrappers must wrap a FASTElement or be configured with a name.")}return e.name}function ma(t){return t.events||(t.events={})}function fd(t,e,n){return L0.has(n)?(console.warn(`${yp(t,e)} contains property ${n} which is a React reserved property. It will be used by React and not set on the element.`),!1):!0}function z0(t,e){if(!e.keys)if(e.properties)e.keys=new Set(e.properties.concat(Object.keys(ma(e))));else{const n=new Set(Object.keys(ma(e))),i=L.getAccessors(t.prototype);if(i.length>0)for(const r of i)fd(t,e,r.name)&&n.add(r.name);else for(const r in t.prototype)!(r in HTMLElement.prototype)&&fd(t,e,r)&&n.add(r);e.keys=n}return e.keys}function B0(t,e){let n=[];const i={register(o,...s){n.forEach(l=>l.register(o,...s)),n=[]}};function r(o,s={}){var l,a;o instanceof ap&&(e?e.register(o):n.push(o),o=o.type);const u=uo.get(o);if(u){const f=u.get((l=s.name)!==null&&l!==void 0?l:hd);if(f)return f}class c extends t.Component{constructor(){super(...arguments),this._element=null}_updateElement(g){const y=this._element;if(y===null)return;const k=this.props,A=g||N0,p=ma(s);for(const d in this._elementProps){const m=k[d],b=p[d];if(b===void 0)y[d]=m;else{const C=A[d];if(m===C)continue;C!==void 0&&y.removeEventListener(b,C),m!==void 0&&y.addEventListener(b,m)}}}componentDidMount(){this._updateElement()}componentDidUpdate(g){this._updateElement(g)}render(){const g=this.props.__forwardedRef;(this._ref===void 0||this._userRef!==g)&&(this._ref=d=>{this._element===null&&(this._element=d),g!==null&&F0(g,d),this._userRef=g});const y={ref:this._ref},k=this._elementProps={},A=z0(o,s),p=this.props;for(const d in p){const m=p[d];A.has(d)?k[d]=m:y[d==="className"?"class":d]=m}return t.createElement(yp(o,s),y)}}const h=t.forwardRef((f,g)=>t.createElement(c,Object.assign(Object.assign({},f),{__forwardedRef:g}),f==null?void 0:f.children));return uo.has(o)||uo.set(o,new Map),uo.get(o).set((a=s.name)!==null&&a!==void 0?a:hd,h),h}return{wrap:r,registry:i}}function wp(t){return pp.getOrCreate(t).withPrefix("vscode")}function M0(t){window.addEventListener("load",()=>{new MutationObserver(()=>{pd(t)}).observe(document.body,{attributes:!0,attributeFilter:["class"]}),pd(t)})}function pd(t){const e=getComputedStyle(document.body),n=document.querySelector("body");if(n){const i=n.getAttribute("data-vscode-theme-kind");for(const[r,o]of t){let s=e.getPropertyValue(r).toString();if(i==="vscode-high-contrast")s.length===0&&o.name.includes("background")&&(s="transparent"),o.name==="button-icon-hover-background"&&(s="transparent");else if(i==="vscode-high-contrast-light"){if(s.length===0&&o.name.includes("background"))switch(o.name){case"button-primary-hover-background":s="#0F4A85";break;case"button-secondary-hover-background":s="transparent";break;case"button-icon-hover-background":s="transparent";break}}else o.name==="contrast-active-border"&&(s="transparent");o.setValueFor(n,s)}}}const md=new Map;let vd=!1;function S(t,e){const n=fp.create(t);if(e){if(e.includes("--fake-vscode-token")){const i="id"+Math.random().toString(16).slice(2);e=`${e}-${i}`}md.set(e,n)}return vd||(M0(md),vd=!0),n}const V0=S("background","--vscode-editor-background").withDefault("#1e1e1e"),B=S("border-width").withDefault(1),bp=S("contrast-active-border","--vscode-contrastActiveBorder").withDefault("#f38518");S("contrast-border","--vscode-contrastBorder").withDefault("#6fc3df");const Fr=S("corner-radius").withDefault(0),ri=S("corner-radius-round").withDefault(2),P=S("design-unit").withDefault(4),_n=S("disabled-opacity").withDefault(.4),se=S("focus-border","--vscode-focusBorder").withDefault("#007fd4"),ot=S("font-family","--vscode-font-family").withDefault("-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol");S("font-weight","--vscode-font-weight").withDefault("400");const xe=S("foreground","--vscode-foreground").withDefault("#cccccc"),Eo=S("input-height").withDefault("26"),Tu=S("input-min-width").withDefault("100px"),De=S("type-ramp-base-font-size","--vscode-font-size").withDefault("13px"),He=S("type-ramp-base-line-height").withDefault("normal"),xp=S("type-ramp-minus1-font-size").withDefault("11px"),kp=S("type-ramp-minus1-line-height").withDefault("16px");S("type-ramp-minus2-font-size").withDefault("9px");S("type-ramp-minus2-line-height").withDefault("16px");S("type-ramp-plus1-font-size").withDefault("16px");S("type-ramp-plus1-line-height").withDefault("24px");const H0=S("scrollbarWidth").withDefault("10px"),j0=S("scrollbarHeight").withDefault("10px"),U0=S("scrollbar-slider-background","--vscode-scrollbarSlider-background").withDefault("#79797966"),W0=S("scrollbar-slider-hover-background","--vscode-scrollbarSlider-hoverBackground").withDefault("#646464b3"),Q0=S("scrollbar-slider-active-background","--vscode-scrollbarSlider-activeBackground").withDefault("#bfbfbf66"),Cp=S("badge-background","--vscode-badge-background").withDefault("#4d4d4d"),Sp=S("badge-foreground","--vscode-badge-foreground").withDefault("#ffffff"),Iu=S("button-border","--vscode-button-border").withDefault("transparent"),gd=S("button-icon-background").withDefault("transparent"),G0=S("button-icon-corner-radius").withDefault("5px"),q0=S("button-icon-outline-offset").withDefault(0),yd=S("button-icon-hover-background","--fake-vscode-token").withDefault("rgba(90, 93, 94, 0.31)"),Y0=S("button-icon-padding").withDefault("3px"),oi=S("button-primary-background","--vscode-button-background").withDefault("#0e639c"),$p=S("button-primary-foreground","--vscode-button-foreground").withDefault("#ffffff"),Ep=S("button-primary-hover-background","--vscode-button-hoverBackground").withDefault("#1177bb"),pl=S("button-secondary-background","--vscode-button-secondaryBackground").withDefault("#3a3d41"),X0=S("button-secondary-foreground","--vscode-button-secondaryForeground").withDefault("#ffffff"),Z0=S("button-secondary-hover-background","--vscode-button-secondaryHoverBackground").withDefault("#45494e"),J0=S("button-padding-horizontal").withDefault("11px"),K0=S("button-padding-vertical").withDefault("4px"),$t=S("checkbox-background","--vscode-checkbox-background").withDefault("#3c3c3c"),Xn=S("checkbox-border","--vscode-checkbox-border").withDefault("#3c3c3c"),e1=S("checkbox-corner-radius").withDefault(3);S("checkbox-foreground","--vscode-checkbox-foreground").withDefault("#f0f0f0");const vn=S("list-active-selection-background","--vscode-list-activeSelectionBackground").withDefault("#094771"),si=S("list-active-selection-foreground","--vscode-list-activeSelectionForeground").withDefault("#ffffff"),t1=S("list-hover-background","--vscode-list-hoverBackground").withDefault("#2a2d2e"),n1=S("divider-background","--vscode-settings-dropdownListBorder").withDefault("#454545"),co=S("dropdown-background","--vscode-dropdown-background").withDefault("#3c3c3c"),Kt=S("dropdown-border","--vscode-dropdown-border").withDefault("#3c3c3c");S("dropdown-foreground","--vscode-dropdown-foreground").withDefault("#f0f0f0");const i1=S("dropdown-list-max-height").withDefault("200px"),bn=S("input-background","--vscode-input-background").withDefault("#3c3c3c"),Tp=S("input-foreground","--vscode-input-foreground").withDefault("#cccccc");S("input-placeholder-foreground","--vscode-input-placeholderForeground").withDefault("#cccccc");const wd=S("link-active-foreground","--vscode-textLink-activeForeground").withDefault("#3794ff"),r1=S("link-foreground","--vscode-textLink-foreground").withDefault("#3794ff"),o1=S("progress-background","--vscode-progressBar-background").withDefault("#0e70c0"),s1=S("panel-tab-active-border","--vscode-panelTitle-activeBorder").withDefault("#e7e7e7"),Nn=S("panel-tab-active-foreground","--vscode-panelTitle-activeForeground").withDefault("#e7e7e7"),l1=S("panel-tab-foreground","--vscode-panelTitle-inactiveForeground").withDefault("#e7e7e799");S("panel-view-background","--vscode-panel-background").withDefault("#1e1e1e");S("panel-view-border","--vscode-panel-border").withDefault("#80808059");const a1=S("tag-corner-radius").withDefault("2px"),u1=(t,e)=>K` + ${Ee("inline-block")} :host { + box-sizing: border-box; + font-family: ${ot}; + font-size: ${xp}; + line-height: ${kp}; + text-align: center; + } + .control { + align-items: center; + background-color: ${Cp}; + border: calc(${B} * 1px) solid ${Iu}; + border-radius: 11px; + box-sizing: border-box; + color: ${Sp}; + display: flex; + height: calc(${P} * 4px); + justify-content: center; + min-width: calc(${P} * 4px + 2px); + min-height: calc(${P} * 4px + 2px); + padding: 3px 6px; + } +`;class c1 extends Lr{connectedCallback(){super.connectedCallback(),this.circular||(this.circular=!0)}}const Ip=c1.compose({baseName:"badge",template:up,styles:u1});function d1(t,e,n,i){var r=arguments.length,o=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,n,i);else for(var l=t.length-1;l>=0;l--)(s=t[l])&&(o=(r<3?s(o):r>3?s(e,n,o):s(e,n))||o);return r>3&&o&&Object.defineProperty(e,n,o),o}const h1=K` + ${Ee("inline-flex")} :host { + outline: none; + font-family: ${ot}; + font-size: ${De}; + line-height: ${He}; + color: ${$p}; + background: ${oi}; + border-radius: calc(${ri} * 1px); + fill: currentColor; + cursor: pointer; + } + .control { + background: transparent; + height: inherit; + flex-grow: 1; + box-sizing: border-box; + display: inline-flex; + justify-content: center; + align-items: center; + padding: ${K0} ${J0}; + white-space: wrap; + outline: none; + text-decoration: none; + border: calc(${B} * 1px) solid ${Iu}; + color: inherit; + border-radius: inherit; + fill: inherit; + cursor: inherit; + font-family: inherit; + } + :host(:hover) { + background: ${Ep}; + } + :host(:active) { + background: ${oi}; + } + .control:${Ce} { + outline: calc(${B} * 1px) solid ${se}; + outline-offset: calc(${B} * 2px); + } + .control::-moz-focus-inner { + border: 0; + } + :host([disabled]) { + opacity: ${_n}; + background: ${oi}; + cursor: ${rn}; + } + .content { + display: flex; + } + .start { + display: flex; + } + ::slotted(svg), + ::slotted(span) { + width: calc(${P} * 4px); + height: calc(${P} * 4px); + } + .start { + margin-inline-end: 8px; + } +`,f1=K` + :host([appearance='primary']) { + background: ${oi}; + color: ${$p}; + } + :host([appearance='primary']:hover) { + background: ${Ep}; + } + :host([appearance='primary']:active) .control:active { + background: ${oi}; + } + :host([appearance='primary']) .control:${Ce} { + outline: calc(${B} * 1px) solid ${se}; + outline-offset: calc(${B} * 2px); + } + :host([appearance='primary'][disabled]) { + background: ${oi}; + } +`,p1=K` + :host([appearance='secondary']) { + background: ${pl}; + color: ${X0}; + } + :host([appearance='secondary']:hover) { + background: ${Z0}; + } + :host([appearance='secondary']:active) .control:active { + background: ${pl}; + } + :host([appearance='secondary']) .control:${Ce} { + outline: calc(${B} * 1px) solid ${se}; + outline-offset: calc(${B} * 2px); + } + :host([appearance='secondary'][disabled]) { + background: ${pl}; + } +`,m1=K` + :host([appearance='icon']) { + background: ${gd}; + border-radius: ${G0}; + color: ${xe}; + } + :host([appearance='icon']:hover) { + background: ${yd}; + outline: 1px dotted ${bp}; + outline-offset: -1px; + } + :host([appearance='icon']) .control { + padding: ${Y0}; + border: none; + } + :host([appearance='icon']:active) .control:active { + background: ${yd}; + } + :host([appearance='icon']) .control:${Ce} { + outline: calc(${B} * 1px) solid ${se}; + outline-offset: ${q0}; + } + :host([appearance='icon'][disabled]) { + background: ${gd}; + } +`,v1=(t,e)=>K` + ${h1} + ${f1} + ${p1} + ${m1} +`;class Rp extends gt{connectedCallback(){if(super.connectedCallback(),!this.appearance){const e=this.getAttribute("appearance");this.appearance=e}}attributeChangedCallback(e,n,i){e==="appearance"&&i==="icon"&&(this.getAttribute("aria-label")||(this.ariaLabel="Icon Button")),e==="aria-label"&&(this.ariaLabel=i),e==="disabled"&&(this.disabled=i!==null)}}d1([w],Rp.prototype,"appearance",void 0);const Op=Rp.compose({baseName:"button",template:zy,styles:v1,shadowOptions:{delegatesFocus:!0}}),g1=(t,e)=>K` + ${Ee("inline-flex")} :host { + align-items: center; + outline: none; + margin: calc(${P} * 1px) 0; + user-select: none; + font-size: ${De}; + line-height: ${He}; + } + .control { + position: relative; + width: calc(${P} * 4px + 2px); + height: calc(${P} * 4px + 2px); + box-sizing: border-box; + border-radius: calc(${e1} * 1px); + border: calc(${B} * 1px) solid ${Xn}; + background: ${$t}; + outline: none; + cursor: pointer; + } + .label { + font-family: ${ot}; + color: ${xe}; + padding-inline-start: calc(${P} * 2px + 2px); + margin-inline-end: calc(${P} * 2px + 2px); + cursor: pointer; + } + .label__hidden { + display: none; + visibility: hidden; + } + .checked-indicator { + width: 100%; + height: 100%; + display: block; + fill: ${xe}; + opacity: 0; + pointer-events: none; + } + .indeterminate-indicator { + border-radius: 2px; + background: ${xe}; + position: absolute; + top: 50%; + left: 50%; + width: 50%; + height: 50%; + transform: translate(-50%, -50%); + opacity: 0; + } + :host(:enabled) .control:hover { + background: ${$t}; + border-color: ${Xn}; + } + :host(:enabled) .control:active { + background: ${$t}; + border-color: ${se}; + } + :host(:${Ce}) .control { + border: calc(${B} * 1px) solid ${se}; + } + :host(.disabled) .label, + :host(.readonly) .label, + :host(.readonly) .control, + :host(.disabled) .control { + cursor: ${rn}; + } + :host(.checked:not(.indeterminate)) .checked-indicator, + :host(.indeterminate) .indeterminate-indicator { + opacity: 1; + } + :host(.disabled) { + opacity: ${_n}; + } +`;class y1 extends xs{connectedCallback(){super.connectedCallback(),this.textContent?this.setAttribute("aria-label",this.textContent):this.setAttribute("aria-label","Checkbox")}}const Pp=y1.compose({baseName:"checkbox",template:Yy,styles:g1,checkedIndicator:` + + + + `,indeterminateIndicator:` +
+ `}),w1=(t,e)=>K` + :host { + display: flex; + position: relative; + flex-direction: column; + width: 100%; + } +`,b1=(t,e)=>K` + :host { + display: grid; + padding: calc((${P} / 4) * 1px) 0; + box-sizing: border-box; + width: 100%; + background: transparent; + } + :host(.header) { + } + :host(.sticky-header) { + background: ${V0}; + position: sticky; + top: 0; + } + :host(:hover) { + background: ${t1}; + outline: 1px dotted ${bp}; + outline-offset: -1px; + } +`,x1=(t,e)=>K` + :host { + padding: calc(${P} * 1px) calc(${P} * 3px); + color: ${xe}; + opacity: 1; + box-sizing: border-box; + font-family: ${ot}; + font-size: ${De}; + line-height: ${He}; + font-weight: 400; + border: solid calc(${B} * 1px) transparent; + border-radius: calc(${Fr} * 1px); + white-space: wrap; + overflow-wrap: anywhere; + } + :host(.column-header) { + font-weight: 600; + } + :host(:${Ce}), + :host(:focus), + :host(:active) { + background: ${vn}; + border: solid calc(${B} * 1px) ${se}; + color: ${si}; + outline: none; + } + :host(:${Ce}) ::slotted(*), + :host(:focus) ::slotted(*), + :host(:active) ::slotted(*) { + color: ${si} !important; + } +`;class k1 extends $e{connectedCallback(){super.connectedCallback(),this.getAttribute("aria-label")||this.setAttribute("aria-label","Data Grid")}}const Dp=k1.compose({baseName:"data-grid",baseClass:$e,template:Hy,styles:w1});class C1 extends Se{}const Ap=C1.compose({baseName:"data-grid-row",baseClass:Se,template:Gy,styles:b1});class S1 extends an{}const _p=S1.compose({baseName:"data-grid-cell",baseClass:an,template:qy,styles:x1}),$1=(t,e)=>K` + ${Ee("block")} :host { + border: none; + border-top: calc(${B} * 1px) solid ${n1}; + box-sizing: content-box; + height: 0; + margin: calc(${P} * 1px) 0; + width: 100%; + } +`;class E1 extends Su{}const Lp=E1.compose({baseName:"divider",template:d0,styles:$1}),T1=(t,e)=>K` + ${Ee("inline-flex")} :host { + background: ${co}; + border-radius: calc(${ri} * 1px); + box-sizing: border-box; + color: ${xe}; + contain: contents; + font-family: ${ot}; + height: calc(${Eo} * 1px); + position: relative; + user-select: none; + min-width: ${Tu}; + outline: none; + vertical-align: top; + } + .control { + align-items: center; + box-sizing: border-box; + border: calc(${B} * 1px) solid ${Kt}; + border-radius: calc(${ri} * 1px); + cursor: pointer; + display: flex; + font-family: inherit; + font-size: ${De}; + line-height: ${He}; + min-height: 100%; + padding: 2px 6px 2px 8px; + width: 100%; + } + .listbox { + background: ${co}; + border: calc(${B} * 1px) solid ${se}; + border-radius: calc(${ri} * 1px); + box-sizing: border-box; + display: inline-flex; + flex-direction: column; + left: 0; + max-height: ${i1}; + padding: 0; + overflow-y: auto; + position: absolute; + width: 100%; + z-index: 1; + } + .listbox[hidden] { + display: none; + } + :host(:${Ce}) .control { + border-color: ${se}; + } + :host(:not([disabled]):hover) { + background: ${co}; + border-color: ${Kt}; + } + :host(:${Ce}) ::slotted([aria-selected="true"][role="option"]:not([disabled])) { + background: ${vn}; + border: calc(${B} * 1px) solid transparent; + color: ${si}; + } + :host([disabled]) { + cursor: ${rn}; + opacity: ${_n}; + } + :host([disabled]) .control { + cursor: ${rn}; + user-select: none; + } + :host([disabled]:hover) { + background: ${co}; + color: ${xe}; + fill: currentcolor; + } + :host(:not([disabled])) .control:active { + border-color: ${se}; + } + :host(:empty) .listbox { + display: none; + } + :host([open]) .control { + border-color: ${se}; + } + :host([open][position='above']) .listbox { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + :host([open][position='below']) .listbox { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + :host([open][position='above']) .listbox { + bottom: calc(${Eo} * 1px); + } + :host([open][position='below']) .listbox { + top: calc(${Eo} * 1px); + } + .selected-value { + flex: 1 1 auto; + font-family: inherit; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + } + .indicator { + flex: 0 0 auto; + margin-inline-start: 1em; + } + slot[name='listbox'] { + display: none; + width: 100%; + } + :host([open]) slot[name='listbox'] { + display: flex; + position: absolute; + } + .end { + margin-inline-start: auto; + } + .start, + .end, + .indicator, + .select-indicator, + ::slotted(svg), + ::slotted(span) { + fill: currentcolor; + height: 1em; + min-height: calc(${P} * 4px); + min-width: calc(${P} * 4px); + width: 1em; + } + ::slotted([role='option']), + ::slotted(option) { + flex: 0 0 auto; + } +`;class I1 extends cn{}const Np=I1.compose({baseName:"dropdown",template:$0,styles:T1,indicator:` + + + + `}),R1=(t,e)=>K` + ${Ee("inline-flex")} :host { + background: transparent; + box-sizing: border-box; + color: ${r1}; + cursor: pointer; + fill: currentcolor; + font-family: ${ot}; + font-size: ${De}; + line-height: ${He}; + outline: none; + } + .control { + background: transparent; + border: calc(${B} * 1px) solid transparent; + border-radius: calc(${Fr} * 1px); + box-sizing: border-box; + color: inherit; + cursor: inherit; + fill: inherit; + font-family: inherit; + height: inherit; + padding: 0; + outline: none; + text-decoration: none; + word-break: break-word; + } + .control::-moz-focus-inner { + border: 0; + } + :host(:hover) { + color: ${wd}; + } + :host(:hover) .content { + text-decoration: underline; + } + :host(:active) { + background: transparent; + color: ${wd}; + } + :host(:${Ce}) .control, + :host(:focus) .control { + border: calc(${B} * 1px) solid ${se}; + } +`;class O1 extends vt{}const Fp=O1.compose({baseName:"link",template:Ny,styles:R1,shadowOptions:{delegatesFocus:!0}}),P1=(t,e)=>K` + ${Ee("inline-flex")} :host { + font-family: var(--body-font); + border-radius: ${Fr}; + border: calc(${B} * 1px) solid transparent; + box-sizing: border-box; + color: ${xe}; + cursor: pointer; + fill: currentcolor; + font-size: ${De}; + line-height: ${He}; + margin: 0; + outline: none; + overflow: hidden; + padding: 0 calc((${P} / 2) * 1px) + calc((${P} / 4) * 1px); + user-select: none; + white-space: nowrap; + } + :host(:${Ce}) { + border-color: ${se}; + background: ${vn}; + color: ${xe}; + } + :host([aria-selected='true']) { + background: ${vn}; + border: calc(${B} * 1px) solid transparent; + color: ${si}; + } + :host(:active) { + background: ${vn}; + color: ${si}; + } + :host(:not([aria-selected='true']):hover) { + background: ${vn}; + border: calc(${B} * 1px) solid transparent; + color: ${si}; + } + :host(:not([aria-selected='true']):active) { + background: ${vn}; + color: ${xe}; + } + :host([disabled]) { + cursor: ${rn}; + opacity: ${_n}; + } + :host([disabled]:hover) { + background-color: inherit; + } + .content { + grid-column-start: 2; + justify-self: start; + overflow: hidden; + text-overflow: ellipsis; + } +`;let D1=class extends Lt{connectedCallback(){super.connectedCallback(),this.textContent?this.setAttribute("aria-label",this.textContent):this.setAttribute("aria-label","Option")}};const zp=D1.compose({baseName:"option",template:f0,styles:P1}),A1=(t,e)=>K` + ${Ee("grid")} :host { + box-sizing: border-box; + font-family: ${ot}; + font-size: ${De}; + line-height: ${He}; + color: ${xe}; + grid-template-columns: auto 1fr auto; + grid-template-rows: auto 1fr; + overflow-x: auto; + } + .tablist { + display: grid; + grid-template-rows: auto auto; + grid-template-columns: auto; + column-gap: calc(${P} * 8px); + position: relative; + width: max-content; + align-self: end; + padding: calc(${P} * 1px) calc(${P} * 1px) 0; + box-sizing: border-box; + } + .start, + .end { + align-self: center; + } + .activeIndicator { + grid-row: 2; + grid-column: 1; + width: 100%; + height: calc((${P} / 4) * 1px); + justify-self: center; + background: ${Nn}; + margin: 0; + border-radius: calc(${Fr} * 1px); + } + .activeIndicatorTransition { + transition: transform 0.01s linear; + } + .tabpanel { + grid-row: 2; + grid-column-start: 1; + grid-column-end: 4; + position: relative; + } +`,_1=(t,e)=>K` + ${Ee("inline-flex")} :host { + box-sizing: border-box; + font-family: ${ot}; + font-size: ${De}; + line-height: ${He}; + height: calc(${P} * 7px); + padding: calc(${P} * 1px) 0; + color: ${l1}; + fill: currentcolor; + border-radius: calc(${Fr} * 1px); + border: solid calc(${B} * 1px) transparent; + align-items: center; + justify-content: center; + grid-row: 1; + cursor: pointer; + } + :host(:hover) { + color: ${Nn}; + fill: currentcolor; + } + :host(:active) { + color: ${Nn}; + fill: currentcolor; + } + :host([aria-selected='true']) { + background: transparent; + color: ${Nn}; + fill: currentcolor; + } + :host([aria-selected='true']:hover) { + background: transparent; + color: ${Nn}; + fill: currentcolor; + } + :host([aria-selected='true']:active) { + background: transparent; + color: ${Nn}; + fill: currentcolor; + } + :host(:${Ce}) { + outline: none; + border: solid calc(${B} * 1px) ${s1}; + } + :host(:focus) { + outline: none; + } + ::slotted(vscode-badge) { + margin-inline-start: calc(${P} * 2px); + } +`,L1=(t,e)=>K` + ${Ee("flex")} :host { + color: inherit; + background-color: transparent; + border: solid calc(${B} * 1px) transparent; + box-sizing: border-box; + font-size: ${De}; + line-height: ${He}; + padding: 10px calc((${P} + 2) * 1px); + } +`;class N1 extends Nt{connectedCallback(){super.connectedCallback(),this.orientation&&(this.orientation=pa.horizontal),this.getAttribute("aria-label")||this.setAttribute("aria-label","Panels")}}const Bp=N1.compose({baseName:"panels",template:R0,styles:A1});class F1 extends vp{connectedCallback(){super.connectedCallback(),this.disabled&&(this.disabled=!1),this.textContent&&this.setAttribute("aria-label",this.textContent)}}const Mp=F1.compose({baseName:"panel-tab",template:I0,styles:_1});class z1 extends T0{}const Vp=z1.compose({baseName:"panel-view",template:E0,styles:L1}),B1=(t,e)=>K` + ${Ee("flex")} :host { + align-items: center; + outline: none; + height: calc(${P} * 7px); + width: calc(${P} * 7px); + margin: 0; + } + .progress { + height: 100%; + width: 100%; + } + .background { + fill: none; + stroke: transparent; + stroke-width: calc(${P} / 2 * 1px); + } + .indeterminate-indicator-1 { + fill: none; + stroke: ${o1}; + stroke-width: calc(${P} / 2 * 1px); + stroke-linecap: square; + transform-origin: 50% 50%; + transform: rotate(-90deg); + transition: all 0.2s ease-in-out; + animation: spin-infinite 2s linear infinite; + } + @keyframes spin-infinite { + 0% { + stroke-dasharray: 0.01px 43.97px; + transform: rotate(0deg); + } + 50% { + stroke-dasharray: 21.99px 21.99px; + transform: rotate(450deg); + } + 100% { + stroke-dasharray: 0.01px 43.97px; + transform: rotate(1080deg); + } + } +`;class M1 extends Ei{connectedCallback(){super.connectedCallback(),this.paused&&(this.paused=!1),this.setAttribute("aria-label","Loading"),this.setAttribute("aria-live","assertive"),this.setAttribute("role","alert")}attributeChangedCallback(e,n,i){e==="value"&&this.removeAttribute("value")}}const Hp=M1.compose({baseName:"progress-ring",template:g0,styles:B1,indeterminateIndicator:` + + + + + `}),V1=(t,e)=>K` + ${Ee("flex")} :host { + align-items: flex-start; + margin: calc(${P} * 1px) 0; + flex-direction: column; + } + .positioning-region { + display: flex; + flex-wrap: wrap; + } + :host([orientation='vertical']) .positioning-region { + flex-direction: column; + } + :host([orientation='horizontal']) .positioning-region { + flex-direction: row; + } + ::slotted([slot='label']) { + color: ${xe}; + font-size: ${De}; + margin: calc(${P} * 1px) 0; + } +`;class H1 extends un{connectedCallback(){super.connectedCallback();const e=this.querySelector("label");if(e){const n="radio-group-"+Math.random().toString(16).slice(2);e.setAttribute("id",n),this.setAttribute("aria-labelledby",n)}}}const jp=H1.compose({baseName:"radio-group",template:y0,styles:V1}),j1=(t,e)=>K` + ${Ee("inline-flex")} :host { + align-items: center; + flex-direction: row; + font-size: ${De}; + line-height: ${He}; + margin: calc(${P} * 1px) 0; + outline: none; + position: relative; + transition: all 0.2s ease-in-out; + user-select: none; + } + .control { + background: ${$t}; + border-radius: 999px; + border: calc(${B} * 1px) solid ${Xn}; + box-sizing: border-box; + cursor: pointer; + height: calc(${P} * 4px); + position: relative; + outline: none; + width: calc(${P} * 4px); + } + .label { + color: ${xe}; + cursor: pointer; + font-family: ${ot}; + margin-inline-end: calc(${P} * 2px + 2px); + padding-inline-start: calc(${P} * 2px + 2px); + } + .label__hidden { + display: none; + visibility: hidden; + } + .control, + .checked-indicator { + flex-shrink: 0; + } + .checked-indicator { + background: ${xe}; + border-radius: 999px; + display: inline-block; + inset: calc(${P} * 1px); + opacity: 0; + pointer-events: none; + position: absolute; + } + :host(:not([disabled])) .control:hover { + background: ${$t}; + border-color: ${Xn}; + } + :host(:not([disabled])) .control:active { + background: ${$t}; + border-color: ${se}; + } + :host(:${Ce}) .control { + border: calc(${B} * 1px) solid ${se}; + } + :host([aria-checked='true']) .control { + background: ${$t}; + border: calc(${B} * 1px) solid ${Xn}; + } + :host([aria-checked='true']:not([disabled])) .control:hover { + background: ${$t}; + border: calc(${B} * 1px) solid ${Xn}; + } + :host([aria-checked='true']:not([disabled])) .control:active { + background: ${$t}; + border: calc(${B} * 1px) solid ${se}; + } + :host([aria-checked="true"]:${Ce}:not([disabled])) .control { + border: calc(${B} * 1px) solid ${se}; + } + :host([disabled]) .label, + :host([readonly]) .label, + :host([readonly]) .control, + :host([disabled]) .control { + cursor: ${rn}; + } + :host([aria-checked='true']) .checked-indicator { + opacity: 1; + } + :host([disabled]) { + opacity: ${_n}; + } +`;class U1 extends Cs{connectedCallback(){super.connectedCallback(),this.textContent?this.setAttribute("aria-label",this.textContent):this.setAttribute("aria-label","Radio")}}const Up=U1.compose({baseName:"radio",template:w0,styles:j1,checkedIndicator:` +
+ `}),W1=(t,e)=>K` + ${Ee("inline-block")} :host { + box-sizing: border-box; + font-family: ${ot}; + font-size: ${xp}; + line-height: ${kp}; + } + .control { + background-color: ${Cp}; + border: calc(${B} * 1px) solid ${Iu}; + border-radius: ${a1}; + color: ${Sp}; + padding: calc(${P} * 0.5px) calc(${P} * 1px); + text-transform: uppercase; + } +`;class Q1 extends Lr{connectedCallback(){super.connectedCallback(),this.circular&&(this.circular=!1)}}const Wp=Q1.compose({baseName:"tag",template:up,styles:W1}),G1=(t,e)=>K` + ${Ee("inline-block")} :host { + font-family: ${ot}; + outline: none; + user-select: none; + } + .control { + box-sizing: border-box; + position: relative; + color: ${Tp}; + background: ${bn}; + border-radius: calc(${ri} * 1px); + border: calc(${B} * 1px) solid ${Kt}; + font: inherit; + font-size: ${De}; + line-height: ${He}; + padding: calc(${P} * 2px + 1px); + width: 100%; + min-width: ${Tu}; + resize: none; + } + .control:hover:enabled { + background: ${bn}; + border-color: ${Kt}; + } + .control:active:enabled { + background: ${bn}; + border-color: ${se}; + } + .control:hover, + .control:${Ce}, + .control:disabled, + .control:active { + outline: none; + } + .control::-webkit-scrollbar { + width: ${H0}; + height: ${j0}; + } + .control::-webkit-scrollbar-corner { + background: ${bn}; + } + .control::-webkit-scrollbar-thumb { + background: ${U0}; + } + .control::-webkit-scrollbar-thumb:hover { + background: ${W0}; + } + .control::-webkit-scrollbar-thumb:active { + background: ${Q0}; + } + :host(:focus-within:not([disabled])) .control { + border-color: ${se}; + } + :host([resize='both']) .control { + resize: both; + } + :host([resize='horizontal']) .control { + resize: horizontal; + } + :host([resize='vertical']) .control { + resize: vertical; + } + .label { + display: block; + color: ${xe}; + cursor: pointer; + font-size: ${De}; + line-height: ${He}; + margin-bottom: 2px; + } + .label__hidden { + display: none; + visibility: hidden; + } + :host([disabled]) .label, + :host([readonly]) .label, + :host([readonly]) .control, + :host([disabled]) .control { + cursor: ${rn}; + } + :host([disabled]) { + opacity: ${_n}; + } + :host([disabled]) .control { + border-color: ${Kt}; + } +`;class q1 extends Le{connectedCallback(){super.connectedCallback(),this.textContent?this.setAttribute("aria-label",this.textContent):this.setAttribute("aria-label","Text area")}}const Qp=q1.compose({baseName:"text-area",template:D0,styles:G1,shadowOptions:{delegatesFocus:!0}}),Y1=(t,e)=>K` + ${Ee("inline-block")} :host { + font-family: ${ot}; + outline: none; + user-select: none; + } + .root { + box-sizing: border-box; + position: relative; + display: flex; + flex-direction: row; + color: ${Tp}; + background: ${bn}; + border-radius: calc(${ri} * 1px); + border: calc(${B} * 1px) solid ${Kt}; + height: calc(${Eo} * 1px); + min-width: ${Tu}; + } + .control { + -webkit-appearance: none; + font: inherit; + background: transparent; + border: 0; + color: inherit; + height: calc(100% - (${P} * 1px)); + width: 100%; + margin-top: auto; + margin-bottom: auto; + border: none; + padding: 0 calc(${P} * 2px + 1px); + font-size: ${De}; + line-height: ${He}; + } + .control:hover, + .control:${Ce}, + .control:disabled, + .control:active { + outline: none; + } + .label { + display: block; + color: ${xe}; + cursor: pointer; + font-size: ${De}; + line-height: ${He}; + margin-bottom: 2px; + } + .label__hidden { + display: none; + visibility: hidden; + } + .start, + .end { + display: flex; + margin: auto; + fill: currentcolor; + } + ::slotted(svg), + ::slotted(span) { + width: calc(${P} * 4px); + height: calc(${P} * 4px); + } + .start { + margin-inline-start: calc(${P} * 2px); + } + .end { + margin-inline-end: calc(${P} * 2px); + } + :host(:hover:not([disabled])) .root { + background: ${bn}; + border-color: ${Kt}; + } + :host(:active:not([disabled])) .root { + background: ${bn}; + border-color: ${se}; + } + :host(:focus-within:not([disabled])) .root { + border-color: ${se}; + } + :host([disabled]) .label, + :host([readonly]) .label, + :host([readonly]) .control, + :host([disabled]) .control { + cursor: ${rn}; + } + :host([disabled]) { + opacity: ${_n}; + } + :host([disabled]) .control { + border-color: ${Kt}; + } +`;class X1 extends Xe{connectedCallback(){super.connectedCallback(),this.textContent?this.setAttribute("aria-label",this.textContent):this.setAttribute("aria-label","Text field")}}const Gp=X1.compose({baseName:"text-field",template:A0,styles:Y1,shadowOptions:{delegatesFocus:!0}}),Z1={vsCodeBadge:Ip,vsCodeButton:Op,vsCodeCheckbox:Pp,vsCodeDataGrid:Dp,vsCodeDataGridCell:_p,vsCodeDataGridRow:Ap,vsCodeDivider:Lp,vsCodeDropdown:Np,vsCodeLink:Fp,vsCodeOption:zp,vsCodePanels:Bp,vsCodePanelTab:Mp,vsCodePanelView:Vp,vsCodeProgressRing:Hp,vsCodeRadioGroup:jp,vsCodeRadio:Up,vsCodeTag:Wp,vsCodeTextArea:Qp,vsCodeTextField:Gp,register(t,...e){if(t)for(const n in this)n!=="register"&&this[n]().register(t,...e)}},{wrap:ce}=B0(Rd,wp());ce(Ip(),{name:"vscode-badge"});const ml=ce(Op(),{name:"vscode-button"});ce(Pp(),{name:"vscode-checkbox",events:{onChange:"change"}});ce(Dp(),{name:"vscode-data-grid"});ce(_p(),{name:"vscode-data-grid-cell"});ce(Ap(),{name:"vscode-data-grid-row"});ce(Lp(),{name:"vscode-divider"});ce(Np(),{name:"vscode-dropdown",events:{onChange:"change"}});ce(Fp(),{name:"vscode-link"});ce(zp(),{name:"vscode-option"});ce(Bp(),{name:"vscode-panels",events:{onChange:"change"}});ce(Mp(),{name:"vscode-panel-tab"});ce(Vp(),{name:"vscode-panel-view"});ce(Hp(),{name:"vscode-progress-ring"});ce(Up(),{name:"vscode-radio",events:{onChange:"change"}});ce(jp(),{name:"vscode-radio-group",events:{onChange:"change"}});ce(Wp(),{name:"vscode-tag"});ce(Qp(),{name:"vscode-text-area",events:{onChange:"change",onInput:"input"}});ce(Gp(),{name:"vscode-text-field",events:{onChange:"change",onInput:"input"}});const J1=[{name:"Localnet",status:"Running",versions:new io},{name:"Devnet",status:"Degraded",versions:new io},{name:"Testnet",status:"Stopped",versions:new io},{name:"Mainnet",status:"Down",versions:new io}],K1=()=>{const t=i=>{Ks.postMessage({command:"start",workdir:i.name}),console.log("handleStartClick called")};function e(i){Ks.postMessage({command:"stop",workdir:i.name})}function n(i){Ks.postMessage({command:"regen",workdir:i.name})}return ie.jsxs(ie.Fragment,{children:["Dashboard Controller",J1.map(i=>ie.jsxs("div",{className:"workdir_row",children:[ie.jsx("h2",{className:"workdir",children:i.name}),ie.jsx("h2",{className:"status",children:i.status}),i.status==="Stopped"?ie.jsxs(ml,{onClick:()=>t(i),children:["Start",ie.jsx("span",{slot:"start",className:"codicon codicon-debug-start"})]}):ie.jsxs(ml,{onClick:()=>e(i),children:["Stop",ie.jsx("span",{slot:"start",className:"codicon codicon-debug-stop"})]}),i.name==="Localnet"&&ie.jsxs(ml,{onClick:()=>n(i),children:["Regen",ie.jsx("span",{slot:"start",className:"codicon codicon-refresh"})]})]},i.name))]})};function ew(){let t;switch(globalThis.suibase_view_key){case"suibase.settings":t=ie.jsx(K1,{});break;case"suibase.console":t=ie.jsx(Cg,{});break;case"suibase.sidebar":t=ie.jsx(Sg,{});break;default:t=null}return ie.jsxs("main",{children:[" ",t]})}wp().register(Z1);vl.createRoot(document.getElementById("root")).render(ie.jsx(Rd.StrictMode,{children:ie.jsx(ew,{})})); diff --git a/typescript/vscode-extension/webview-ui/build/index.html b/typescript/vscode-extension/webview-ui/build/index.html new file mode 100644 index 00000000..aff6d6d2 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/build/index.html @@ -0,0 +1,17 @@ + + + + + + Dev Root + + + + + + +
+ + diff --git a/typescript/vscode-extension/webview-ui/build/vite.svg b/typescript/vscode-extension/webview-ui/build/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/build/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/typescript/vscode-extension/webview-ui/index.html b/typescript/vscode-extension/webview-ui/index.html new file mode 100644 index 00000000..77de49da --- /dev/null +++ b/typescript/vscode-extension/webview-ui/index.html @@ -0,0 +1,16 @@ + + + + + + Dev Root + + + + +
+ + + diff --git a/typescript/vscode-extension/webview-ui/package.json b/typescript/vscode-extension/webview-ui/package.json index ceaad92d..3c0f4e13 100644 --- a/typescript/vscode-extension/webview-ui/package.json +++ b/typescript/vscode-extension/webview-ui/package.json @@ -1,37 +1,32 @@ { - "name": "suibase", - "version": "0.0.1", + "name": "webview-ui", "private": true, + "version": "0.0.0", + "type": "module", "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", - "start": "sirv public --no-clear", - "check": "svelte-check --tsconfig ./tsconfig.json" + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" }, "dependencies": { "@vscode/codicons": "^0.0.33", - "@vscode/webview-ui-toolkit": "^1.4.0", - "async-mutex": "^0.4.1", - "await-to-js": "^3.0.0", - "dayjs": "^1.11.10", - "sirv-cli": "^2.0.2", - "svelte-preprocess-react": "^0.17.0" + "@estruyf/vscode": "^1.1.0", + "@vscode/webview-ui-toolkit": "^1.2.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^17.1.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-typescript": "^8.5.0", - "@tsconfig/svelte": "^2.0.1", - "@types/vscode-webview": "^1.57.5", - "rollup": "^2.79.1", - "rollup-plugin-css-only": "^3.1.0", - "rollup-plugin-livereload": "^2.0.5", - "rollup-plugin-svelte": "^7.2.0", - "rollup-plugin-terser": "^7.0.2", - "svelte": "^4.2.14", - "svelte-check": "^3.6.9", - "svelte-preprocess": "^5.1.3", - "tslib": "^2.6.2", - "typescript": "^5.4.5" + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@types/vscode-webview": "^1.57.0", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" } -} \ No newline at end of file +} diff --git a/typescript/vscode-extension/webview-ui/pnpm-lock.yaml b/typescript/vscode-extension/webview-ui/pnpm-lock.yaml index ff651a5c..d3fa2cb4 100644 --- a/typescript/vscode-extension/webview-ui/pnpm-lock.yaml +++ b/typescript/vscode-extension/webview-ui/pnpm-lock.yaml @@ -1,560 +1,1961 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@vscode/codicons': - specifier: ^0.0.33 - version: 0.0.33 - '@vscode/webview-ui-toolkit': - specifier: ^1.4.0 - version: 1.4.0(react@18.2.0) - async-mutex: - specifier: ^0.4.1 - version: 0.4.1 - await-to-js: - specifier: ^3.0.0 - version: 3.0.0 - dayjs: - specifier: ^1.11.10 - version: 1.11.10 - sirv-cli: - specifier: ^2.0.2 - version: 2.0.2 - svelte-preprocess-react: - specifier: ^0.17.0 - version: 0.17.0(react-dom@18.2.0)(react@18.2.0)(svelte@4.2.14) - -devDependencies: - '@rollup/plugin-commonjs': - specifier: ^17.1.0 - version: 17.1.0(rollup@2.79.1) - '@rollup/plugin-node-resolve': - specifier: ^11.2.1 - version: 11.2.1(rollup@2.79.1) - '@rollup/plugin-typescript': - specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(tslib@2.6.2)(typescript@5.4.5) - '@tsconfig/svelte': - specifier: ^2.0.1 - version: 2.0.1 - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - rollup: - specifier: ^2.79.1 - version: 2.79.1 - rollup-plugin-css-only: - specifier: ^3.1.0 - version: 3.1.0(rollup@2.79.1) - rollup-plugin-livereload: - specifier: ^2.0.5 - version: 2.0.5 - rollup-plugin-svelte: - specifier: ^7.2.0 - version: 7.2.0(rollup@2.79.1)(svelte@4.2.14) - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@2.79.1) - svelte: - specifier: ^4.2.14 - version: 4.2.14 - svelte-check: - specifier: ^3.6.9 - version: 3.6.9(svelte@4.2.14) - svelte-preprocess: - specifier: ^5.1.3 - version: 5.1.3(svelte@4.2.14)(typescript@5.4.5) - tslib: - specifier: ^2.6.2 - version: 2.6.2 - typescript: - specifier: ^5.4.5 - version: 5.4.5 +importers: + + .: + dependencies: + '@estruyf/vscode': + specifier: ^1.1.0 + version: 1.1.0 + '@vscode/codicons': + specifier: ^0.0.33 + version: 0.0.33 + '@vscode/webview-ui-toolkit': + specifier: ^1.2.2 + version: 1.4.0(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.66 + version: 18.2.79 + '@types/react-dom': + specifier: ^18.2.22 + version: 18.2.25 + '@types/vscode-webview': + specifier: ^1.57.0 + version: 1.57.5 + '@typescript-eslint/eslint-plugin': + specifier: ^7.2.0 + version: 7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^7.2.0 + version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.2.1(vite@5.2.9) + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.57.0) + eslint-plugin-react-refresh: + specifier: ^0.4.6 + version: 0.4.6(eslint@8.57.0) + typescript: + specifier: ^5.2.2 + version: 5.4.5 + vite: + specifier: ^5.2.0 + version: 5.2.9 packages: - /@ampproject/remapping@2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.4': + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.4': + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.4': + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.0': + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.4': + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.4': + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.24.1': + resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.1': + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.1': + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@estruyf/vscode@1.1.0': + resolution: {integrity: sha512-JOjok+d870IsBPqk/E+KeW9E5ar+slqW8Sae5PtNb1yB8aMudJy9DHV5wQeki/ZwggFYDv+6EPjyzW/71/5yVw==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@microsoft/fast-element@1.13.0': + resolution: {integrity: sha512-iFhzKbbD0cFRo9cEzLS3Tdo9BYuatdxmCEKCpZs1Cro/93zNMpZ/Y9/Z7SknmW6fhDZbpBvtO8lLh9TFEcNVAQ==} + + '@microsoft/fast-foundation@2.49.6': + resolution: {integrity: sha512-DZVr+J/NIoskFC1Y6xnAowrMkdbf2d5o7UyWK6gW5AiQ6S386Ql8dw4KcC4kHaeE1yL2CKvweE79cj6ZhJhTvA==} + + '@microsoft/fast-react-wrapper@0.3.24': + resolution: {integrity: sha512-sRnSBIKaO42p4mYoYR60spWVkg89wFxFAgQETIMazAm2TxtlsnsGszJnTwVhXq2Uz+XNiD8eKBkfzK5c/i6/Kw==} + peerDependencies: + react: '>=16.9.0' + + '@microsoft/fast-web-utilities@5.4.1': + resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/rollup-android-arm-eabi@4.14.3': + resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.14.3': + resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.14.3': + resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.14.3': + resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.14.3': + resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.14.3': + resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.14.3': + resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.14.3': + resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.14.3': + resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.14.3': + resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.14.3': + resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.14.3': + resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.14.3': + resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.14.3': + resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.14.3': + resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.14.3': + resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/react-dom@18.2.25': + resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} + + '@types/react@18.2.79': + resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/vscode-webview@1.57.0': + resolution: {integrity: sha512-x3Cb/SMa1IwRHfSvKaZDZOTh4cNoG505c3NjTqGlMC082m++x/ETUmtYniDsw6SSmYzZXO8KBNhYxR0+VqymqA==} + + '@types/vscode-webview@1.57.5': + resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} + + '@typescript-eslint/eslint-plugin@7.7.0': + resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.7.0': + resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.7.0': + resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.7.0': + resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.7.0': + resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.7.0': + resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.7.0': + resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.7.0': + resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.2.1': + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vscode/codicons@0.0.33': + resolution: {integrity: sha512-VdgpnD75swH9hpXjd34VBgQ2w2quK63WljodlUcOoJDPKiV+rPjHrcUc2sjLCNKxhl6oKqmsZgwOWcDAY2GKKQ==} + + '@vscode/webview-ui-toolkit@1.4.0': + resolution: {integrity: sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==} + peerDependencies: + react: '>=16.9.0' + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001610: + resolution: {integrity: sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + electron-to-chromium@1.4.738: + resolution: {integrity: sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.6: + resolution: {integrity: sha512-NjGXdm7zgcKRkKMua34qVO9doI7VOxZ6ancSvBELJSSoX97jyndXcSoa8XBh69JoB31dNz3EEzlMcizZl7LaMA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + exenv-es6@1.1.1: + resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup@4.14.3: + resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tabbable@5.3.3: + resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + vite@5.2.9: + resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + + '@babel/compat-data@7.24.4': {} + + '@babel/core@7.24.4': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.4': dependencies: + '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.23.6': dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 - dev: true + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-environment-visitor@7.22.20': {} - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-plugin-utils@7.24.0': {} + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.24.0 + + '@babel/helper-string-parser@7.24.1': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helpers@7.24.4': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.24.2': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 - dev: true - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@babel/parser@7.24.4': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 + '@babel/types': 7.24.0 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4)': + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4)': + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@babel/template@7.24.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + + '@babel/traverse@7.24.1': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@estruyf/vscode@1.1.0': + dependencies: + '@types/vscode-webview': 1.57.0 + uuid: 9.0.1 + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@microsoft/fast-element@1.13.0: - resolution: {integrity: sha512-iFhzKbbD0cFRo9cEzLS3Tdo9BYuatdxmCEKCpZs1Cro/93zNMpZ/Y9/Z7SknmW6fhDZbpBvtO8lLh9TFEcNVAQ==} - dev: false + '@microsoft/fast-element@1.13.0': {} - /@microsoft/fast-foundation@2.49.6: - resolution: {integrity: sha512-DZVr+J/NIoskFC1Y6xnAowrMkdbf2d5o7UyWK6gW5AiQ6S386Ql8dw4KcC4kHaeE1yL2CKvweE79cj6ZhJhTvA==} + '@microsoft/fast-foundation@2.49.6': dependencies: '@microsoft/fast-element': 1.13.0 '@microsoft/fast-web-utilities': 5.4.1 tabbable: 5.3.3 tslib: 1.14.1 - dev: false - /@microsoft/fast-react-wrapper@0.3.24(react@18.2.0): - resolution: {integrity: sha512-sRnSBIKaO42p4mYoYR60spWVkg89wFxFAgQETIMazAm2TxtlsnsGszJnTwVhXq2Uz+XNiD8eKBkfzK5c/i6/Kw==} - peerDependencies: - react: '>=16.9.0' + '@microsoft/fast-react-wrapper@0.3.24(react@18.2.0)': dependencies: '@microsoft/fast-element': 1.13.0 '@microsoft/fast-foundation': 2.49.6 react: 18.2.0 - dev: false - /@microsoft/fast-web-utilities@5.4.1: - resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} + '@microsoft/fast-web-utilities@5.4.1': dependencies: exenv-es6: 1.1.1 - dev: false - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - dev: true - /@polka/url@1.0.0-next.25: - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - dev: false + '@rollup/rollup-android-arm-eabi@4.14.3': + optional: true - /@rollup/plugin-commonjs@17.1.0(rollup@2.79.1): - resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^2.30.0 + '@rollup/rollup-android-arm64@4.14.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.14.3': + optional: true + + '@rollup/rollup-darwin-x64@4.14.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.14.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.14.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.14.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.14.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.14.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.14.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.14.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.14.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.14.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.14.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.14.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.14.3': + optional: true + + '@types/babel__core@7.20.5': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.8 - rollup: 2.79.1 - dev: true - - /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): - resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - rollup: 2.79.1 - dev: true - - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(tslib@2.6.2)(typescript@5.4.5): - resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} - engines: {node: '>=8.0.0'} - peerDependencies: - rollup: ^2.14.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - tslib: - optional: true + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + + '@types/babel__generator@7.6.8': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - resolve: 1.22.8 - rollup: 2.79.1 - tslib: 2.6.2 - typescript: 5.4.5 - dev: true + '@babel/types': 7.24.0 - /@rollup/pluginutils@3.1.0(rollup@2.79.1): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@types/babel__template@7.4.4': dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 - dev: true + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 - /@rollup/pluginutils@4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + '@types/babel__traverse@7.20.5': dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true + '@babel/types': 7.24.0 - /@tsconfig/svelte@2.0.1: - resolution: {integrity: sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A==} - dev: true + '@types/estree@1.0.5': {} - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: true + '@types/json-schema@7.0.15': {} - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/prop-types@15.7.12': {} + + '@types/react-dom@18.2.25': + dependencies: + '@types/react': 18.2.79 - /@types/node@20.12.7: - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + '@types/react@18.2.79': dependencies: - undici-types: 5.26.5 - dev: true + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/semver@7.5.8': {} - /@types/pug@2.0.10: - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - dev: true + '@types/vscode-webview@1.57.0': {} - /@types/resolve@1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + '@types/vscode-webview@1.57.5': {} + + '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@types/node': 20.12.7 - dev: true + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color - /@types/vscode-webview@1.57.5: - resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} - dev: true + '@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + eslint: 8.57.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color - /@vscode/codicons@0.0.33: - resolution: {integrity: sha512-VdgpnD75swH9hpXjd34VBgQ2w2quK63WljodlUcOoJDPKiV+rPjHrcUc2sjLCNKxhl6oKqmsZgwOWcDAY2GKKQ==} - dev: false + '@typescript-eslint/scope-manager@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 - /@vscode/webview-ui-toolkit@1.4.0(react@18.2.0): - resolution: {integrity: sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==} - peerDependencies: - react: '>=16.9.0' + '@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.7.0': {} + + '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5)': + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.7.0': + dependencies: + '@typescript-eslint/types': 7.7.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitejs/plugin-react@4.2.1(vite@5.2.9)': + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.2.9 + transitivePeerDependencies: + - supports-color + + '@vscode/codicons@0.0.33': {} + + '@vscode/webview-ui-toolkit@1.4.0(react@18.2.0)': dependencies: '@microsoft/fast-element': 1.13.0 '@microsoft/fast-foundation': 2.49.6 '@microsoft/fast-react-wrapper': 0.3.24(react@18.2.0) react: 18.2.0 tslib: 2.6.2 - dev: false - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - color-convert: 1.9.3 - dev: true + acorn: 8.11.3 - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true + acorn@8.11.3: {} - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + ajv@6.12.6: dependencies: - dequal: 2.0.3 + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - /async-mutex@0.4.1: - resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} - dependencies: - tslib: 2.6.2 - dev: false + ansi-regex@5.0.1: {} - /await-to-js@3.0.0: - resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} - engines: {node: '>=6.0.0'} - dev: false + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 - /axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + ansi-styles@4.3.0: dependencies: - dequal: 2.0.3 + color-convert: 2.0.1 - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true + argparse@2.0.1: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + brace-expansion@2.0.1: dependencies: - fill-range: 7.0.1 - dev: true + balanced-match: 1.0.2 - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + braces@3.0.2: + dependencies: + fill-range: 7.0.1 - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001610 + electron-to-chromium: 1.4.738 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + caniuse-lite@1.0.30001610: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + chalk@4.1.2: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.5 - acorn: 8.11.3 - estree-walker: 3.0.3 - periscopic: 3.1.0 + ansi-styles: 4.3.0 + supports-color: 7.2.0 - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true + color-name@1.1.3: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + color-name@1.1.4: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + concat-map@0.0.1: {} - /console-clear@1.1.1: - resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} - engines: {node: '>=4'} - dev: false + convert-source-map@2.0.0: {} - /css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cross-spawn@7.0.3: dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.0 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false + csstype@3.1.3: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + debug@4.3.4: + dependencies: + ms: 2.1.2 - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + deep-is@0.1.4: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 - /es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + electron-to-chromium@1.4.738: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.1.2: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-plugin-react-refresh@0.4.6(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true + espree@9.6.1: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esrecurse@4.3.0: dependencies: - '@types/estree': 1.0.5 + estraverse: 5.3.0 - /exenv-es6@1.1.1: - resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} - dev: false + estraverse@5.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + esutils@2.0.3: {} + + exenv-es6@1.1.1: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: dependencies: reusify: 1.0.4 - dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true + gensync@1.0.0-beta.2: {} - /get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - dev: false + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -562,664 +1963,305 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true + globals@11.12.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + globals@13.24.0: + dependencies: + type-fest: 0.20.2 - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + globby@11.1.0: dependencies: - function-bind: 1.1.2 - dev: true + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + graphemer@1.4.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + ignore@5.3.1: {} + + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + imurmurhash@0.1.4: {} + + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true + inherits@2.0.4: {} - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: true + is-extglob@2.1.1: {} - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-glob@4.0.3: dependencies: - hasown: 2.0.2 - dev: true + is-extglob: 2.1.1 - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true + is-number@7.0.0: {} - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true + is-path-inside@3.0.3: {} - /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true + isexe@2.0.0: {} - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + js-tokens@4.0.0: {} - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + js-yaml@4.1.0: dependencies: - '@types/estree': 1.0.5 - dev: true + argparse: 2.0.1 - /is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - dependencies: - '@types/estree': 1.0.5 + jsesc@2.5.2: {} - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.12.7 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true + json-buffer@3.0.1: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + json-schema-traverse@0.4.1: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: false + json-stable-stringify-without-jsonify@1.0.1: {} - /livereload-js@3.4.1: - resolution: {integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==} - dev: true + json5@2.2.3: {} - /livereload@0.9.3: - resolution: {integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==} - engines: {node: '>=8.0.0'} - hasBin: true + keyv@4.5.4: dependencies: - chokidar: 3.6.0 - livereload-js: 3.4.1 - opts: 2.0.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true + json-buffer: 3.0.1 - /local-access@1.1.0: - resolution: {integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==} - engines: {node: '>=6'} - dev: false + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 - /locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - dev: false - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + lru-cache@5.1.1: dependencies: - sourcemap-codec: 1.4.8 - dev: true + yallist: 3.1.1 - /magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} + lru-cache@6.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - /mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + yallist: 4.0.0 - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + merge2@1.4.1: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + minimatch@9.0.4: dependencies: - minimist: 1.2.8 - dev: true + brace-expansion: 2.0.1 - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + ms@2.1.2: {} - /mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - dev: false + nanoid@3.3.7: {} - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + natural-compare@1.4.0: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + node-releases@2.0.14: {} + + once@1.4.0: dependencies: wrappy: 1.0.2 - dev: true - /opts@2.0.2: - resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==} - dev: true + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true + path-exists@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + path-is-absolute@1.0.1: {} - /periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - dependencies: - '@types/estree': 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 + path-key@3.1.1: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + path-type@4.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + picocolors@1.0.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + picomatch@2.3.1: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + postcss@8.4.38: dependencies: - safe-buffer: 5.2.1 - dev: true + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + prelude-ls@1.2.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: false + react-refresh@0.14.0: {} - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + react@18.2.0: dependencies: - picomatch: 2.3.1 - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true + loose-envify: 1.4.0 - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + resolve-from@4.0.0: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + reusify@1.0.4: {} - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: true - - /rollup-plugin-css-only@3.1.0(rollup@2.79.1): - resolution: {integrity: sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==} - engines: {node: '>=10.12.0'} - peerDependencies: - rollup: 1 || 2 - dependencies: - '@rollup/pluginutils': 4.2.1 - rollup: 2.79.1 - dev: true - /rollup-plugin-livereload@2.0.5: - resolution: {integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==} - engines: {node: '>=8.3'} - dependencies: - livereload: 0.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /rollup-plugin-svelte@7.2.0(rollup@2.79.1)(svelte@4.2.14): - resolution: {integrity: sha512-Qvo5VNFQZtaI+sHSjcCIFDP+olfKVyslAoJIkL3DxuhUpNY5Ys0+hhxUY3kuEKt9BXFgkFJiiic/XRb07zdSbg==} - engines: {node: '>=10'} - peerDependencies: - rollup: '>=2.0.0' - svelte: '>=3.5.0' - dependencies: - '@rollup/pluginutils': 4.2.1 - resolve.exports: 2.0.2 - rollup: 2.79.1 - svelte: 4.2.14 - dev: true - - /rollup-plugin-terser@7.0.2(rollup@2.79.1): - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 + rollup@4.14.3: dependencies: - '@babel/code-frame': 7.24.2 - jest-worker: 26.6.2 - rollup: 2.79.1 - serialize-javascript: 4.0.0 - terser: 5.30.3 - dev: true - - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true + '@types/estree': 1.0.5 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.14.3 + '@rollup/rollup-android-arm64': 4.14.3 + '@rollup/rollup-darwin-arm64': 4.14.3 + '@rollup/rollup-darwin-x64': 4.14.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.3 + '@rollup/rollup-linux-arm-musleabihf': 4.14.3 + '@rollup/rollup-linux-arm64-gnu': 4.14.3 + '@rollup/rollup-linux-arm64-musl': 4.14.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3 + '@rollup/rollup-linux-riscv64-gnu': 4.14.3 + '@rollup/rollup-linux-s390x-gnu': 4.14.3 + '@rollup/rollup-linux-x64-gnu': 4.14.3 + '@rollup/rollup-linux-x64-musl': 4.14.3 + '@rollup/rollup-win32-arm64-msvc': 4.14.3 + '@rollup/rollup-win32-ia32-msvc': 4.14.3 + '@rollup/rollup-win32-x64-msvc': 4.14.3 fsevents: 2.3.3 - dev: true - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - dev: true - - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - rimraf: 2.7.1 - dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - dev: false - /semiver@1.1.0: - resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} - engines: {node: '>=6'} - dev: false + semver@6.3.1: {} - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + semver@7.6.0: dependencies: - randombytes: 2.1.0 - dev: true + lru-cache: 6.0.0 - /sirv-cli@2.0.2: - resolution: {integrity: sha512-OtSJDwxsF1NWHc7ps3Sa0s+dPtP15iQNJzfKVz+MxkEo3z72mCD+yu30ct79rPr0CaV1HXSOBp+MIY5uIhHZ1A==} - engines: {node: '>= 10'} - hasBin: true - dependencies: - console-clear: 1.1.1 - get-port: 3.2.0 - kleur: 4.1.5 - local-access: 1.1.0 - sade: 1.8.1 - semiver: 1.1.0 - sirv: 2.0.4 - tinydate: 1.3.0 - dev: false - - /sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 - totalist: 3.0.1 - dev: false - - /sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true + shebang-command@2.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - buffer-crc32: 0.2.13 - minimist: 1.2.8 - sander: 0.5.1 - dev: true - - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + shebang-regex: 3.0.0 - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true + shebang-regex@3.0.0: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true + slash@3.0.0: {} - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true + source-map-js@1.2.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: - min-indent: 1.0.1 - dev: true + ansi-regex: 5.0.1 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + strip-json-comments@3.1.1: {} + + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + tabbable@5.3.3: {} - /svelte-check@3.6.9(svelte@4.2.14): - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 4.2.14 - svelte-preprocess: 5.1.3(svelte@4.2.14)(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - dev: true - - /svelte-preprocess-react@0.17.0(react-dom@18.2.0)(react@18.2.0)(svelte@4.2.14): - resolution: {integrity: sha512-xQ+u/ayh0jQmqxskBFynIipstJrEhseq5lL3nonPsQmDsRv/BNOHee9GMWNzSkivmoiSiDFxNNQ2i5WESE/Xbw==} - requiresBuild: true - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - svelte: '4' + text-table@0.2.0: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: dependencies: - magic-string: 0.30.9 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - svelte: 4.2.14 - dev: false - - /svelte-preprocess@5.1.3(svelte@4.2.14)(typescript@5.4.5): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true + is-number: 7.0.0 + + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.9 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.14 typescript: 5.4.5 - dev: true - /svelte@4.2.14: - resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} - engines: {node: '>=16'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.9 - periscopic: 3.1.0 - - /tabbable@5.3.3: - resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} - dev: false + tslib@1.14.1: {} - /terser@5.30.3: - resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} - engines: {node: '>=10'} - hasBin: true + tslib@2.6.2: {} + + type-check@0.4.0: dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true + prelude-ls: 1.2.1 - /tinydate@1.3.0: - resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==} - engines: {node: '>=4'} - dev: false + type-fest@0.20.2: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + typescript@5.4.5: {} + + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: - is-number: 7.0.0 - dev: true + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 - /totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - dev: false + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false + uuid@9.0.1: {} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + vite@5.2.9: + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.14.3 + optionalDependencies: + fsevents: 2.3.3 - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - dev: true + which@2.0.2: + dependencies: + isexe: 2.0.0 - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true + wrappy@1.0.2: {} - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + yallist@3.1.1: {} - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + yallist@4.0.0: {} + + yocto-queue@0.1.0: {} diff --git a/typescript/vscode-extension/webview-ui/public/favicon.png b/typescript/vscode-extension/webview-ui/public/favicon.png deleted file mode 100644 index 7e6f5eb5..00000000 Binary files a/typescript/vscode-extension/webview-ui/public/favicon.png and /dev/null differ diff --git a/typescript/vscode-extension/webview-ui/public/index.html b/typescript/vscode-extension/webview-ui/public/index.html deleted file mode 100644 index e35ff80f..00000000 --- a/typescript/vscode-extension/webview-ui/public/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - Hello World - - - - - - - - - diff --git a/typescript/vscode-extension/webview-ui/public/vite.svg b/typescript/vscode-extension/webview-ui/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/typescript/vscode-extension/webview-ui/rollup.config.js b/typescript/vscode-extension/webview-ui/rollup.config.js deleted file mode 100644 index 1cf48810..00000000 --- a/typescript/vscode-extension/webview-ui/rollup.config.js +++ /dev/null @@ -1,83 +0,0 @@ -import svelte from 'rollup-plugin-svelte'; -import commonjs from '@rollup/plugin-commonjs'; -import resolve from '@rollup/plugin-node-resolve'; -import livereload from 'rollup-plugin-livereload'; -import { terser } from 'rollup-plugin-terser'; -import sveltePreprocess from 'svelte-preprocess'; -import typescript from '@rollup/plugin-typescript'; -import css from 'rollup-plugin-css-only'; - -const production = !process.env.ROLLUP_WATCH; - -function serve() { - let server; - - function toExit() { - if (server) server.kill(0); - } - - return { - writeBundle() { - if (server) return; - server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { - stdio: ['ignore', 'inherit', 'inherit'], - shell: true - }); - - process.on('SIGTERM', toExit); - process.on('exit', toExit); - } - }; -} - -export default { - input: 'src/main.ts', - output: { - sourcemap: true, - format: 'iife', - name: 'app', - file: 'public/build/bundle.js' - }, - plugins: [ - svelte({ - preprocess: sveltePreprocess({ sourceMap: !production }), - compilerOptions: { - // enable run-time checks when not in production - dev: !production - } - }), - // we'll extract any component CSS out into - // a separate file - better for performance - css({ output: 'bundle.css' }), - - // If you have external dependencies installed from - // npm, you'll most likely need these plugins. In - // some cases you'll need additional configuration - - // consult the documentation for details: - // https://github.com/rollup/plugins/tree/master/packages/commonjs - resolve({ - browser: true, - dedupe: ['svelte'] - }), - commonjs(), - typescript({ - sourceMap: !production, - inlineSources: !production - }), - - // In dev mode, call `npm run start` once - // the bundle has been generated - !production && serve(), - - // Watch the `public` directory and refresh the - // browser on changes when not in production - !production && livereload('public'), - - // If we're building for production (npm run build - // instead of npm run dev), minify - production && terser() - ], - watch: { - clearScreen: false - } -}; diff --git a/typescript/vscode-extension/webview-ui/src/App.css b/typescript/vscode-extension/webview-ui/src/App.css new file mode 100644 index 00000000..e49fd436 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/App.css @@ -0,0 +1,7 @@ +main { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + height: 100%; +} \ No newline at end of file diff --git a/typescript/vscode-extension/webview-ui/src/App.svelte b/typescript/vscode-extension/webview-ui/src/App.svelte deleted file mode 100644 index 7de95b5c..00000000 --- a/typescript/vscode-extension/webview-ui/src/App.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - - - -
- {#if globalThis.suibase_view_key == "suibase.settings"} - - - Config Howdy! - {:else if globalThis.suibase_view_key == "suibase.console"} - - - Console Howdy! - {:else if globalThis.suibase_view_key == "suibase.sidebar"} - - - Explorer Howdy! - {/if} -
- - diff --git a/typescript/vscode-extension/webview-ui/src/App.tsx b/typescript/vscode-extension/webview-ui/src/App.tsx new file mode 100644 index 00000000..6a40a692 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/App.tsx @@ -0,0 +1,28 @@ +import './App.css' +import { ConsoleController } from './components/ConsoleController'; +import { ExplorerController } from './components/ExplorerController'; +import { DashboardController } from "./components/DashboardController"; + +function App() { + + let controller; + switch (globalThis.suibase_view_key) { + case "suibase.settings": + controller = ; + break; + case "suibase.console": + controller = ; + break; + case "suibase.sidebar": + controller = ; + break; + default: + controller = null; + } + + return ( +
{controller}
+ ); +} + +export default App diff --git a/typescript/vscode-extension/webview-ui/src/app.d.ts b/typescript/vscode-extension/webview-ui/src/app.d.ts deleted file mode 100644 index 899c7e8f..00000000 --- a/typescript/vscode-extension/webview-ui/src/app.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } -} - -export {}; diff --git a/typescript/vscode-extension/webview-ui/src/assets/react.svg b/typescript/vscode-extension/webview-ui/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/typescript/vscode-extension/webview-ui/src/components/ConsoleController.svelte b/typescript/vscode-extension/webview-ui/src/components/ConsoleController.tsx similarity index 73% rename from typescript/vscode-extension/webview-ui/src/components/ConsoleController.svelte rename to typescript/vscode-extension/webview-ui/src/components/ConsoleController.tsx index 41782c49..928e22e3 100644 --- a/typescript/vscode-extension/webview-ui/src/components/ConsoleController.svelte +++ b/typescript/vscode-extension/webview-ui/src/components/ConsoleController.tsx @@ -1,3 +1,17 @@ +// import React from "react"; + +export const ConsoleController = () => { + + // Data exchanged with the extension. + //let suibaseData: SuibaseData = SuibaseData.getInstance(); + + return ( + <>Console Controller + + ); +} + +/* - - - -
- {#key ui_selected_context} - - {#each [...$all_contexts] as [key, mapping]} - {#if key === $ui_selected_context} - - {key},{mapping.context.ui_selector_name} - - {:else} - - {key},{mapping.context.ui_selector_name} - - {/if} - {/each} - - {/key} - - -
- - diff --git a/typescript/vscode-extension/webview-ui/src/components/ExplorerController.tsx b/typescript/vscode-extension/webview-ui/src/components/ExplorerController.tsx new file mode 100644 index 00000000..784209b8 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/components/ExplorerController.tsx @@ -0,0 +1,40 @@ + + //import { VSCode } from "../lib/VSCode"; + //import { SuibaseData } from "../common/SuibaseData"; + + export const ExplorerController = () => { + + // Data exchanged with the extension. + //let suibaseData: SuibaseData = SuibaseData.getInstance(); + + return ( + <>Explorer Controller + + ); + /* + {#key ui_selected_context} + + {#each [...$all_contexts] as [key, mapping]} + {#if key === $ui_selected_context} + + {key},{mapping.context.ui_selector_name} + + {:else} + + {key},{mapping.context.ui_selector_name} + + {/if} + {/each} + + {/key} + + +*/ + } + diff --git a/typescript/vscode-extension/webview-ui/src/env.d.ts b/typescript/vscode-extension/webview-ui/src/env.d.ts deleted file mode 100644 index 15f11727..00000000 --- a/typescript/vscode-extension/webview-ui/src/env.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -interface ImportMetaEnv { - readonly VITE_SSC_API_URL: string; - // more env variables... -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} diff --git a/typescript/vscode-extension/webview-ui/src/global.d.ts b/typescript/vscode-extension/webview-ui/src/global.d.ts index 1a25456a..590cee0b 100644 --- a/typescript/vscode-extension/webview-ui/src/global.d.ts +++ b/typescript/vscode-extension/webview-ui/src/global.d.ts @@ -1 +1,6 @@ -/// +export declare global { + declare module globalThis { + // eslint-disable-next-line no-var + var suibase_view_key: string; + } +} diff --git a/typescript/vscode-extension/webview-ui/src/index.css b/typescript/vscode-extension/webview-ui/src/index.css new file mode 100644 index 00000000..e69de29b diff --git a/typescript/vscode-extension/webview-ui/src/lib/GlobalStorage.ts b/typescript/vscode-extension/webview-ui/src/lib/GlobalStorage.ts index 1bd1720d..a4a13295 100644 --- a/typescript/vscode-extension/webview-ui/src/lib/GlobalStorage.ts +++ b/typescript/vscode-extension/webview-ui/src/lib/GlobalStorage.ts @@ -1,4 +1,4 @@ -import { SuibaseJSONStorage, SuibaseJson } from "../common/SuibaseJSONStorage"; +import { SuibaseJSONStorage } from "../common/SuibaseJSONStorage"; // Readonly interface of a suibaseJSONStorage singleton. // @@ -23,7 +23,7 @@ export class GlobalStorage { } public static deactivate() { - let instance = GlobalStorage.instance; + const instance = GlobalStorage.instance; if (instance) { delete instance.suibaseJSONStorage; } diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L1/consts.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L1/consts.ts deleted file mode 100644 index 8163e3e9..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L1/consts.ts +++ /dev/null @@ -1,14 +0,0 @@ -// Permanent constants -// -// The following should NEVER change because used outside the web app (e.g. backend processing). -// -// Only const of strings and numbers. -// -// No dependency allowed here. -export const TST_CONTEXT_KEY = "TST"; // Test Context -export const MSUI_CONTEXT_KEY = "MSUI"; // SUI Mainnet -export const TSUI_CONTEXT_KEY = "TSUI"; // SUI Testnet -export const DSUI_CONTEXT_KEY = "DSUI"; // SUI Devnet -export const LSUI_CONTEXT_KEY = "LSUI"; // SUI Localnet - -export const VITE_SSC_API_URL = "http://0.0.0.0:44399"; diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L1/json-constructed.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L1/json-constructed.ts deleted file mode 100644 index de83cc8a..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L1/json-constructed.ts +++ /dev/null @@ -1,421 +0,0 @@ -// Class acting as read-only containers of what was received from the network. -// -// Can be initialized only from JSON: -// - Perform some security validations. -// - Property names must match what is being sent by backend -// -// Intended to be used as stored values for svelte stores. - -import { - IContextKeyed, - ILoadedState, - IEpochRevision, - IEpochRevision2, - IVersioned, - JSONHeader, -} from "./poc-interfaces"; - -interface JsonRpc2Response { - jsonrpc: string; - result: any; - id: string | number | null; -} - -export class JSONConstructed { - public readonly json_result: unknown = ""; - public readonly json_id: number = 0; - - constructor(json_obj: unknown) { - // Extract the 'result' field into json_result. If any error, then throw an exception. - if (json_obj == undefined) { - throw new Error("constructor json_obj undefined"); - } - const json_rpc_resp = json_obj as JsonRpc2Response; - - // Validate that every fields are present. - const jsonrpc = json_rpc_resp.jsonrpc; - if (jsonrpc == undefined) { - throw new Error("constructor jsonrpc field undefined"); - } - - // Sanity check the 'jsonrpc' version field. - const jsonrpc_pattern = /^\d+\.\d+$/; - if (!jsonrpc_pattern.test(jsonrpc)) { - throw new Error("constructor jsonrpc field invalid {}" + JSON.stringify(json_obj)); - } - - // Sanity check that 'id' is not null and convert to number as needed. - const id = json_rpc_resp.id; - if (id == undefined) { - throw new Error("constructor id field undefined"); - } - if (id == null) { - throw new Error("constructor id field null"); - } - if (typeof id === "string") { - this.json_id = parseInt(id); - } else { - this.json_id = id; - } - // Sanity check that 'result' is present. - const result = json_rpc_resp.result; - if (result == undefined) { - throw new Error("constructor result field undefined"); - } - - // Blindly extract the result field. Derived classes - // will validate/interpret it further... - this.json_result = result; - } - - toString(): string { - return Object.prototype.toString.call(this) + " = " + JSON.stringify(this); - } - - // Validate and extract the header field from json_result. - protected extract_header(expected_method: string, expected_key: string): JSONHeader { - if (this.json_result == undefined) { - throw new Error("Missing json_result"); - } - - const header = this.json_result["header"]; - return this.convert_to_JSONHeader(header, expected_method, expected_key); - } - - protected convert_to_JSONHeader( - header_obj: unknown, - expected_method: string = undefined, - expected_key: string = undefined - ): JSONHeader { - // This is the app specific header expected from the backend server. - if (header_obj == undefined) { - throw new Error("Missing header: " + this.json_result); - } - - const json_header = header_obj as JSONHeader; - if (json_header.method == undefined) { - throw new Error("Missing header.method: " + this.json_result); - } - if (expected_method && json_header.method != expected_method) { - throw new Error( - "Unexpected header.method [" + - json_header.method + - "], but expect [" + - expected_method + - "]" + - this.json_result - ); - } - - if (json_header.key == undefined) { - throw new Error("Missing header.key: " + this.json_result); - } - if (expected_key && json_header.key != expected_key) { - throw new Error( - "Unexpected header.key [" + - json_header.key + - "], but expect [" + - expected_key + - "]: " + - this.json_result - ); - } - - // Verify that method_uuid and data_uuid are non-empty strings. - if (json_header.methodUuid == undefined) { - throw new Error("Missing header.methodUuid: " + this.toString()); - } - if (json_header.methodUuid == "") { - throw new Error("Empty header.methodUuid: " + this.json_result); - } - - if (json_header.dataUuid == undefined) { - throw new Error("Missing header.dataUuid: " + this.json_result); - } - if (json_header.dataUuid == "") { - throw new Error("Empty header.dataUuid: " + this.json_result); - } - - // TODO Further validate the UUID fields. - return new JSONHeader(json_header.method, json_header.methodUuid, json_header.dataUuid, json_header.key); - } -} - -export class VersionsLatest extends JSONConstructed implements IVersioned, IContextKeyed, ILoadedState { - get [Symbol.toStringTag]() { - return "VersionsLatest"; - } - readonly isLoaded: boolean; // True if successfully initialized with JSON. - readonly header: JSONHeader; - readonly context_key: string; // The context.prefix used as a unique key. - readonly versions: JSONHeader[]; - readonly version_workdir_status_idx: number; - - constructor(json_obj: unknown = undefined, workdir: string, context_key: string) { - // Just throw an exception if anything goes wrong. - super(json_obj); // Validate + initializes json_result with JSON-RPC result field. - this.isLoaded = false; - this.header = super.extract_header("getVersions", workdir); - this.context_key = context_key; - - const candidate = this.json_result as VersionsLatest; - - this.versions = []; - for (let i = 0; i < candidate.versions.length; i++) { - const element = candidate.versions[i]; - this.versions.push(super.convert_to_JSONHeader(element)); - } - - // Quick check if something went wrong. - if (this.versions.length == 0) { - throw new Error("Empty versions: " + this.json_result); - } - - // Initialize index on expected elements in versions. - // Example of matching is: - // version_workdir_status_idx is the index in versions where the element has method = "GetWorkdirStatus". - // version_workdir_status_idx = -1 if not found. - this.version_workdir_status_idx = this.versions.findIndex((element) => { - return element.method == "getWorkdirStatus"; - }); - if (this.version_workdir_status_idx == -1) { - throw new Error("Missing getWorkdirStatus: " + this.json_result); - } - - // Success. - this.isLoaded = true; - } - - public isEquivalent(other: VersionsLatest): boolean { - const areVersionsEqual = - this.versions.length === other.versions.length && - this.versions.every((value, index) => value === other.versions[index]); - - // Purposely do not compare base properties. - const result = this.isLoaded === other.isLoaded && this.header === other.header && areVersionsEqual; - - return result; - } -} - -export class WorkdirPackagesConfig - extends JSONConstructed - implements IVersioned, IContextKeyed, ILoadedState -{ - get [Symbol.toStringTag]() { - return "WorkdirPackagesConfig"; - } - readonly isLoaded: boolean; // True if successfully initialized with JSON. - readonly header: JSONHeader; - readonly context_key: string; - - constructor(json_obj: unknown = undefined, workdir: string, context_key: string) { - // Just throw an exception if anything goes wrong. - super(json_obj); - this.isLoaded = false; - this.header = super.extract_header("getWorkdirPackagesConfig", workdir); - this.context_key = context_key; - - const candidate = json_obj as WorkdirPackagesConfig; - - // TODO More validation and loading into specialize readonly members... - - // Success. - this.isLoaded = true; - } - - public isEquivalent(other: WorkdirPackagesConfig): boolean { - // Purposely do not compare base properties. - return this.isLoaded === other.isLoaded && this.header === other.header; - } -} - -export class WorkdirStatus extends JSONConstructed implements IVersioned, IContextKeyed, ILoadedState { - get [Symbol.toStringTag]() { - return "WorkdirStatus"; - } - readonly isLoaded: boolean; // True if successfully initialized with JSON. - readonly header: JSONHeader; - readonly context_key: string; - - constructor(json_obj: unknown = undefined, key: string) { - // Just throw an exception if anything goes wrong. - super(json_obj); - this.context_key = key; - if (json_obj == undefined) { - this.isLoaded = false; - } else { - const candidate = json_obj as VersionsLatest; - this.header = candidate.header; - - // TODO More validation and loading into specialize readonly members... - - // Success. - this.isLoaded = true; - } - } - - public isEquivalent(other: WorkdirPackagesConfig): boolean { - // Purposely do not compare base properties. - return this.isLoaded === other.isLoaded && this.header === other.header; - } -} - -export class WorkdirSuiEvents extends JSONConstructed implements IVersioned, IContextKeyed, ILoadedState { - get [Symbol.toStringTag]() { - return "WorkdirSuiEvents"; - } - readonly isLoaded: boolean; // True if successfully initialized with JSON. - readonly header: JSONHeader; - readonly context_key: string; -} - -export class EpochLatest - extends JSONConstructed - implements IContextKeyed, IEpochRevision, IEpochRevision2, ILoadedState -{ - get [Symbol.toStringTag]() { - return "EpochLatest"; - } - - readonly isLoaded: boolean; // True if successfully initialized with JSON. - - readonly f: number; // !=0 on server side errors. - readonly v: number; // JSON format version. - readonly e: number; // Epoch. - readonly r: number; // Data revision for 1st wave. - readonly t: number; // Unix timestamp (UTC). Start of epoch (network) - readonly y: number; // Unix timestamp (UTC). End of epoch estimation. - readonly z: number; // Number of revision for y. - readonly s: string; // Hash suffix for 1st wave. - readonly r2: number; // Data revision for 2nd wave. - readonly s2: string; // Hash suffix for 2nd wave. - readonly context_key: string; - - // Make sure to update isEqual if adding new property here!!! - constructor(json_obj: unknown = undefined, key: string) { - // Just throw an exception if anything goes wrong. - super(json_obj); - this.context_key = key; - if (json_obj == undefined) { - this.f = this.v = this.e = this.r = this.t = this.y = this.z = this.r2 = 0; - this.s = this.s2 = ""; - this.isLoaded = false; - } else { - const candidate = json_obj as EpochLatest; - this.f = candidate.f; - this.v = candidate.v; - this.e = candidate.e; - this.r = candidate.r; - this.t = candidate.t; - this.y = candidate.y; - this.z = candidate.z; - this.s = candidate.s; - this.r2 = candidate.r2; - this.s2 = candidate.s2; - - // TODO More validation... - if (this.f != 0) { - throw new Error("Failed at server" + this.toString()); - } - - // Success. - this.isLoaded = true; - } - } - - public isEquivalent(other: EpochLatest): boolean { - // Purposely do not compare base properties. - const result = - this.isLoaded == other.isLoaded && - this.f == other.f && - this.v == other.v && - this.e == other.e && - this.r == other.r && - this.t == other.t && - this.y == other.y && - this.z == other.z && - this.s == other.s && - this.r2 == other.r2 && - this.s2 == other.s2; - - return result; - } -} - -class JSONConstructedEpochTable - extends JSONConstructed - implements IContextKeyed, IEpochRevision, ILoadedState -{ - readonly isLoaded: boolean; // True if successfully initialized with JSON. - - readonly f: number; // !=0 on server side errors. - readonly v: number; // JSON format version. - readonly e: number; // Epoch. - readonly r: number; // Data revision for 1st wave. - readonly t: number; // Unix timestamp (UTC). Start of epoch (network) - readonly s: string; // Hash suffix for 1st wave. - readonly row: number; - readonly col: number; - readonly table: unknown; - readonly context_key: string; - - // Make sure to update isEqual if adding new property here!!! - constructor(json_obj: unknown = undefined, key: string) { - // Just throw an exception if anything goes wrong. - super(json_obj); - this.context_key = key; - this.s = ""; // Not provided by API, but needed for IEpochRevision - if (json_obj == undefined) { - this.f = this.v = this.e = this.r = this.t = this.row = this.col = 0; - this.table = {}; - this.isLoaded = false; - } else { - const candidate = json_obj as JSONConstructedEpochTable; - this.f = candidate.f; - this.v = candidate.v; - this.e = candidate.e; - this.r = candidate.r; - this.t = candidate.t; - this.row = candidate.row; - this.col = candidate.col; - this.table = candidate.table; - - // TODO More validation... - if (this.f != 0) { - throw new Error("Failed at server" + this.toString()); - } - - // Success. - this.isLoaded = true; - } - } - - public isEquivalent(other: JSONConstructedEpochTable): boolean { - // Purposely do not compare base properties and data. - // If f v e r t, row and col matches then assume data is matching. - const result = - this.isLoaded == other.isLoaded && - this.f == other.f && - this.v == other.v && - this.e == other.e && - this.r == other.r && - this.t == other.t && - this.row == other.row && - this.col == other.col; - - return result; - } -} - -export class EpochLeaderboard extends JSONConstructedEpochTable { - get [Symbol.toStringTag]() { - return "EpochLeaderboard"; - } -} - -export class EpochValidators extends JSONConstructedEpochTable { - get [Symbol.toStringTag]() { - return "EpochValidators"; - } -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-constructed.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-constructed.ts deleted file mode 100644 index c013c52a..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-constructed.ts +++ /dev/null @@ -1,61 +0,0 @@ -// Class acting as read-only containers. -// -// Intended to be used as stored values for svelte stores. -// -// Can be initialized only from constructor. - -import type { ILoadedState, IContextKeyed } from "./poc-interfaces"; - -export class POCConstructed { - toString(): string { - return Object.prototype.toString.call(this) + " = " + JSON.stringify(this); - } -} - -/* -export class EpochLeaderboardHeader extends POCConstructed implements - IEpochTimeTargets, ILoadedState, IContextKeyed { - get [Symbol.toStringTag]() { - return 'EpochLeaderboardHeader'; - } - - readonly isLoaded: boolean = false; // Becomes true if successfully initialized. - - readonly e: number; // Epoch. - readonly remaining: string; - readonly elapsed: string; - readonly context_key: string; - - // These are for debug purpose. - readonly tick: number; - readonly current: number; // Unix UTC now on last update. - - // Make sure to update isEqual if adding new property here!!! - constructor( p_e: number, p_remaining: string, p_elapsed: string, p_tick: number, p_current: number, p_context_key: string) { - super(); - // For IEpochTimeTargets. - this.e = p_e; - this.remaining = p_remaining; - this.elapsed = p_elapsed; - - // The context this object belongs to. - this.context_key = p_context_key; - - // More values for debugging purpose. - this.tick = p_tick; - this.current = p_current - // Success. - this.isLoaded = true; - } - - isEqual(other: EpochLeaderboardHeader): boolean { - // Purposely do not compare base properties. - // Compare only what affects the logic (not the debug values) - return ( - this.isLoaded == other.isLoaded && - this.e == other.e && - this.remaining == other.remaining && - this.elapsed == other.elapsed - ); - } -}*/ diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-interfaces.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-interfaces.ts deleted file mode 100644 index e2fad8a0..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L1/poc-interfaces.ts +++ /dev/null @@ -1,76 +0,0 @@ -// Some trivial interfaces with no dependencies. -export interface ILoadedState { - readonly isLoaded: boolean; -} - -export class JSONHeader { - readonly method: string; - readonly methodUuid: string; - readonly dataUuid: string; - readonly key: string; - - constructor(method: string = "", method_uuid: string = "0", data_uuid: string = "0", key: string = "") { - this.method = method; - this.methodUuid = method_uuid; - this.dataUuid = data_uuid; - this.key = key; - } - - static default(): JSONHeader { - return new JSONHeader(); - } - - public is_older_revision_of(other?: JSONHeader): boolean { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not newer. - } - - // If their method_uuid are different, then assume other is newer. - // (it is not possible to know which version is more recent). - if (other.methodUuid != this.methodUuid) { - return true; - } - - // Both are defined, so compare the sortable data_uuid. - return other.dataUuid > this.dataUuid; - } -} - -export interface IVersioned { - // header.data_uuid can be compared for when their uuid_method is the same. - // A greater uuid_data means more recent data. - // - // header.method_uuid is not sortable and should be used only to detect a change of producer. - readonly header: JSONHeader; -} - -export interface IEpochRevision { - readonly e: number; // Epoch number. - readonly r: number; // Revision number. - readonly s: string; // The corresponding unique hash string. -} - -export interface IEndOfEpochFields { - readonly e: number; // Epoch number. - readonly t: number; // Unix timestamp (UTC) for beginning of epoch. - readonly y: number; // Unix timestamp (UTC) for end of epoch estimation. -} - -export interface IEpochRevision2 { - readonly e: number; // Epoch number. - readonly r2: number; // Revision wave 2 number. - readonly s2: string; // The corresponding unique hash string. -} - -export interface IContextKeyed { - readonly context_key: string; -} - -export interface IEndOfEpochETA { - readonly e: number; // Epoch number. - readonly remaining: string; // Time to end of epoch. - readonly elapsed: string; // Time since beginning of epoch. - readonly tick: number; // Increment on every update (debug purpose). -} - -export type IEpochETA = IEndOfEpochETA & ILoadedState & IContextKeyed; diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L1/stores.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L1/stores.ts deleted file mode 100644 index de814828..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L1/stores.ts +++ /dev/null @@ -1,273 +0,0 @@ -// General purpose custom svelte stores. -// -// https://www.stevekinney.net/writing/svelte-stores -// https://monad.fi/en/blog/svelte-custom-stores/ -// -import { writable, type Subscriber, type Writable, type Readable, type Unsubscriber } from "svelte/store"; -import { Mutex } from "async-mutex"; - -/* -// A Readable that increments once per minute. -// -export class OneMinuteTickStore implements Readable { - private static _instance: OneMinuteTickStore; - - private readonly _store_obj: Writable; - private _loop_mutex: Mutex = new Mutex(); - - // Private constructor forces use of get_instance instead. - private constructor() { - this._store_obj = writable(0); - } - - public static get_instance(): OneMinuteTickStore { - if (!OneMinuteTickStore._instance) { - OneMinuteTickStore._instance = new OneMinuteTickStore(); - if (browser) { - // Initiate periodic calls (once per minute). - setTimeout(() => { - OneMinuteTickStore._instance._sync_run(); - }, 6000); - } - } - - return OneMinuteTickStore._instance; - } - - private _sync_run(): void { - // Use to call _async_run() when the caller does - // not care for the returned promise or error. - // - // This also eliminate eslint warning when the returned promise is unused. - this._async_run().catch((err) => console.log(err)); - } - - private async _async_run(): Promise { - await this._loop_mutex.runExclusive(() => { - this._store_obj.update((n: number) => { - return n + 1; - }); - - // Retrig a call in one minute. - setTimeout(() => { - this._sync_run(); - }, 6000); - }); - } - - public subscribe(listener: Subscriber) { - return () => { - return this._store_obj.subscribe(listener); - }; - } -} - -// Create the OneMinuteTickStore singleton. -export const one_minute_tick = OneMinuteTickStore.get_instance(); -*/ - -// Store with following functionality: -// - Never "blocking" on change from the dependency. -// - Can optionally run periodically while there -// is at least one subscriber. -// - All onRun calls are exclusive (mutex protected) - -// T: The type stored by this LoadStore -// D: The type stored by the Readable dependency. -export abstract class LoadStore implements Readable { - protected readonly _inner: Writable; - protected readonly _dependency: Readable; - private readonly _retrig_default: number; // max targeted milliseconds delay between retrig (0 for never retrig). - private readonly _always_retrig: boolean; - private _unsubscriber_dependency: Unsubscriber | undefined; - - private _subscriber_count = 0; - private _loop_mutex: Mutex = new Mutex(); - - protected abstract onRun(id: number, new_dependency_value?: D): void; - - protected abstract onFirstSubscribe(): void; - protected abstract onLastUnsubscribe(): void; - - private _sync_run(id: number, new_dependency?: D): void { - // Use to call _async_run() when the caller does - // not care for the returned promise or error. - // (e.g. setTimeout). - // - // This also eliminate eslint warning when the returned promise is unused. - this._async_run(id, new_dependency).catch((err) => console.log(err)); - } - - private async _async_run(id: number, new_dependency?: D): Promise { - // Not sure if mutex is needed, but play safe here because this class - // might later get involve in a mix of async/sync complexities. - await this._loop_mutex.runExclusive(() => { - //console.log( "_async_run new_dependency="+(new_dependency?new_dependency.toString():"undefined")); - this.onRun(id, new_dependency); - }); - } - - // Retrig and back-off logic. - private _enabled_retrig: boolean; - private _in_failure: boolean; - private _tx_id: number; - private _tx_id_for_retrig: number; - private _effective_delay: number; - - private retrig_onRun(): void { - this._tx_id++; - if (this._enabled_retrig) { - this._tx_id_for_retrig = this._tx_id; - setTimeout( - (id) => { - this._sync_run(id, undefined); - }, - this._effective_delay, - this._tx_id_for_retrig - ); - } - } - - private retrig_onRun_now(): void { - this._tx_id++; - if (this._enabled_retrig) { - this._tx_id_for_retrig = this._tx_id; - setTimeout( - (id) => { - this._sync_run(id, undefined); - }, - 0, - this._tx_id_for_retrig - ); - } - } - - private force_onRun(new_dependency: D): void { - this._tx_id++; - setTimeout( - (id, v) => { - this._sync_run(id, v); - }, - 0, - this._tx_id, - new_dependency - ); - } - - // Every onRun *must* call either report_in_sync() or report _done(). - // - // report_in_sync() is for a store that does retry of loading an external - // source with backoff delay when no success (not in-synch). - // - // report_done() is for a store that wants to be periodically called - // regardless of being in synch or not with an external source. - // - // It is OK to do one of these call a lot later in a promise. - protected report_done(id: number) { - if (!this._retrig_default) return; // Don't care. - if (id == this._tx_id_for_retrig) { - this.retrig_onRun(); - } - } - - protected report_in_sync(id: number, in_sync: boolean): void { - if (!this._retrig_default) return; // Don't care. - if (this._always_retrig) { - // Caller should call report_done() directly instead, but - // lets save the day by doing the right thing here. - return; - } - const is_the_retrig = id == this._tx_id_for_retrig; - let call_retrig = false; - - if (in_sync) { - // Logic for any onRun observing the data to be in-sync. - if (this._in_failure) { - this._in_failure = false; - this._effective_delay = this._retrig_default; - } - call_retrig = is_the_retrig; - } else if (!this._in_failure) { - // Not in-sync for first time, adjust for quick retrig - // (previous retrig will be noop unless it succeeds). - this._in_failure = true; - this._effective_delay = 50; // 50 millisecond (will backoff on further retry) - call_retrig = true; - } else if (is_the_retrig) { - // Not in-sync and this is the second "retry". - // Slowly back-off. - let new_delay = this._effective_delay + 1000; - if (new_delay > this._retrig_default) new_delay = this._retrig_default; - this._effective_delay = new_delay; - call_retrig = true; - } - - if (call_retrig) { - this.retrig_onRun(); - } - } - - protected constructor(retrig: number, dependency: Readable, always_retrig = false) { - this._dependency = dependency; - this._retrig_default = retrig; - this._effective_delay = retrig; - this._in_failure = false; - this._tx_id = 1; - this._tx_id_for_retrig = 0; - this._enabled_retrig = false; - this._always_retrig = always_retrig; - this._inner = writable(undefined); - } - - public subscribe(listener: Subscriber): Unsubscriber { - if (this._subscriber_count == 0) { - this._enabled_retrig = true; - - // Derived does its own logic. - this.onFirstSubscribe(); - - // Initiate an immediate retrig if last known state was in-error or retrig - // expected to always happen. - if (this._in_failure || this._always_retrig) { - this.retrig_onRun_now(); - } - - // Subscription to dependency. - this._unsubscriber_dependency = this._dependency?.subscribe((value: D) => { - // This is called whenever the dependency is initialized or changed. - // For Reactive Abstraction, that means whenever the context changes. - // Note: This always gets called immediately on subscription. - this.force_onRun(value); - }); - } - - this._subscriber_count += 1; - const _unsubscriber = this._inner.subscribe(listener); - return () => { - this._subscriber_count -= 1; - if (this._subscriber_count == 0) { - this._enabled_retrig = false; - - if (this._unsubscriber_dependency) { - this._unsubscriber_dependency(); - this._unsubscriber_dependency = undefined; - } - // Derived does its own logic. - this.onLastUnsubscribe(); - } - _unsubscriber(); - }; - } - - protected set(value: T) { - this._inner.set(value); - } - - public value(): T | undefined { - return this.value(); - } - - public get subscriber_count(): number { - return this._subscriber_count; - } -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L2/globals.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L2/globals.ts deleted file mode 100644 index 37a193cc..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L2/globals.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { writable, type Writable, get } from "svelte/store"; -import { LSUI_CONTEXT_KEY, VITE_SSC_API_URL } from "../L1/consts"; - -// Step for a context switch: -// - Make all context store use the proper context. This will make the UI -// use the proper sources of data. -// - Trig loop refresh(). Will properly update all table/graph/data stores in new context. - -export const global_srv: Writable = writable(""); -export const global_url_proxy: Writable = writable(String("http://0.0.0.0:44399")); -export const global_context: Writable = writable(LSUI_CONTEXT_KEY); - -const rsplit = function (source: string, sep: string, maxsplit: number) { - const split = source.split(sep); - return maxsplit ? [split.slice(0, -maxsplit).join(sep)].concat(split.slice(-maxsplit)) : split; -}; - -let _min_headers_key = ""; -export const min_headers_key = function (): string { - if (_min_headers_key == "") { - _min_headers_key = "Accept-Language"; - } - return _min_headers_key; -}; - -let _min_headers_value = ""; -export const min_headers_value = function (): string { - if (_min_headers_value == "") { - _min_headers_value = "en-US,en;q=0.9,fr;q=0.8"; - } - return _min_headers_value; -}; - -export const init_srv = function (srv_str: string) { - const url_proxy: string = get(global_url_proxy).toString(); - const sbeg = rsplit(url_proxy, "/", 1)[0] + "/"; - global_url_proxy.set(sbeg + srv_str + ".mhax.io"); - global_srv.set(srv_str); -}; diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L2/interfaces.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L2/interfaces.ts deleted file mode 100644 index 63478ecb..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L2/interfaces.ts +++ /dev/null @@ -1,62 +0,0 @@ -import type { Readable } from "svelte/store"; -import type { - EpochLatest, - EpochLeaderboard, - EpochValidators, - VersionsLatest, - WorkdirStatus, -} from "../L1/json-constructed"; -import type { IEpochETA } from "../L1/poc-interfaces"; - -export interface IEpochStores { - epoch_latest: Readable; - epoch_leaderboard: Readable; - epoch_leaderboard_header: Readable; - epoch_validators: Readable; - epoch_validators_header: Readable; - update_ev(force_refresh: boolean): Promise; -} - -export interface EpochStoresConstructor { - new (context: IBlockchainContext): IEpochStores; -} - -export function createEpochStores(ctor: EpochStoresConstructor, context: IBlockchainContext): IEpochStores { - return new ctor(context); -} - -export interface IGlobalsStores { - versions_latest: Readable; - workdir_status: Readable; - update_versions(force_refresh: boolean): Promise; -} - -export interface GlobalsStoresConstructor { - new (context: IBlockchainContext): IGlobalsStores; -} - -export function createGlobalsStores( - ctor: GlobalsStoresConstructor, - context: IBlockchainContext -): IGlobalsStores { - return new ctor(context); -} - -export interface IBlockchainContext { - readonly ui_selector_name: string; // "Sui (Mainnet)", "Sui (Localnet)", "BTC (Devnet)"... - readonly ui_name: string; // Sui, Bitcoin, Ethereum... - readonly symbol: string; // SUI,BTC,ETH... - readonly prefix: string; // X_CONTEXT_PREFIX is short unique name intended to never change. - readonly workdir: string; // localnet, devnet, testnet or mainnet. - readonly server: string; // Backend API server. -} - -export interface IBlockchainStores { - readonly epoch_stores: IEpochStores; // Svelte stores updated typically once per epoch. - readonly globals_stores: IGlobalsStores; // Svelte stores updated to match the backend. -} - -export interface IBlockchainContextMapping { - readonly context: IBlockchainContext; - readonly stores: IBlockchainStores; -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L3/epoch_stores.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L3/epoch_stores.ts deleted file mode 100644 index 7670cb7f..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L3/epoch_stores.ts +++ /dev/null @@ -1,496 +0,0 @@ -import { writable, get, type Readable, type Writable, type Unsubscriber } from "svelte/store"; - -import dayjs from "dayjs"; - -import relativeTime from "dayjs/plugin/relativeTime.js"; -import utc from "dayjs/plugin/utc.js"; - -// Layer 1 -import type { - IContextKeyed, - IEpochRevision, - ILoadedState, - IEpochETA, - IEndOfEpochFields, -} from "../L1/poc-interfaces"; -import { EpochLatest, EpochLeaderboard, EpochValidators } from "../L1/json-constructed"; - -import { LoadStore } from "../L1/stores"; - -// Layer 2 -import { min_headers_key, min_headers_value, global_url_proxy } from "../L2/globals"; -import type { IBlockchainContext, IEpochStores } from "../L2/interfaces"; -import { sleep } from "../../utils"; - -dayjs.extend(relativeTime); -dayjs.extend(utc); - -class EpochRevision implements IEpochRevision { - private _e: number; - private _r: number; - private _s: string; // Store, but ignore in comparisons. - - public get e() { - return this._e; - } - public get r() { - return this._r; - } - public get s() { - return this._s; - } - - constructor(p_e: number, p_r: number, p_s: string) { - this._e = p_e; - this._r = p_r; - this._s = p_s; - } - - public is_older_revision_of(other?: IEpochRevision): boolean { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not newer. - } - - // Both are defined, so compare their epoch and revision. - return other.e > this.e || (other.e === this.e && other.r > this.r); - } - - public is_same_revision_as(other?: IEpochRevision) { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not the same. - } - // Both are defined, so compare their epoch and revision. - return this.e === other.e && this.r === other.r; - } - - public set(other?: IEpochRevision) { - if (other === undefined) { - this._e = 0; - this._r = 0; - this._s = ""; - } else { - this._e = other.e; - this._r = other.r; - this._s = other.s; - } - } -} - -// LoadStore with dependencies on EV changes. -// -// (Dependency on a Readable extends LoadStore { - private readonly _revision_needed: EpochRevision; - private readonly _revision_loaded: EpochRevision; - protected readonly _context: IBlockchainContext; - - public constructor(context: IBlockchainContext, dependency: Readable) { - const retrig = 60000; // 1 minute. - super(retrig, dependency); - this._revision_needed = new EpochRevision(0, 0, ""); - this._revision_loaded = new EpochRevision(0, 0, ""); - this._context = context; - } - - // Load "StaticDynamic" data which is specific to an epoch. - protected async api_load_sd(epoch_revision: EpochRevision, sd_name: string): Promise { - // force-cache will force browser to use the cache even if expired or stale. - // This is what we want since the response here is immutable for an 'epoch_latest.s' - const url_path = `${this._context.server}/sd/${sd_name}`; - const response = await fetch( - `${get(global_url_proxy)}/${url_path}/${epoch_revision.e}/${epoch_revision.s}`, - { cache: "force-cache" } - ); - const values = (await response.json()) as T; - return Promise.resolve(values); - } - - protected abstract api_load(context: IBlockchainContext, epoch_revision: EpochRevision): Promise; - - protected onRun(id: number, new_dependency?: EpochLatest): void { - // Is the new_dependency better than the one already loaded/loading? - // If yes, then use it. - if (new_dependency) { - if (this._revision_needed.is_older_revision_of(new_dependency)) - this._revision_needed.set(new_dependency); - } - - // Need to try loading? - if (this._revision_loaded.is_older_revision_of(this._revision_needed)) { - // Call a sync load API. Assume caller will do it ASYNC. - this.api_load(this._context, this._revision_needed) - .then((new_leaderboard) => { - //console.log( "leaderboard="+JSON.stringify(new_leaderboard)); - if (this._revision_needed.is_same_revision_as(new_leaderboard)) { - this._revision_loaded.set(this._revision_needed); - this.set_store(new_leaderboard); - this.report_in_sync(id, true); - } else { - this.report_in_sync(id, false); - } - }) - .catch((err) => { - console.log(err); - this.report_in_sync(id, false); - }); - } - } - - protected abstract set_store(new_value: T): void; - - protected onFirstSubscribe(): void { - // eslint-disable @typescript-eslint/no-empty-function - //console.log( "firstSubscribe" ); - } - - protected onLastUnsubscribe(): void { - // eslint-disable @typescript-eslint/no-empty-function - //console.log( "lastUnsubscribe" ); - } -} - -class EpochLoadStoreLeaderboard extends EpochLoadStore { - // TODO: Try to move all this to base class. - private async async_api_load( - context: IBlockchainContext, - epoch_revision: EpochRevision - ): Promise { - const resp_json: unknown = await this.api_load_sd(epoch_revision, "TOPV"); - //console.log( "async_api_load of leaderboard="+JSON.stringify(resp_json)); - const values: EpochLeaderboard = new EpochLeaderboard(resp_json, context.prefix); - return Promise.resolve(values); - } - - protected api_load(context: IBlockchainContext, epoch_revision: EpochRevision): Promise { - return this.async_api_load(context, epoch_revision); //.then().catch((err)=>{ console.log(err);}); - } - - set_store(new_value: EpochLeaderboard): void { - this.set(new_value); - } -} - -class EpochLoadStoreValidators extends EpochLoadStore { - // TODO: Try to move all this to base class, except for ALLV - private async async_api_load( - context: IBlockchainContext, - epoch_revision: EpochRevision - ): Promise { - const resp_json: unknown = await this.api_load_sd(epoch_revision, "ALLV"); - //console.log( "async_api_load of leaderboard="+JSON.stringify(resp_json)); - const values: EpochValidators = new EpochValidators(resp_json, context.prefix); - return Promise.resolve(values); - } - - protected api_load(context: IBlockchainContext, epoch_revision: EpochRevision): Promise { - return this.async_api_load(context, epoch_revision); //.then().catch((err)=>{ console.log(err);}); - } - - set_store(new_value: EpochValidators): void { - this.set(new_value); - } -} - -// Store for ETA of next update for another store. -// -// Functionality: -// - Never "blocking" on change from the dependencies. -// - Updates once per minute while there is at least one subscriber. -// - Output includes a derived ILoadedState that considers -// matching epoch versioning from the dependencies. - -// Type used for the time source dependency. -type IEpochTimeSource = IEndOfEpochFields & ILoadedState; - -// Stored value returned by ETAStore. -class ETAValue implements IEpochETA { - isLoaded: boolean; - e: number; // Epoch number. - remaining: string; // Time to end of epoch. - elapsed: string; // Time since beginning of epoch. - tick: number; - context_key: string; - - constructor(context: string) { - this.isLoaded = false; - this.e = 0; - this.remaining = ""; - this.elapsed = ""; - this.tick = 0; - this.context_key = context; - } -} - -// Class used for some internal variables of ETASTore only. -class EpochTimeSource implements IEndOfEpochFields { - private _e: number; - private _t: number; - private _y: number; - - public get e() { - return this._e; - } - public get t() { - return this._t; - } - public get y() { - return this._y; - } - - constructor(p_e: number, p_t: number, p_y: number) { - this._e = p_e; - this._t = p_t; - this._y = p_y; - } - - public set(other?: IEndOfEpochFields) { - if (other === undefined) { - this._e = 0; - this._t = 0; - this._y = 0; - } else { - this._e = other.e; - this._t = other.t; - this._y = other.y; - } - } -} - -export class ETAStore extends LoadStore { - private readonly _time_source_fields: EpochTimeSource; - private readonly _dependency_fields: EpochRevision; - private readonly _time_source: Readable; - private readonly _eta_value: ETAValue; - private _unsubscriber_time_source: Unsubscriber | undefined; - protected readonly _context: IBlockchainContext; - - public constructor( - context: IBlockchainContext, - dependency: Readable, - time_source: Readable - ) { - const retrig = 60000; // 1 minute. - const always_retrig = true; - super(retrig, dependency, always_retrig); - this._time_source = time_source; - this._context = context; - this._eta_value = new ETAValue(this._context.prefix); - this._time_source_fields = new EpochTimeSource(0, 0, 0); - this._dependency_fields = new EpochRevision(0, 0, ""); - } - - private update_store(): void { - // isLoaded == true only when: - // - dependency and time_source epoch are matching. - // - dependency is defined (epoch != 0) - let isLoadedChanged = false; - let isAnyFieldChanged = false; - - const new_e = this._time_source_fields.e; - if (this._dependency_fields.e != 0 && this._dependency_fields.e == new_e) { - if (this._eta_value.e != new_e) { - this._eta_value.e = new_e; - isAnyFieldChanged = true; - } - - const current = dayjs().unix(); // Now - const djs_start = dayjs.unix(this._time_source_fields.t); - const new_elapsed = djs_start.fromNow(); - if (this._eta_value.elapsed != new_elapsed) { - this._eta_value.elapsed = new_elapsed; - isAnyFieldChanged = true; - } - - const e_latest = this._time_source_fields.y; - let new_remaining = ""; - if (e_latest != 0) { - if (current >= e_latest) { - new_remaining = "in progress"; - } else { - const djs_end = dayjs.unix(e_latest); - new_remaining = djs_end.fromNow(); - } - } - if (this._eta_value.remaining != new_remaining) { - this._eta_value.remaining = new_remaining; - isAnyFieldChanged = true; - } - - if (!this._eta_value.isLoaded) { - this._eta_value.isLoaded = true; - isLoadedChanged = true; - } - } else { - if (this._eta_value.isLoaded) { - this._eta_value.isLoaded = false; - this._eta_value.remaining = ""; - this._eta_value.elapsed = ""; - isLoadedChanged = true; - } - } - - if (isLoadedChanged || isAnyFieldChanged) { - this._eta_value.tick++; - this.set(this._eta_value); - } - } - - protected onRun(id: number, new_dependency?: D): void { - if (new_dependency) { - if (new_dependency.isLoaded) { - this._dependency_fields.set(new_dependency); - } else { - this._dependency_fields.set(undefined); - } - } - this.update_store(); - this.report_done(id); - } - - protected onFirstSubscribe(): void { - // Subscribe to the time_source. - this._unsubscriber_time_source = this._time_source?.subscribe( - (new_timesource_value: IEpochTimeSource) => { - // This is called whenever the time_source is initialized or changed. - // Note: This always gets called immediately on subscription. - if (new_timesource_value?.isLoaded) { - this._time_source_fields.set(new_timesource_value); - } else { - this._time_source_fields.set(undefined); - } - this.update_store(); - } - ); - } - - protected onLastUnsubscribe(): void { - // Unsubscribe from the time_source (as needed). - this._unsubscriber_time_source?.(); - this._unsubscriber_time_source = undefined; - } -} - -export class EpochStores implements IEpochStores { - // Public read-only facades. - public readonly epoch_latest: Readable; - public readonly epoch_leaderboard: Readable; - public readonly epoch_leaderboard_header: Readable; - public readonly epoch_validators: Readable; - public readonly epoch_validators_header: Readable; - - // Fetch parameters. - private _fetch_headers_ev_sd = new Headers(); - private _optional_fields = {}; - - // Private R/W stores. - private readonly _epoch_latest_instance: Writable; - private readonly _epoch_leaderboard_instance: EpochLoadStoreLeaderboard; - private readonly _epoch_leaderboard_header_instance: ETAStore; - private readonly _epoch_validators_instance: EpochLoadStoreValidators; - private readonly _epoch_validators_header_instance: ETAStore; - - // Context will never change for an instance of EpochStores. - private _context: IBlockchainContext; - constructor(context: IBlockchainContext) { - this._context = context; - this._fetch_headers_ev_sd.append(min_headers_key(), min_headers_value()); - this._optional_fields = { headers: this._fetch_headers_ev_sd, mode: "cors" }; - - this._epoch_latest_instance = writable(undefined); - this.epoch_latest = this._epoch_latest_instance as Readable; - - // Leaderboard related stores. - this._epoch_leaderboard_instance = new EpochLoadStoreLeaderboard(this._context, this.epoch_latest); - this.epoch_leaderboard = this._epoch_leaderboard_instance as Readable; - - this._epoch_leaderboard_header_instance = new ETAStore( - this._context, - this.epoch_leaderboard, - this.epoch_latest - ); - this.epoch_leaderboard_header = this._epoch_leaderboard_header_instance as Readable; - - // Validators related stores. - this._epoch_validators_instance = new EpochLoadStoreValidators(this._context, this.epoch_latest); - this.epoch_validators = this._epoch_validators_instance as Readable; - - this._epoch_validators_header_instance = new ETAStore( - this._context, - this.epoch_validators, - this.epoch_latest - ); - this.epoch_validators_header = this._epoch_validators_header_instance as Readable; - } - - private _is_first_update_call = true; - private _time_since_last_call = 0; - - public async update_ev(force_refresh: boolean): Promise { - if (this._is_first_update_call) { - this._is_first_update_call = false; - force_refresh = true; - } - - const now = dayjs().unix(); - if (!force_refresh && this._time_since_last_call) { - const diff_secs = now - this._time_since_last_call; - if (diff_secs < 15) - // Time between ev load (ignored on force). - return; - } - this._time_since_last_call = now; - - const new_epoch_latest = await this.api_load_ev(); - - if (new_epoch_latest) { - const cur_epoch_latest: EpochLatest = get(this._epoch_latest_instance); - if (!cur_epoch_latest) { - this._epoch_latest_instance.set(new_epoch_latest); - } else if (!cur_epoch_latest.isEquivalent(new_epoch_latest)) { - // Use what was received only if version and/or revision are moving forward... - if ( - new_epoch_latest.e > cur_epoch_latest.e || - (new_epoch_latest.e == cur_epoch_latest.e && new_epoch_latest.r > cur_epoch_latest.r) - ) { - // Set store about latest epoch versioning information. - // This may trig further data load+update for all derived - // data stores. - this._epoch_latest_instance.set(new_epoch_latest); - } - } - } - } - - private static is_same_revision(a: IEpochRevision, b: IEpochRevision) { - if (a === undefined && b === undefined) { - return true; // Both undefined arbitrarily default to "same". - } - if (a === undefined || b === undefined) { - return false; // Only one of the two undefined are necessarily "different" - } - // Both are defined, so compare their epoch and revision. - return a.e == b.e && a.r == b.r; - } - - private async api_load_ev(): Promise { - const url_path = `${this._context.server}/ev`; - const response = await fetch(`${get(global_url_proxy)}/${url_path}`, this._optional_fields); - if (!response.ok) { - const message = `An error has occurred: ${response.status} for ${url_path}`; - throw new Error(message); - } - const resp_json: unknown = await response.json(); - const values: EpochLatest = new EpochLatest(resp_json, this._context.prefix); - return Promise.resolve(values); - } -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L3/uuid_stores.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L3/uuid_stores.ts deleted file mode 100644 index 8b72b78d..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L3/uuid_stores.ts +++ /dev/null @@ -1,325 +0,0 @@ -import dayjs from "dayjs"; - -import relativeTime from "dayjs/plugin/relativeTime.js"; -import utc from "dayjs/plugin/utc.js"; - -// Layer 1 -import { IContextKeyed, IVersioned, JSONHeader } from "../L1/poc-interfaces"; -import { VersionsLatest, WorkdirStatus } from "../L1/json-constructed"; - -import { LoadStore } from "../L1/stores"; - -// Layer 2 -import { min_headers_key, min_headers_value, global_url_proxy } from "../L2/globals"; -import type { IBlockchainContext, IEpochStores, IGlobalsStores } from "../L2/interfaces"; -import { sleep } from "../../utils"; -import { writable, type Readable, type Writable, get } from "svelte/store"; - -dayjs.extend(relativeTime); -dayjs.extend(utc); - -class UUIDRevision implements IVersioned { - header: JSONHeader; - - public get method_uuid() { - return this.header.methodUuid; - } - - public get data_uuid() { - return this.header.dataUuid; - } - - public get method() { - return this.header.method; - } - - public get key() { - return this.header.key; - } - - constructor(p_header: JSONHeader) { - this.header = p_header; - } - - // The default method - static default(): UUIDRevision { - return new UUIDRevision(JSONHeader.default()); - } - - public is_older_revision_of(other?: IVersioned): boolean { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not newer. - } - return this.header.is_older_revision_of(other.header); - } - - public is_older_header_of(other?: JSONHeader): boolean { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not newer. - } - return this.header.is_older_revision_of(other); - } - - public is_same_revision_as(other?: IVersioned) { - if (other === undefined) { - return false; // Other is not initialized, lets assume it is not the same. - } - // Both are defined, so compare their JSONHeaders - return other.header.methodUuid == this.header.methodUuid && other.header.dataUuid == this.header.dataUuid; - } - - // Is this used? if not replace with set_from_JSONHeader functionality. - public set(other?: IVersioned) { - if (other === undefined) { - this.header = JSONHeader.default(); - } else { - this.header = other.header; - } - } - - public set_from_JSONHeader(other?: JSONHeader) { - if (other === undefined) { - this.header = JSONHeader.default(); - } else { - this.header = other; - } - } -} - -// LoadStore with dependencies on UUIDVersion changes. -// -// (Dependency on a Readable). -// -// ********************** -// API loading functions. -// -// Must: -// - Throw an error on any failure, including failed validation. -// - Transform response into a typed JS object and return it. -// -// ********************** - -abstract class UUIDLoadStore extends LoadStore { - private readonly _revision_needed: UUIDRevision; - private readonly _revision_loaded: UUIDRevision; - protected readonly _context: IBlockchainContext; - - public constructor(context: IBlockchainContext, dependency: Readable) { - const retrig = 60000; // 1 minute. - super(retrig, dependency); - this._revision_needed = UUIDRevision.default(); - this._revision_loaded = UUIDRevision.default(); - this._context = context; - } - - // Load data from backend daemon (request for the needed_revision). - protected async api_load_uuid(needed_revision: UUIDRevision): Promise { - // force-cache will force browser to use the cache even if expired or stale. - // This is what we want since the response here is immutable for an 'epoch_latest.s' - // Do a POST request equivalent to http://0.0.0.0:44399 with: - // header is Content-Type: application/json - // body is {"id":1,"jsonrpc":"2.0","method":"getLinks","params":{"workdir.name"}} - const url = "http://localhost:44399"; // TODO Replace with `${this._context.server}` - const headers = { - "Content-Type": "application/json", - }; - const body = { - id: 1, - jsonrpc: "2.0", - method: needed_revision.method, - params: { - workdir: needed_revision.key, - method_uuid: needed_revision.method_uuid, - data_uuid: needed_revision.data_uuid, - }, - }; - - let response = await fetch(url, { - method: "POST", - headers: headers, - body: JSON.stringify(body), - }); - if (!response.ok) { - throw new Error("Network response was not ok"); - } - - const values = (await response.json()) as T; - return Promise.resolve(values); - } - - protected abstract api_load(context: IBlockchainContext, uuid_revision: UUIDRevision): Promise; - - protected onRun(id: number, new_dependency?: VersionsLatest): void { - // Is the new_dependency indicate that there is a more recent version - // then what is already loaded? - // If yes, then try retrieving the most recent version. - if (new_dependency && new_dependency.isLoaded) { - const new_header = new_dependency.versions[new_dependency.version_workdir_status_idx]; - if (this._revision_needed.is_older_header_of(new_header)) { - this._revision_needed.set_from_JSONHeader(new_header); - } - } - - // Need to try loading? - if (this._revision_loaded.is_older_revision_of(this._revision_needed)) { - console.log("onRun() trying to load new data"); - // Call a sync load API. Assume caller will do it ASYNC. - this.api_load(this._context, this._revision_needed) - .then((new_data) => { - if (this._revision_needed.is_same_revision_as(new_data)) { - this._revision_loaded.set(this._revision_needed); - this.set_store(new_data); - this.report_in_sync(id, true); - console.log("onRun() loaded new_data: " + JSON.stringify(new_data)); - } else { - this.report_in_sync(id, false); - } - }) - .catch((err) => { - console.log(err); - this.report_in_sync(id, false); - }); - } - } - - protected abstract set_store(new_value: T): void; - - protected onFirstSubscribe(): void { - // eslint-disable @typescript-eslint/no-empty-function - //console.log( "firstSubscribe" ); - } - - protected onLastUnsubscribe(): void { - // eslint-disable @typescript-eslint/no-empty-function - //console.log( "lastUnsubscribe" ); - } -} - -class UUIDLoadStoreWorkdirStatus extends UUIDLoadStore { - private async async_api_load( - context: IBlockchainContext, - needed_revision: UUIDRevision - ): Promise { - // Will try to load the latest revision. - const resp_json: unknown = await this.api_load_uuid(needed_revision); - console.log("async_api_load of WorkdirStatus=" + JSON.stringify(resp_json)); - const values: WorkdirStatus = new WorkdirStatus(resp_json, context.prefix); - return Promise.resolve(values); - } - - protected api_load(context: IBlockchainContext, needed_revision: UUIDRevision): Promise { - return this.async_api_load(context, needed_revision); //.then().catch((err)=>{ console.log(err);}); - } - - set_store(new_value: WorkdirStatus): void { - this.set(new_value); - } -} - -export class GlobalsStores implements IGlobalsStores { - // Public read-only facades. - public readonly versions_latest: Readable; - public readonly workdir_status: Readable; - - // Fetch parameters. - /* - private _fetch_headers_ev_sd = new Headers(); - private _optional_fields = {}; - */ - - // Private R/W stores. - private readonly _versions_latest_instance: Writable; - private readonly _workdir_status_instance: UUIDLoadStoreWorkdirStatus; - - // Context will never change for an instance of GlobalsStores. - private _context: IBlockchainContext; - constructor(context: IBlockchainContext) { - this._context = context; - - /* this._fetch_headers_ev_sd.append(min_headers_key(), min_headers_value()); - this._optional_fields = { headers: this._fetch_headers_ev_sd, mode: "cors" };*/ - - this._versions_latest_instance = writable(undefined); - this.versions_latest = this._versions_latest_instance as Readable; - - // Stores that depend on versions_latest. - this._workdir_status_instance = new UUIDLoadStoreWorkdirStatus(this._context, this.versions_latest); - this.workdir_status = this._workdir_status_instance as Readable; - } - - private _is_first_update_call = true; - private _time_since_last_call = 0; - - public async update_versions(force_refresh: boolean): Promise { - if (this._is_first_update_call) { - this._is_first_update_call = false; - force_refresh = true; - } - - const now = dayjs().unix(); - if (!force_refresh && this._time_since_last_call) { - const diff_secs = now - this._time_since_last_call; - if (diff_secs < 15) - // Time between load (ignored on force). - return; - } - this._time_since_last_call = now; - - const new_versions_latest = await this.api_load_versions(); - - if (new_versions_latest) { - const cur_versions_latest: VersionsLatest = get(this._versions_latest_instance); - // console.log("update_versions() new_versions_latest=" + JSON.stringify(new_versions_latest)); - if (!cur_versions_latest) { - this._versions_latest_instance.set(new_versions_latest); - } else if (!cur_versions_latest.isEquivalent(new_versions_latest)) { - // Use what was received only if version and/or revision are moving forward... - if (cur_versions_latest.header.is_older_revision_of(new_versions_latest.header)) { - // Set store with latest versioning information. - // This may trig further data load+update for all derived - // data stores. - this._versions_latest_instance.set(new_versions_latest); - } - } - } - } - /* - private static is_same_revision(a: IEpochRevision, b: IEpochRevision) { - if (a === undefined && b === undefined) { - return true; // Both undefined arbitrarily default to "same". - } - if (a === undefined || b === undefined) { - return false; // Only one of the two undefined are necessarily "different" - } - // Both are defined, so compare their epoch and revision. - return a.e == b.e && a.r == b.r; - }*/ - - private async api_load_versions(): Promise { - const url = "http://localhost:44399"; // TODO Replace with `${this._context.server}` - const headers = { - "Content-Type": "application/json", - }; - const body = { - id: 1, - jsonrpc: "2.0", - method: "getVersions", - params: { - workdir: this._context.workdir, - }, - }; - - let response = await fetch(url, { - method: "POST", - headers: headers, - body: JSON.stringify(body), - }); - if (!response.ok) { - throw new Error("Network response was not ok"); - } - - const resp_json = await response.json(); - const values: VersionsLatest = new VersionsLatest(resp_json, this._context.workdir, this._context.prefix); - return Promise.resolve(values); - } -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/L4/contexts.ts b/typescript/vscode-extension/webview-ui/src/lib/states/L4/contexts.ts deleted file mode 100644 index 25bb6f61..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/L4/contexts.ts +++ /dev/null @@ -1,329 +0,0 @@ -// Contexts are UI selectable to allow the user target a very different blockchain. -// -// Example: -// Sui Network (Localnet) -// Sui Network (Testnet) -// Aptos Network (Localnet) -// .... -// -// The webapp is displaying/background processing only in one context at the time. -// -import { - readable, - writable, - get, - type Writable, - type Readable, - type Subscriber, - type Unsubscriber, - type Updater, -} from "svelte/store"; - -// Layer 1 -import { MSUI_CONTEXT_KEY, LSUI_CONTEXT_KEY, TSUI_CONTEXT_KEY, DSUI_CONTEXT_KEY } from "../L1/consts"; -import type { IContextKeyed, IEpochETA } from "../L1/poc-interfaces"; -import type { EpochLatest, EpochLeaderboard, EpochValidators } from "../L1/json-constructed"; -import { LoadStore } from "../L1/stores"; - -// Layer 2 -import type { - IBlockchainContext, - IBlockchainContextMapping, - IBlockchainStores, - IEpochStores, - IGlobalsStores, -} from "../L2/interfaces"; - -// Layer 3 -import { EpochStores } from "../L3/epoch_stores"; -import { GlobalsStores } from "../L3/uuid_stores"; - -// Layer 5 -/*import { StateLoop } from '$lib/states/states_loop'*/ -/* -class SC_Context implements IBlockchainContext { - readonly ui_selector_name = 'Safecoin Mainnet'; - readonly ui_name = 'Safecoin'; - readonly symbol = 'SAFE'; - readonly prefix = SC_CONTEXT_KEY; - readonly server = 'ssc'; -} - -class TST_Context implements IBlockchainContext { - readonly ui_selector_name = 'Safecoin Testnet'; - readonly ui_name = 'Safecoin'; - readonly symbol = 'SAFE'; - readonly prefix = TST_CONTEXT_KEY; - readonly server = 'ssc'; -} -*/ - -class LSUI_Context implements IBlockchainContext { - readonly ui_selector_name = "Localnet"; - readonly ui_name = "Sui"; - readonly symbol = "Sui"; - readonly prefix = LSUI_CONTEXT_KEY; - readonly workdir = "localnet"; - readonly server = "http://0.0.0.0:44399"; -} - -class TSUI_Context implements IBlockchainContext { - readonly ui_selector_name = "Testnet"; - readonly ui_name = "Sui"; - readonly symbol = "Sui"; - readonly prefix = TSUI_CONTEXT_KEY; - readonly workdir = "testnet"; - readonly server = "http://0.0.0.0:44399"; -} - -class DSUI_Context implements IBlockchainContext { - readonly ui_selector_name = "Devnet"; - readonly ui_name = "Sui"; - readonly symbol = "Sui"; - readonly prefix = DSUI_CONTEXT_KEY; - readonly workdir = "devnet"; - readonly server = "http://0.0.0.0:44399"; -} - -class MSUI_Context implements IBlockchainContext { - readonly ui_selector_name = "Mainnet"; - readonly ui_name = "Sui"; - readonly symbol = "Sui"; - readonly prefix = MSUI_CONTEXT_KEY; - readonly workdir = "mainnet"; - readonly server = "http://0.0.0.0:44399"; -} - -// Default initialization value. -// -// One day, may be, this will be user adaptable (e.g. only dev account will be able to switch to the TST_Context) -// -//const _sc_context_obj = new SC_Context(); -//const _tst_context_obj = new TST_Context(); -const _LSUI_Context_obj = new LSUI_Context(); -const _TSUI_Context_obj = new TSUI_Context(); -const _DSUI_Context_obj = new DSUI_Context(); -const _MSUI_context_obj = new MSUI_Context(); - -class BlockchainStores implements IBlockchainStores { - readonly epoch_stores: IEpochStores; - readonly globals_stores: IGlobalsStores; - constructor(p_context: IBlockchainContext) { - this.epoch_stores = new EpochStores(p_context); - this.globals_stores = new GlobalsStores(p_context); - } -} - -class BlockchainContextMapping implements IBlockchainContextMapping { - readonly context: IBlockchainContext; - readonly stores: IBlockchainStores; - constructor(p_context: IBlockchainContext) { - this.context = p_context; - this.stores = new BlockchainStores(this.context); - } -} - -// **WATCH OUT** Sui Localnet is default, make sure it match X_CONTEXT_KEY below. -const _default_context_map = new BlockchainContextMapping(_LSUI_Context_obj); - -const _contexts_map = new Map([ - [_default_context_map.context.prefix, _default_context_map], - [_TSUI_Context_obj.prefix, new BlockchainContextMapping(_TSUI_Context_obj)], - [_DSUI_Context_obj.prefix, new BlockchainContextMapping(_DSUI_Context_obj)], - [_MSUI_context_obj.prefix, new BlockchainContextMapping(_MSUI_context_obj)], -]); - -export const all_contexts = readable>(_contexts_map); - -class UISelectedContext implements Writable { - // **WATCH OUT** must match context _default_context_map above. - private _store_obj = writable(LSUI_CONTEXT_KEY); - - subscribe(listener: Subscriber): Unsubscriber { - const _unsubscriber = this._store_obj.subscribe(listener); - return () => { - _unsubscriber(); - }; - } - - set(value: string) { - if (get(this._store_obj) != value) { - this._store_obj.set(value); - } - } - - update(updater: Updater): void { - return this._store_obj.update(updater); - } -} - -export const createBoundedUISelectedContext = (): Writable => { - const the_store = new UISelectedContext(); - - return { - subscribe: the_store.subscribe.bind(the_store), - set: the_store.set.bind(the_store), - update: the_store.subscribe.bind(the_store), - }; -}; - -// Need to do binding because can be used from "this: void" callers. -export const ui_selected_context = createBoundedUISelectedContext(); - -export function context_key_to_obj(key: string): IBlockchainContext { - const selected_context = _contexts_map.get(key); - if (selected_context == undefined) { - return _default_context_map.context; // TODO Report bug to sentry. - } - return selected_context.context; -} - -export function context_key_to_stores(key: string): IBlockchainStores { - const selected_context = _contexts_map.get(key); - if (selected_context == undefined) { - // TODO report sentry error. - return _default_context_map.stores; - } - return selected_context.stores; -} - -// Register the callback done from StateLoop. -/* -const _context_freeze = new WriterReadersMutex(); - -let _isFirstLoopIteration = true; -let _prev_context_key = ""; - -StateLoop.get_instance().loop_callback_get_context = -(): IBlockchainContext => { - const key = get(ui_selected_context); - if (_isFirstLoopIteration) { - _prev_context_key = key; - _isFirstLoopIteration = false; - } else if( key != _prev_context_key ) { - _context_freeze.writer_acquire(); - // TODO Reset all reactive contexts. - _context_freeze.writer_release(); - } - return context_key_to_obj(key); - } - */ - -// https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock - -// Reactive Abstraction -abstract class ReactiveAbstraction extends LoadStore { - abstract get_store_from_context(context: IBlockchainStores): Readable; - - private _current_context: IBlockchainContext = _default_context_map.context; - private _selected_context_obj?: Readable; - private _unsubscriber_context_obj?: Unsubscriber; - - protected onRun(id: number, new_dependency?: string): void { - // Switch the subscription when the context changes. - if (new_dependency && this._current_context.prefix !== new_dependency) { - this._current_context = context_key_to_obj(new_dependency); - this.subscribe_selected(); - } - // Always succeed (no fetch/promise that can fail done here). - this.report_in_sync(id, true); - } - - private subscribe_selected(): void { - this.unsubscribe_selected(); - const stores = context_key_to_stores(this._current_context.prefix); - this._selected_context_obj = this.get_store_from_context(stores); - this._unsubscriber_context_obj = this._selected_context_obj?.subscribe((value: T) => { - // This is called whenever the selected context object changes. - - // Make sure the value is related to the selected context. - // (this might be an unnecessary check, but added here for safety). - if (value && value.context_key !== this._current_context.prefix) { - // TODO Sentry log to see if really never happening. - return; - } - - //console.log("context value="+(value?value.toString():"undefined")); - this.set(value); - }); - } - - private unsubscribe_selected(): void { - this._unsubscriber_context_obj?.(); - this._unsubscriber_context_obj = undefined; - this._selected_context_obj = undefined; - } - - protected onFirstSubscribe(): void { - this.subscribe_selected(); - } - protected onLastUnsubscribe(): void { - this.unsubscribe_selected(); - } - - public constructor() { - const retrig = 0; - super(retrig, ui_selected_context); - } -} - -class RA_EpochLatest extends ReactiveAbstraction { - get_store_from_context(stores: IBlockchainStores): Readable { - //const v = JSON.stringify(stores.epoch_stores); // .epoch_latest - //console.log("get_store_from_context called ="+(v?v.toString():"undefined")); - return stores.epoch_stores.epoch_latest; - } -} - -class RA_EpochLeaderboard extends ReactiveAbstraction { - get_store_from_context(stores: IBlockchainStores): Readable { - //console.log("get_store_from_context called"); - return stores.epoch_stores.epoch_leaderboard; - } -} - -class RA_EpochLeaderboardHeader extends ReactiveAbstraction { - get_store_from_context(stores: IBlockchainStores): Readable { - //console.log("get_store_from_context called"); - return stores.epoch_stores.epoch_leaderboard_header; - } -} - -class RA_EpochValidators extends ReactiveAbstraction { - get_store_from_context(stores: IBlockchainStores): Readable { - //console.log("get_store_from_context called"); - return stores.epoch_stores.epoch_validators; - } -} - -class RA_EpochValidatorsHeader extends ReactiveAbstraction { - get_store_from_context(stores: IBlockchainStores): Readable { - //console.log("get_store_from_context called"); - return stores.epoch_stores.epoch_validators_header; - } -} - -// TODO Change to readable... -// When subscribing, subscribe to the sub-object. -// Sub-object should do nothing when not subscribed. -// When context change, unsubscribe/subscribe sub-object. -// Example of use: -// $epoch_latest reacts whenever the EpochLatest value or context changes. -// epoch_latest_abstraction.set_context_data() to change data for one of the context. - -export const epoch_latest_abstraction = new RA_EpochLatest(); // For logic to store and control the abstracted value. -export const epoch_latest = epoch_latest_abstraction as Readable; // For UI or derived stores. - -// Leaderboard abstractions. -export const epoch_leaderboard_abstraction = new RA_EpochLeaderboard(); // For logic to store and control the abstracted value. -export const epoch_leaderboard = epoch_leaderboard_abstraction as Readable; // For UI or derived stores. - -export const epoch_leaderboard_header_abstraction = new RA_EpochLeaderboardHeader(); // For logic to store and control the abstracted value. -export const epoch_leaderboard_header = epoch_leaderboard_header_abstraction as Readable; // For UI or derived stores. - -// Validators abstractions. -export const epoch_validators_abstraction = new RA_EpochValidators(); // For logic to store and control the abstracted value. -export const epoch_validators = epoch_validators_abstraction as Readable; // For UI or derived stores. - -export const epoch_validators_header_abstraction = new RA_EpochValidatorsHeader(); // For logic to store and control the abstracted value. -export const epoch_validators_header = epoch_validators_header_abstraction as Readable; // For UI or derived stores. diff --git a/typescript/vscode-extension/webview-ui/src/lib/states/states_loop.ts b/typescript/vscode-extension/webview-ui/src/lib/states/states_loop.ts deleted file mode 100644 index 48f02544..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/states/states_loop.ts +++ /dev/null @@ -1,122 +0,0 @@ -// Periodic loop to update most states. -// -// This loop is controlling the safe execution order for both the -// initialization and periodical processing for most of the -// client app. -// -// Public API is done with the StateLoop::get_instance() singleton. -// -// $table.data <= May change often. Any change means a new data object. -// $table.isXXX <= Useful abstractions. -// $table.context <= For UI variations specific to context. Never changes. -// -// -// -// data is always json. -// BlockchainContext -// Consts,EpochContext,LiveContext -// -// ReactiveAbstraction -// data -// isUpdating -// isLoading -// data_change -// context_change -// -// On context change: -// unsubscribe the current data store. -// subscribe to the new data store. -// evaluate abstracted 'isX' -// increment context_change. -// On data change: -// evaluate abstracted 'isX' -// increment data_change. -//import { browser } from "$app/env"; -import { Mutex } from "async-mutex"; -import { to } from "await-to-js"; - -import type { IBlockchainStores } from "./L2/interfaces"; -import { ui_selected_context, context_key_to_stores } from "./L4/contexts"; - -export class StateLoop { - private static _instance: StateLoop; - private _selected_context_stores?: IBlockchainStores; - - // Private constructor forces use of get_instance instead. - private constructor() { - // Subscribe for any context changes (at UI level). - ui_selected_context.subscribe((selected_str: string) => { - this._selected_context_stores = context_key_to_stores(selected_str); - this.force_loop_refresh(); - }); - } - - public static get_instance(): StateLoop { - if (!StateLoop._instance) { - // Put here any code intended to be called only once - // on "SPA initialization" (See +layout.svelte or App.svelte). - StateLoop._instance = new StateLoop(); - - /* if (browser) {*/ - // Initiate periodic calls. - setTimeout(() => { - StateLoop._instance._sync_loop(); - }, 1); - /*}*/ - } - - return StateLoop._instance; - } - - // Allow to trig a force refresh of states handled by this loop. - // Can be called safely from anywhere. - public force_loop_refresh(): void { - this._sync_loop(true); - } - - private _loop_mutex: Mutex = new Mutex(); - - private _sync_loop(force_refresh = false): void { - //console.log("StateLoop::_sync_loop() force_refresh=" + force_refresh); - // Used for calling the loop() async function when the caller does - // not care for the returned promise or error. - // - // This also eliminate eslint warning when the returned promise is unused. - this._async_loop(force_refresh).catch((err) => console.log(err)); - } - - private async _async_loop(force_refresh: boolean): Promise { - await this._loop_mutex.runExclusive(async () => { - // Most derived stores depends on the "globals versioning" values. - // - // So by loading/updating it periodically all data will eventually - // converge to the latest globals data. - const cur_context_stores = this._selected_context_stores; - if (cur_context_stores && cur_context_stores.globals_stores) { - const [err] = await to(cur_context_stores.globals_stores.update_versions(force_refresh)); - if (err) { - console.log(err); - } - } - //console.log("StateLoop::_async_loop() force_refresh=" + force_refresh); - /* - if (cur_context_stores && cur_context_stores.epoch_stores) { - const [err] = await to(cur_context_stores.epoch_stores.update_ev(force_refresh)); - if (err) { - console.log(err); - } - }*/ - - if (force_refresh == false) { - // Schedule another call in one second. - setTimeout( - () => { - this._sync_loop(); - }, - 1000, - force_refresh - ); - } - }); // End of loop_mutex section - } -} diff --git a/typescript/vscode-extension/webview-ui/src/lib/utils.ts b/typescript/vscode-extension/webview-ui/src/lib/utils.ts deleted file mode 100644 index 43592200..00000000 --- a/typescript/vscode-extension/webview-ui/src/lib/utils.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Mutex, type MutexInterface } from "async-mutex"; - -// Usage: await sleep(10) -// https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep -export function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export class WriterReadersMutex { - private reader_mutex = new Mutex(); - private writer_mutex = new Mutex(); - private n_reader = 0; - private writer_releaser: MutexInterface.Releaser | undefined; - - // TODO Log something with sentry whenever there is an error detected here. - public reader_acquire(): void { - this._reader_acquire().catch((err) => console.log(err)); - } - - public reader_release(): void { - this._reader_release().catch((err) => console.log(err)); - } - - public writer_acquire(): void { - this._writer_acquire().catch((err) => console.log(err)); - } - - public writer_release(): void { - if (this.writer_releaser) { - const tmp_releaser = this.writer_releaser; - this.writer_releaser = undefined; - tmp_releaser(); - } - } - - private async _reader_acquire(): Promise { - const reader_releaser = await this.reader_mutex.acquire(); - this.n_reader += 1; - if (this.n_reader == 1) { - this.writer_releaser = await this.writer_mutex.acquire(); - } - reader_releaser(); - } - - private async _reader_release(): Promise { - const reader_releaser = await this.reader_mutex.acquire(); - this.n_reader -= 1; - if (this.n_reader == 0) { - this.writer_releaser?.(); - } - reader_releaser(); - } - - private async _writer_acquire(): Promise { - this.writer_releaser = await this.writer_mutex.acquire(); - } -} diff --git a/typescript/vscode-extension/webview-ui/src/main.ts b/typescript/vscode-extension/webview-ui/src/main.ts deleted file mode 100644 index 2dea46b8..00000000 --- a/typescript/vscode-extension/webview-ui/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import App from "./App.svelte"; -import { StateLoop } from "./lib/states/states_loop"; - -console.log("Main init"); -StateLoop.get_instance(); - -const app = new App({ - target: document.body, - props: {}, -}); - -export default app; diff --git a/typescript/vscode-extension/webview-ui/src/main.tsx b/typescript/vscode-extension/webview-ui/src/main.tsx new file mode 100644 index 00000000..4c3ff226 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/main.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +import { provideVSCodeDesignSystem, allComponents } from "@vscode/webview-ui-toolkit"; + +// In order to use the Webview UI Toolkit web components they +// must be registered with the browser (i.e. webview) using the +// syntax below. +//provideVSCodeDesignSystem().register(vsCodeButton()); +provideVSCodeDesignSystem().register(allComponents); + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/typescript/vscode-extension/webview-ui/src/vite-env.d.ts b/typescript/vscode-extension/webview-ui/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/typescript/vscode-extension/webview-ui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/typescript/vscode-extension/webview-ui/tsconfig.json b/typescript/vscode-extension/webview-ui/tsconfig.json index 11f3d90a..c3483211 100644 --- a/typescript/vscode-extension/webview-ui/tsconfig.json +++ b/typescript/vscode-extension/webview-ui/tsconfig.json @@ -1,41 +1,26 @@ { - "extends": "@tsconfig/svelte/tsconfig.json", - - "include": ["src/**/*","vite.config.ts"], - "exclude": ["node_modules/*", "__sapper__/*", "public/*"], - "compilerOptions": { - //M"moduleResolution": "node", - //M"target": "es2020", - /** - Svelte Preprocess cannot figure out whether you have a value or a type, so tell TypeScript - to enforce using `import type` instead of `import` for Types. - */ - // "importsNotUsedAsValues": "error", Deprecated. Replaced with verbatimModuleSyntax. - //"verbatimModuleSyntax": true, - - //M"ignoreDeprecations": "5.0", - //M"importsNotUsedAsValues": "error", - //M"isolatedModules": true, + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, - /** - To have warnings/errors of the Svelte compiler at the correct position, - enable source maps by default. - */ - //M"sourceMap": true, + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", - //M"strict": false, - //M"esModuleInterop": true, - //M"skipLibCheck": true, - //M"forceConsistentCasingInFileNames": true, - - "paths": { - "$lib": [ - "./src/lib" - ], - "$lib/*": [ - "./src/lib/*" - ] - } - } -} \ No newline at end of file + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "exclude": ["webview-ui.svelte/**/*"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/typescript/vscode-extension/webview-ui/tsconfig.node.json b/typescript/vscode-extension/webview-ui/tsconfig.node.json new file mode 100644 index 00000000..97ede7ee --- /dev/null +++ b/typescript/vscode-extension/webview-ui/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/typescript/vscode-extension/webview-ui/vite.config.ts b/typescript/vscode-extension/webview-ui/vite.config.ts new file mode 100644 index 00000000..d1bb784b --- /dev/null +++ b/typescript/vscode-extension/webview-ui/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + outDir: "build", + rollupOptions: { + output: { + entryFileNames: `assets/[name].js`, + chunkFileNames: `assets/[name].js`, + assetFileNames: `assets/[name].[ext]`, + }, + }, + }, +});