From 17c8ef885f80d628b0b51654b97ee581e69f8bee Mon Sep 17 00:00:00 2001 From: Bryce Zuccaro Date: Fri, 14 Aug 2026 10:52:13 -0600 Subject: [PATCH] feat: wire entry point, manifest, property inspectors, and assets --- .../imgs/actions/gpu/icon.svg | 5 ++++ .../imgs/actions/gpu/key.svg | 6 ++++ .../imgs/actions/inflight/icon.svg | 3 ++ .../imgs/actions/inflight/key.svg | 4 +++ .../imgs/plugin/category-icon.svg | 3 ++ .../imgs/plugin/icon.png | Bin 0 -> 6935 bytes .../imgs/plugin/icon.svg | 5 ++++ .../imgs/plugin/icon@2x.png | Bin 0 -> 26736 bytes com.bryce.llamawatch.sdPlugin/manifest.json | 24 ++++++++++++++-- com.bryce.llamawatch.sdPlugin/ui/gpu.html | 27 ++++++++++++++++++ .../ui/inflight.html | 18 ++++++++++++ .../ui/sdpi-components.js | 6 ++++ src/plugin.ts | 7 +++++ 13 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/icon.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/key.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/icon.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/key.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/plugin/category-icon.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.png create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.svg create mode 100644 com.bryce.llamawatch.sdPlugin/imgs/plugin/icon@2x.png create mode 100644 com.bryce.llamawatch.sdPlugin/ui/gpu.html create mode 100644 com.bryce.llamawatch.sdPlugin/ui/inflight.html create mode 100644 com.bryce.llamawatch.sdPlugin/ui/sdpi-components.js diff --git a/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/icon.svg b/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/icon.svg new file mode 100644 index 0000000..4e1eb53 --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/key.svg b/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/key.svg new file mode 100644 index 0000000..a66c6ee --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/actions/gpu/key.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/icon.svg b/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/icon.svg new file mode 100644 index 0000000..1fd2fc6 --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/key.svg b/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/key.svg new file mode 100644 index 0000000..e415ab1 --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/actions/inflight/key.svg @@ -0,0 +1,4 @@ + + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/plugin/category-icon.svg b/com.bryce.llamawatch.sdPlugin/imgs/plugin/category-icon.svg new file mode 100644 index 0000000..f93c4bb --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/plugin/category-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.png b/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8b632532caa57bcbc7eb2aa083c46cf15e36aa2a GIT binary patch literal 6935 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 literal 0 HcmV?d00001 diff --git a/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.svg b/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.svg new file mode 100644 index 0000000..9efee4e --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon@2x.png b/com.bryce.llamawatch.sdPlugin/imgs/plugin/icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f6adc30748adcf0f37646dc76b0b8ca257be5ca7 GIT binary patch literal 26736 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 G^nU;p&KCOs literal 0 HcmV?d00001 diff --git a/com.bryce.llamawatch.sdPlugin/manifest.json b/com.bryce.llamawatch.sdPlugin/manifest.json index 4c6214b..a7b0606 100644 --- a/com.bryce.llamawatch.sdPlugin/manifest.json +++ b/com.bryce.llamawatch.sdPlugin/manifest.json @@ -3,13 +3,33 @@ "Name": "llama-watch", "Version": "1.0.0.0", "Author": "Bryce Zuccaro", - "Actions": [], + "Actions": [ + { + "Name": "In-Flight Monitor", + "UUID": "com.bryce.llamawatch.inflight", + "Icon": "imgs/actions/inflight/icon", + "Tooltip": "Shows whether a model has a request in flight", + "PropertyInspectorPath": "ui/inflight.html", + "Controllers": ["Keypad"], + "States": [{ "Image": "imgs/actions/inflight/key", "ShowTitle": false }] + }, + { + "Name": "GPU Graph", + "UUID": "com.bryce.llamawatch.gpu", + "Icon": "imgs/actions/gpu/icon", + "Tooltip": "Live GPU metric graph", + "PropertyInspectorPath": "ui/gpu.html", + "Controllers": ["Keypad"], + "States": [{ "Image": "imgs/actions/gpu/key", "ShowTitle": false }] + } + ], "Category": "llama-watch", + "CategoryIcon": "imgs/plugin/category-icon", "CodePath": "bin/plugin.js", "Description": "Monitor llama-swap: in-flight requests per model and live GPU metric graphs.", "Icon": "imgs/plugin/icon", "SDKVersion": 2, - "Software": { "MinimumVersion": "6.5" }, + "Software": { "MinimumVersion": "7.1" }, "OS": [{ "Platform": "mac", "MinimumVersion": "13" }], "Nodejs": { "Version": "24" }, "UUID": "com.bryce.llamawatch" diff --git a/com.bryce.llamawatch.sdPlugin/ui/gpu.html b/com.bryce.llamawatch.sdPlugin/ui/gpu.html new file mode 100644 index 0000000..ac87a7b --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/ui/gpu.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.bryce.llamawatch.sdPlugin/ui/inflight.html b/com.bryce.llamawatch.sdPlugin/ui/inflight.html new file mode 100644 index 0000000..21f7b7a --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/ui/inflight.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/com.bryce.llamawatch.sdPlugin/ui/sdpi-components.js b/com.bryce.llamawatch.sdPlugin/ui/sdpi-components.js new file mode 100644 index 0000000..4e2f9d2 --- /dev/null +++ b/com.bryce.llamawatch.sdPlugin/ui/sdpi-components.js @@ -0,0 +1,6 @@ +/**! +* @license +* sdpi-components v4.0.1, Copyright Corsair Memory Inc. and other contributors (https://sdpi-components.dev) +* Lit, Copyright 2019 Google LLC, SPDX-License-Identifier: BSD-3-Clause (https://lit.dev/) +*/ +!function(){"use strict";function t(t,e,i,s){var n,r=arguments.length,o=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,s);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(o=(r<3?n(o):r>3?n(e,i,o):n(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o}function e(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}const i=window,s=i.ShadowRoot&&(void 0===i.ShadyCSS||i.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap;let o=class{constructor(t,e,i){if(this._$cssResult$=!0,i!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(s&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=r.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&r.set(e,t))}return t}toString(){return this.cssText}};const a=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1]),t[0]);return new o(i,t,n)},l=s?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new o("string"==typeof t?t:t+"",void 0,n))(e)})(t):t;var d;const c=window,h=c.trustedTypes,u=h?h.emptyScript:"",p=c.reactiveElementPolyfillSupport,v={toAttribute(t,e){switch(e){case Boolean:t=t?u:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},g=(t,e)=>e!==t&&(e==e||t==t),b={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:g};let y=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;null!==(e=this.h)&&void 0!==e||(this.h=[]),this.h.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const s=this._$Ep(i,e);void 0!==s&&(this._$Ev.set(s,i),t.push(s))})),t}static createProperty(t,e=b){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,s=this.getPropertyDescriptor(t,i,e);void 0!==s&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(s){const n=this[t];this[e]=s,this.requestUpdate(t,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||b}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Ep(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const e=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{s?t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((e=>{const s=document.createElement("style"),n=i.litNonce;void 0!==n&&s.setAttribute("nonce",n),s.textContent=e.cssText,t.appendChild(s)}))})(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e,i=b){var s;const n=this.constructor._$Ep(t,i);if(void 0!==n&&!0===i.reflect){const r=(void 0!==(null===(s=i.converter)||void 0===s?void 0:s.toAttribute)?i.converter:v).toAttribute(e,i.type);this._$El=t,null==r?this.removeAttribute(n):this.setAttribute(n,r),this._$El=null}}_$AK(t,e){var i;const s=this.constructor,n=s._$Ev.get(t);if(void 0!==n&&this._$El!==n){const t=s.getPropertyOptions(n),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(i=t.converter)||void 0===i?void 0:i.fromAttribute)?t.converter:v;this._$El=n,this[n]=r.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,i){let s=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||g)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};var f;y.finalized=!0,y.elementProperties=new Map,y.elementStyles=[],y.shadowRootOptions={mode:"open"},null==p||p({ReactiveElement:y}),(null!==(d=c.reactiveElementVersions)&&void 0!==d?d:c.reactiveElementVersions=[]).push("1.4.1");const m=window,$=m.trustedTypes,x=$?$.createPolicy("lit-html",{createHTML:t=>t}):void 0,w=`lit$${(Math.random()+"").slice(9)}$`,_="?"+w,L=`<${_}>`,A=document,S=(t="")=>A.createComment(t),M=t=>null===t||"object"!=typeof t&&"function"!=typeof t,k=Array.isArray,I=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,E=/-->/g,C=/>/g,N=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),D=/'/g,j=/"/g,T=/^(?:script|style|textarea|title)$/i,z=(t=>(e,...i)=>({_$litType$:t,strings:e,values:i}))(1),U=Symbol.for("lit-noChange"),O=Symbol.for("lit-nothing"),R=new WeakMap,P=A.createTreeWalker(A,129,null,!1),H=(t,e)=>{const i=t.length-1,s=[];let n,r=2===e?"":"",o=I;for(let e=0;e"===l[0]?(o=null!=n?n:I,d=-1):void 0===l[1]?d=-2:(d=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?N:'"'===l[3]?j:D):o===j||o===D?o=N:o===E||o===C?o=I:(o=N,n=void 0);const h=o===N&&t[e+1].startsWith("/>")?" ":"";r+=o===I?i+L:d>=0?(s.push(a),i.slice(0,d)+"$lit$"+i.slice(d)+w+h):i+w+(-2===d?(s.push(void 0),e):h)}const a=r+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==x?x.createHTML(a):a,s]};class Z{constructor({strings:t,_$litType$:e},i){let s;this.parts=[];let n=0,r=0;const o=t.length-1,a=this.parts,[l,d]=H(t,e);if(this.el=Z.createElement(l,i),P.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(s=P.nextNode())&&a.length0){s.textContent=$?$.emptyScript:"";for(let i=0;ik(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==O&&M(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){var e;const{values:i,_$litType$:s}=t,n="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=Z.createElement(s.h,this.options)),s);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===n)this._$AH.p(i);else{const t=new B(n,this),e=t.v(this.options);t.p(i),this.T(e),this._$AH=t}}_$AC(t){let e=R.get(t.strings);return void 0===e&&R.set(t.strings,e=new Z(t)),e}k(t){k(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,s=0;for(const n of t)s===e.length?e.push(i=new V(this.O(S()),this.O(S()),this,this.options)):i=e[s],i._$AI(n),s++;s2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=O}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,s){const n=this.strings;let r=!1;if(void 0===n)t=Y(this,t,e,0),r=!M(t)||t!==this._$AH&&t!==U,r&&(this._$AH=t);else{const s=t;let o,a;for(t=n[0],o=0;o{var s,n;const r=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:e;let o=r._$litPart$;if(void 0===o){const t=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:null;r._$litPart$=o=new V(e.insertBefore(S(),t),t,void 0,null!=i?i:{})}return o._$AI(t),o})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return U}};et.finalized=!0,et._$litElement$=!0,null===(X=globalThis.litElementHydrateSupport)||void 0===X||X.call(globalThis,{LitElement:et});const it=globalThis.litElementPolyfillSupport;null==it||it({LitElement:et}),(null!==(tt=globalThis.litElementVersions)&&void 0!==tt?tt:globalThis.litElementVersions=[]).push("3.2.2");const st=t=>e=>"function"==typeof e?((t,e)=>(customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:i,elements:s}=e;return{kind:i,elements:s,finisher(e){customElements.define(t,e)}}})(t,e),nt=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(i){i.createProperty(e.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};function rt(t){return(e,i)=>void 0!==i?((t,e,i)=>{e.constructor.createProperty(i,t)})(t,e,i):nt(t,e)}var ot;null===(ot=window.HTMLSlotElement)||void 0===ot||ot.prototype.assignedElements;class at{constructor(){this.handlers=[]}dispatch(t){for(const e of this.handlers)e(t)}subscribe(t){this.handlers.push(t)}unsubscribe(t){this.handlers=this.handlers.filter((e=>e!==t))}}class lt{constructor(){this._promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}get promise(){return this._promise}setResult(t){this.resolve&&this.resolve(t)}setException(t){this.reject&&this.reject(t)}}function*dt(t){const e=ct(t);if(0===e.length)return;let i=e.length;for(let t=e.length;t>0;t--)if("/"===e[t-1]||"\\"===e[t-1]){if(t!=e.length){const s=e.substring(t,i);s.length>0&&(yield s)}i=t-1}const s=e.substring(0,i);s.length>0&&(yield s)}function ct(t){return decodeURIComponent(t.replace(/^C:\\fakepath\\/,""))}class ht{constructor(t,e){this.nodeNames=t,this.callback=e,this.observer=new MutationObserver(this.handleMutation.bind(this)),this.items=[]}observe(t){this.observer.observe(t,{childList:!0})}disconnect(){this.observer.disconnect(),this.callback(this.items=[])}handleMutation(t){let e=!1;t.forEach((t=>{for(const i of t.addedNodes)this.nodeNames.indexOf(i.nodeName.toLowerCase())>-1&&(e=!0,this.items.push(i));t.removedNodes.forEach((t=>{const i=this.items.indexOf(t);-1!==i&&(e=!0,this.items.splice(i,1))}))})),e&&this.callback(this.items)}}function ut(t){return void 0===t?[]:Array.isArray(t)?[...t]:[t]}function pt(){const t=()=>Math.random().toString(16).slice(-4);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}function vt(t,e){return t.split(".").reduce(((t,e)=>t&&t[e]),e)}const gt=new class{constructor(){this.language=this.getUILanguage(),this.fallbackLanguage="en"}getMessage(t){if(!this.locales||void 0===t)return"";const e=e=>vt(`${e}.${t}`,this.locales);return this.language===this.fallbackLanguage?e(this.language)||"":e(this.language)||e(this.fallbackLanguage)||""}getUILanguage(){const t=window.navigator.language;return"zh-Hant"===t||"zh-TW"===t?"zh_TW":"zh"===t||"zh-Hans"===t||"zh-CN"===t?"zh_CN":window.navigator.language?window.navigator.language.split("-")[0]:"en"}};class bt{constructor(t){this.key=t;const e=bt.tryParseMessageName(t);this.value=(e.success?gt.getMessage(e.messageName):t)||t}static getMessage(t){return new bt(t).toString()}static tryParseMessageName(t){return t&&t.startsWith("__MSG_")&&t.endsWith("__")?{success:!0,messageName:t.substring(6,t.length-2)}:{success:!1}}equals(t){return void 0!==t&&this.key==t.key&&this.value==t.value}toString(){return this.value||""}}const yt={hasChanged:(t,e)=>!(!t&&!e)&&(!t||!e||t.equals(e)),converter:{fromAttribute:t=>null===t?void 0:new bt(t),toAttribute:t=>null==t?void 0:t.key}};const ft=t=>class extends t{static get styles(){return[ut(super.styles),a`:host{--checkbox-size:16px}.checkable-container{align-items:center;display:inline-flex;padding:5px 0 0 0;user-select:none;width:auto}.checkable-container>input{display:none}.checkable-container>input:not(:disabled)~span{cursor:pointer}.checkable-container>input:disabled~span{opacity:var(--opacity-disabled)}.checkable-container>.checkable-symbol{align-self:flex-start;background:var(--input-bg-color);border:1px solid rgba(0,0,0,.2);border-radius:3px;flex:0 0 var(--checkbox-size);height:var(--checkbox-size);width:var(--checkbox-size)}.checkable-container>input[type=radio]~.checkable-symbol{border-radius:50%}.checkable-container>.checkable-text{flex:0 1 auto;margin:0 0 0 var(--spacer)}.checkable-container>input:checked~.checkable-symbol{background:#77f no-repeat center center;border:1px solid rgba(0,0,0,.4)}.checkable-container>input[type=checkbox]:checked~.checkable-symbol{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpolygon fill='%23FFF' points='7.2 7.5 7.2 -1.3 8.7 -1.3 8.6 9.1 2.7 8.7 2.7 7.2' transform='rotate(37 5.718 3.896)'/%3E%3C/svg%3E%0A")}.checkable-container>input[type=radio]:checked~.checkable-symbol{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6'%3E%3Ccircle cx='3' cy='3' r='3' fill='%23FFF'/%3E%3C/svg%3E%0A")}`]}renderCheckable(t,e,i){return z``}},mt=2,$t=Symbol();const xt=new class{constructor(){this._connection=new lt,this._connectionInfo=new lt,this._isInitialized=!1,this.message=new at,this.didReceiveGlobalSettings=new at,this.didReceiveSettings=new at,this.sendToPropertyInspector=new at}async connect(t,e,i,s,n){if(!this._isInitialized){const r={actionInfo:n,info:s,propertyInspectorUUID:e,registerEvent:i};r.actionInfo&&this.didReceiveSettings.dispatch(r.actionInfo),this._connectionInfo.setResult(r);const o=new WebSocket(`ws://localhost:${t}`);o.onmessage=this.handleMessage.bind(this),o.onopen=()=>{o.send(JSON.stringify({event:r.registerEvent,uuid:r.propertyInspectorUUID})),this._connection.setResult(o)},this._isInitialized=!0}}async getGlobalSettings(){return(await this.get("getGlobalSettings","didReceiveGlobalSettings")).payload.settings}setGlobalSettings(t){return this.send("setGlobalSettings",t)}async getSettings(){const{actionInfo:t}=await this.getConnectionInfo();return(await this.get("getSettings","didReceiveSettings",(e=>e.action==t.action&&e.context==t.context&&e.device==t.device))).payload}setSettings(t){return this.send("setSettings",t)}async getConnectionInfo(){return this._connectionInfo.promise}async get(t,e,i,s){const n=new lt,r=t=>{if(t.event===e){const e=t;(void 0===i||i(e))&&(this.message.unsubscribe(r),n.setResult(e))}};return this.message.subscribe(r),await this.send(t,s),n.promise}async send(t,e){const i=await this._connectionInfo.promise;(await this._connection.promise).send(JSON.stringify({event:t,context:i.propertyInspectorUUID,payload:e,action:i.actionInfo.action}))}handleMessage(t){const e=JSON.parse(t.data);switch(e.event){case"didReceiveGlobalSettings":this.didReceiveGlobalSettings.dispatch(e);break;case"didReceiveSettings":this.didReceiveSettings.dispatch(e);break;case"sendToPropertyInspector":this.sendToPropertyInspector.dispatch(e)}this.message.dispatch(e)}},wt=i=>{class s extends i{constructor(...t){super(t),this._dataSourceInitialized=!1,this._mutationObserver=new ht(["optgroup","option"],(()=>this.refresh())),this.hotReload=!1,this.loadingText=new bt("Loading..."),this.items=new class{constructor(t,e,i){this.i=0,this.status=0,this.autoRun=!0,this.o=t,this.o.addController(this);const s="object"==typeof e?e:{task:e,args:i};this.t=s.task,this.h=s.args,this.l=s.onComplete,this.u=s.onError,void 0!==s.autoRun&&(this.autoRun=s.autoRun),this.taskComplete=new Promise(((t,e)=>{this.v=t,this._=e}))}hostUpdated(){this.performTask()}async performTask(){var t;const e=null===(t=this.h)||void 0===t?void 0:t.call(this);this.shouldRun(e)&&this.run(e)}shouldRun(t){return this.autoRun&&this.m(t)}async run(t){var e,i,s;let n,r;null!=t||(t=null===(e=this.h)||void 0===e?void 0:e.call(this)),2!==this.status&&3!==this.status||(this.taskComplete=new Promise(((t,e)=>{this.v=t,this._=e}))),this.status=1,this.o.requestUpdate();const o=++this.i;try{n=await this.t(t)}catch(t){r=t}if(this.i===o){if(n===$t)this.status=0;else{if(void 0===r){try{null===(i=this.l)||void 0===i||i.call(this,n)}catch{}this.status=2,this.v(n)}else{try{null===(s=this.u)||void 0===s||s.call(this,r)}catch{}this.status=3,this._(r)}this.T=n,this.k=r}this.o.requestUpdate()}}get value(){return this.T}get error(){return this.k}render(t){var e,i,s,n;switch(this.status){case 0:return null===(e=t.initial)||void 0===e?void 0:e.call(t);case 1:return null===(i=t.pending)||void 0===i?void 0:i.call(t);case 2:return null===(s=t.complete)||void 0===s?void 0:s.call(t,this.value);case 3:return null===(n=t.error)||void 0===n?void 0:n.call(t,this.error);default:this.status}}m(t){const e=this.p;return this.p=t,Array.isArray(t)&&Array.isArray(e)?t.length===e.length&&t.some(((t,i)=>g(t,e[i]))):t!==e}}(this,(async([t])=>{var e;if(void 0===t)return this.getItemsFromChildNodes();const i={event:this.dataSource};this._dataSourceInitialized&&(i.isRefresh=!0);const s=null!==(e=this._itemsDataSource)&&void 0!==e?e:await xt.get("sendToPlugin","sendToPropertyInspector",(t=>{var e;return(null===(e=t.payload)||void 0===e?void 0:e.event)===this.dataSource}),i);return this._dataSourceInitialized=!0,this._itemsDataSource=void 0,gt.locales&&this.localize(s.payload.items),s.payload.items}),(()=>[this.dataSource])),this._mutationObserver.observe(this)}refresh(){this.items.run()}connectedCallback(){super.connectedCallback(),void 0!==this.dataSource&&void 0!==this.hotReload&&xt.sendToPropertyInspector.subscribe((t=>{var e;this._dataSourceInitialized&&(null===(e=t.payload)||void 0===e?void 0:e.event)===this.dataSource&&(this._itemsDataSource=t,this.items.run())}))}renderDataSource(t,e){if(void 0===this.items.value||0===this.items.value.length)return[void 0];const i=s=>this.isItemGroup(s)?e?e(s,s.children.map(i)):void 0:this.isItem(s)?t(s):void 0;return this.items.value.map(i)}getItemsFromChildNodes(){const t=(e,i)=>(i instanceof HTMLOptGroupElement?e.push({label:bt.getMessage(i.label),children:Array.from(i.childNodes).reduce(t,[])}):i instanceof HTMLOptionElement&&e.push({disabled:i.disabled,label:bt.getMessage(i.text),value:i.value}),e);return this._mutationObserver.items.reduce(t,[])}localize(t){for(const e of t)e.label&&(e.label=bt.getMessage(e.label.toString())),this.isItemGroup(e)&&this.localize(e.children)}isItem(t){return t&&void 0!==t.value}isItemGroup(t){return t&&void 0!==t.children&&Array.isArray(t.children)}}return t([rt(),e("design:type",String)],s.prototype,"dataSource",void 0),t([rt({attribute:"hot-reload",type:Boolean}),e("design:type",Object)],s.prototype,"hotReload",void 0),t([rt({attribute:"loading",hasChanged:yt.hasChanged,converter:yt.converter}),e("design:type",Object)],s.prototype,"loadingText",void 0),s},_t=2,Lt=t=>(...e)=>({_$litDirective$:t,values:e});let At=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};const St=(t,e)=>{var i,s;const n=t._$AN;if(void 0===n)return!1;for(const t of n)null===(s=(i=t)._$AO)||void 0===s||s.call(i,e,!1),St(t,e);return!0},Mt=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===(null==i?void 0:i.size))},kt=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),Ct(e)}};function It(t){void 0!==this._$AN?(Mt(this),this._$AM=t,kt(this)):this._$AM=t}function Et(t,e=!1,i=0){const s=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(e)if(Array.isArray(s))for(let t=i;t{var e,i,s,n;t.type==_t&&(null!==(e=(s=t)._$AP)&&void 0!==e||(s._$AP=Et),null!==(i=(n=t)._$AQ)&&void 0!==i||(n._$AQ=It))};let Nt=class extends At{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),kt(this),this.isConnected=t._$AU}_$AO(t,e=!0){var i,s;t!==this.isConnected&&(this.isConnected=t,t?null===(i=this.reconnected)||void 0===i||i.call(this):null===(s=this.disconnected)||void 0===s||s.call(this)),e&&(St(this,t),Mt(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};class Dt{}const jt=new WeakMap,Tt=Lt(class extends Nt{render(t){return O}update(t,[e]){var i;const s=e!==this.Y;return s&&void 0!==this.Y&&this.rt(void 0),(s||this.lt!==this.ct)&&(this.Y=e,this.dt=null===(i=t.options)||void 0===i?void 0:i.host,this.rt(this.ct=t.element)),O}rt(t){var e;if("function"==typeof this.Y){const i=null!==(e=this.dt)&&void 0!==e?e:globalThis;let s=jt.get(i);void 0===s&&(s=new WeakMap,jt.set(i,s)),void 0!==s.get(this.Y)&&this.Y.call(this.dt,void 0),s.set(this.Y,t),void 0!==t&&this.Y.call(this.dt,t)}else this.Y.value=t}get lt(){var t,e,i;return"function"==typeof this.Y?null===(e=jt.get(null!==(t=this.dt)&&void 0!==t?t:globalThis))||void 0===e?void 0:e.get(this.Y):null===(i=this.Y)||void 0===i?void 0:i.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),zt=i=>{class s extends i{static get styles(){return[...ut(super.styles),a`label{align-self:center;background-color:var(--input-bg-color);color:var(--input-font-color);font-family:var(--font-family);font-size:var(--font-size);line-height:1.5em;min-height:calc(var(--input-height) - calc(var(--spacer) * 3));overflow:hidden;padding:calc(var(--spacer) * 1.5) var(--spacer);text-overflow:ellipsis;white-space:nowrap;width:100%}label[aria-disabled=true]{opacity:var(--opacity-disabled)}sdpi-button>div{min-width:16px;user-select:none}`]}renderDelegate(t=(t=>t)){var e;const i=void 0!==this.value?this.value:this.defaultValue;return z`
${(null===(e=this.label)||void 0===e?void 0:e.toString())||"..."}
`}}return t([rt(yt),e("design:type",bt)],s.prototype,"label",void 0),s},Ut=i=>{class s extends i{parseValue(t){switch(this.valueType){case"boolean":return function(t){switch(typeof t){case"boolean":return t;case"number":return 0!==t;default:{const e=t.toString().toLowerCase();return"false"!==e&&"0"!==e}}}(t);case"number":return function(t){switch(typeof t){case"boolean":return t?1:0;case"number":return t;default:return parseFloat(t)}}(t);case"string":return t.toString();default:return t}}}return t([rt({attribute:"value-type"}),e("design:type",Object)],s.prototype,"valueType",void 0),s},Ot=t=>class extends t{constructor(){super(...arguments),this.focusElement=new Dt}get canFocus(){return void 0!==this.focusElement.value}focus(){void 0!==this.focusElement.value&&(this.focusWithClick()?this.focusElement.value.click():this.focusElement.value.focus())}focusWithClick(){if(void 0===this.focusElement.value)throw new Error("focusElement cannot be undefined.");return!("type"in this.focusElement.value)||("checkbox"===this.focusElement.value.type||"color"===this.focusElement.value.type||"file"===this.focusElement.value.type)}},Rt=i=>{class s extends i{constructor(){super(...arguments),this.columns=1}static get styles(){return[ut(super.styles),a`.gridded-container{display:flex;flex-wrap:wrap}.gridded-container>.gridded-item{box-sizing:border-box;margin:0 var(--spacer) 0 0;flex:0 1}.gridded-container>.gridded-col-1{flex-basis:100%}.gridded-container>.gridded-col-2{flex-basis:calc((100% / 2) - (var(--spacer) * 1 / 2))}.gridded-container>.gridded-col-3{flex-basis:calc((100% / 3 - (var(--spacer) * 2 / 3)))}.gridded-container>.gridded-col-4{flex-basis:calc((100% / 4 - (var(--spacer) * 3 / 4)))}.gridded-container>.gridded-col-5{flex-basis:calc((100% / 5 - (var(--spacer) * 4 / 5)))}.gridded-container>.gridded-col-6{flex-basis:calc((100% / 6 - (var(--spacer) * 5 / 6)))}.gridded-container>.gridded-col-1,.gridded-container>.gridded-col-2:nth-child(2n),.gridded-container>.gridded-col-3:nth-child(3n),.gridded-container>.gridded-col-4:nth-child(4n),.gridded-container>.gridded-col-5:nth-child(5n),.gridded-container>.gridded-col-6:nth-child(6n){margin-right:0}`]}renderGrid(t){if(0!==t.length)return z`
${t.map((t=>z`
${t}
`))}
`}}return t([rt({type:Number}),e("design:type",Object)],s.prototype,"columns",void 0),s},Pt=a`.flex{align-items:stretch;display:flex}.flex-grow{flex:1 1 auto}.flex-shrink{flex:0 0 auto}.margin-left{margin-left:var(--spacer)}`,Ht=a`:host{--spacer:4px;--opacity-disabled:0.5;--window-bg-color:#2d2d2d;--font-color:#969696;--input-bg-color:#3d3d3d;--input-font-color:#d8d8d8;--scrollbar-box-shadow:inset 0 0 6px rgba(0, 0, 0, 0.3);--font-family:"Segoe UI",Arial,Roboto,Helvetica sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-size:9pt;--input-height:30px}`,Zt=i=>{class s extends i{constructor(){super(...arguments),this.disabled=!1,this.inputId=pt()}static get styles(){return[ut(super.styles),Ht,Pt,a`button,input,select,textarea{box-sizing:border-box;outline:0;border:none;border-radius:0;min-width:100%;max-width:100%;color:var(--input-font-color);font-size:var(--font-size);font-family:var(--font-family)}`]}}return t([rt({reflect:!0,type:Boolean}),e("design:type",Object)],s.prototype,"disabled",void 0),t([rt({attribute:!1}),e("design:type",Object)],s.prototype,"value",void 0),t([rt({attribute:"default"}),e("design:type",Object)],s.prototype,"defaultValue",void 0),s};class Yt{constructor(t,e){this.didReceive=t,this.save=e,this._initialization=new Promise((e=>{t.subscribe((t=>{this._settings=t.payload.settings,e()}))}))}use(t,e,i=250,s=!0){e&&this.didReceive.subscribe((i=>{var s;void 0!==(null===(s=null==i?void 0:i.payload)||void 0===s?void 0:s.settings)&&e(vt(t,i.payload.settings))}));const n=i?function(t,e){let i,s;return(n,...r)=>(clearTimeout(i),s=s||new lt,i=setTimeout((async()=>{const e=s;s=void 0,await t(n),null==e||e.setResult()}),e,r),s.promise)}((e=>this.set(t,e,s)),i):e=>this.set(t,e,s);return[async()=>(await this._initialization,vt(t,await this._settings)),n]}async set(t,e,i=!0){await this._initialization;vt(t,this._settings)!==e&&(!function(t,e,i){const s=t.split(".");s.reduce(((t,e,n)=>n===s.length-1?t[e]=i:t[e]||(t[e]={})),e)}(t,this._settings,e),i&&await this.save(this._settings))}}const Bt=new Yt(xt.didReceiveSettings,(t=>xt.setSettings(t))),Vt=Bt.use.bind(Bt);let Gt=!1;const Wt=new Yt(xt.didReceiveGlobalSettings,(t=>xt.setGlobalSettings(t))),Qt=(t,e,i=250,s=!0)=>(Gt||(xt.getGlobalSettings(),Gt=!0),Wt.use(t,e,i,s)),qt=i=>{class s extends i{constructor(){super(...arguments),this.isGlobal=!1}get value(){return this._value}set value(t){if(this._value!=t){const e=this._value;this._value=t,this.requestUpdate("value",e),this.dispatchEvent(new Event("valuechange"))}}firstUpdated(t){if(super.firstUpdated(t),this.setting){const t=this.delaySave?200:null;this.isGlobal?[,this.save]=Qt(this.setting,(t=>this.value=t),t):[,this.save]=Vt(this.setting,(t=>this.value=t),t)}}willUpdate(t){t.has("value")&&this.save&&this.save(this.value)}}return t([rt({attribute:"global",type:Boolean}),e("design:type",Object)],s.prototype,"isGlobal",void 0),t([rt(),e("design:type",String)],s.prototype,"setting",void 0),t([rt({attribute:!1}),e("design:type",Object),e("design:paramtypes",[Object])],s.prototype,"value",null),s};let Ft=class extends(Zt(et)){static get styles(){return[...super.styles,Ht,a`button{background-color:var(--window-bg-color);border:1px solid #969696;border-radius:3px;padding:calc(var(--spacer) * 1.5)}button:not(:disabled):hover{background-color:#464646;cursor:pointer}button:not(:disabled):active{background-color:var(--window-bg-color);border-color:#646464;color:#969696}button:disabled{opacity:var(--opacity-disabled)}`]}render(){return z``}};Ft=t([st("sdpi-button")],Ft);const Jt=t=>null!=t?t:O;class Kt{constructor(t,e){this.host=t,this.host.addController(this),this.observer=new ht(e,this.handleMutation.bind(this))}get items(){return this.observer.items}hostConnected(){this.observer.observe(this.host)}hostDisconnected(){this.observer.disconnect()}handleMutation(){if(this.mutated){const t={preventRequestUpdate:!1};if(this.mutated(t),t.preventRequestUpdate)return}this.host.requestUpdate()}}class Xt extends Kt{constructor(t){super(t,["datalist"])}mutated(t){0===this.items.length?this.dataList=void 0:void 0===this.dataList||this.dataList.id!==this.items[0].id?(this.items[0].id=this.items[0].id||pt(),this.dataList=this.items[0].cloneNode(!0)):t.preventRequestUpdate=!0}}let te=class extends(qt(Ot(Zt(et)))){constructor(){super(...arguments),this.dataListController=new Xt(this),this.type="date"}static get styles(){return[...super.styles,a`input{background-color:var(--input-bg-color);padding:calc(var(--spacer) + 1px) var(--spacer)}input[type=time]{padding:calc(var(--spacer) + 2px) var(--spacer)}input:disabled{opacity:var(--opacity-disabled)}::-webkit-clear-button,::-webkit-inner-spin-button{display:none}::-webkit-calendar-picker-indicator{-webkit-appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='%239C9C9C'%3E%3Cpath d='M15,15 L1.77635684e-15,15 L1.77635684e-15,1 L15,1 L15,15 Z M5,7 L5,8 L6,8 L6,7 L5,7 Z M3,7 L3,8 L4,8 L4,7 L3,7 Z M7,7 L7,8 L8,8 L8,7 L7,7 Z M9,7 L9,8 L10,8 L10,7 L9,7 Z M11,7 L11,8 L12,8 L12,7 L11,7 Z M3,9 L3,10 L4,10 L4,9 L3,9 Z M5,9 L5,10 L6,10 L6,9 L5,9 Z M7,9 L7,10 L8,10 L8,9 L7,9 Z M9,9 L9,10 L10,10 L10,9 L9,9 Z M11,9 L11,10 L12,10 L12,9 L11,9 Z M3,11 L3,12 L4,12 L4,11 L3,11 Z M5,11 L5,12 L6,12 L6,11 L5,11 Z M7,11 L7,12 L8,12 L8,11 L7,11 Z M9,11 L9,12 L10,12 L10,11 L9,11 Z M11,11 L11,12 L12,12 L12,11 L11,11 Z M14,4 L14,2 L1,2 L1,4 L14,4 Z'/%3E%3Crect width='1' height='1' x='2'/%3E%3Crect width='1' height='1' x='12'/%3E%3C/g%3E%3C/svg%3E%0A") top left no-repeat;cursor:pointer;font-size:0;margin:0 calc(var(--spacer)/ 2) 0 0;opacity:1;padding:8px}::-webkit-calendar-picker-indicator:hover{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='%23CECECE'%3E%3Cpath d='M15,15 L1.77635684e-15,15 L1.77635684e-15,1 L15,1 L15,15 Z M5,7 L5,8 L6,8 L6,7 L5,7 Z M3,7 L3,8 L4,8 L4,7 L3,7 Z M7,7 L7,8 L8,8 L8,7 L7,7 Z M9,7 L9,8 L10,8 L10,7 L9,7 Z M11,7 L11,8 L12,8 L12,7 L11,7 Z M3,9 L3,10 L4,10 L4,9 L3,9 Z M5,9 L5,10 L6,10 L6,9 L5,9 Z M7,9 L7,10 L8,10 L8,9 L7,9 Z M9,9 L9,10 L10,10 L10,9 L9,9 Z M11,9 L11,10 L12,10 L12,9 L11,9 Z M3,11 L3,12 L4,12 L4,11 L3,11 Z M5,11 L5,12 L6,12 L6,11 L5,11 Z M7,11 L7,12 L8,12 L8,11 L7,11 Z M9,11 L9,12 L10,12 L10,11 L9,11 Z M11,11 L11,12 L12,12 L12,11 L11,11 Z M14,4 L14,2 L1,2 L1,4 L14,4 Z'/%3E%3Crect width='1' height='1' x='2'/%3E%3Crect width='1' height='1' x='12'/%3E%3C/g%3E%3C/svg%3E%0A")}`]}render(){var t;return z` ${this.dataListController.dataList}`}};t([rt(),e("design:type",String)],te.prototype,"max",void 0),t([rt(),e("design:type",String)],te.prototype,"min",void 0),t([rt({type:Number}),e("design:type",Number)],te.prototype,"step",void 0),t([rt(),e("design:type",String)],te.prototype,"type",void 0),te=t([st("sdpi-calendar")],te);let ee=class extends(qt(Ot(ft(Zt(et))))){render(){var t,e;return this.renderCheckable("checkbox",z``,this.label)}};t([rt(yt),e("design:type",bt)],ee.prototype,"label",void 0),ee=t([st("sdpi-checkbox")],ee);let ie=class extends(Rt(qt(ft(wt(Ut(Zt(et))))))){static get styles(){return[...super.styles,a`.loading{margin:0;padding:calc(var(--spacer) * 1.5) 0;user-select:none}`]}render(){return this.items.render({pending:()=>z`

${this.loadingText}

`,complete:()=>this.renderGrid(this.renderDataSource((t=>this.renderCheckable("checkbox",z``,t.label))))})}handleChange(t){const e=this.parseValue(t.target.value);if(void 0===e)return;const i=new Set(this.value);t.target.checked?i.add(e):i.delete(e),this.value=Array.from(i)}};ie=t([st("sdpi-checkbox-list")],ie);let se=class extends(qt(Ot(Zt(et)))){static get styles(){return[...super.styles,a`input{background-color:var(--input-bg-color);height:var(--input-height)}input:disabled{opacity:var(--opacity-disabled)}`]}render(){return z``}};se=t([st("sdpi-color")],se);let ne=class extends(zt(qt(Ot(Zt(et))))){render(){return this.renderDelegate((t=>{if(null==t)return t;if("path"===this.formatType){const{done:e,value:i}=dt(t.toString()).next();return e?t:i}return t}))}invoked(){this.disabled||(void 0===this.invoke?console.warn('Delegation failed, consider setting the "invoke" attribute. When defined, `sendToPlugin` is invoked with the specified attribute value, allowing for the plug-in to determine the persisted value.'):xt.send("sendToPlugin",{event:this.invoke}))}};t([rt({attribute:"format-type"}),e("design:type",Object)],ne.prototype,"formatType",void 0),t([rt(),e("design:type",String)],ne.prototype,"invoke",void 0),ne=t([st("sdpi-delegate")],ne);let re=class extends(zt(qt(Ot(Zt(et))))){static get styles(){return[...super.styles,a`input[type=file]{display:none}`]}render(){return z`${super.renderDelegate((t=>function(t){const{done:e,value:i}=dt(t).next();return e?"":i}((null==t?void 0:t.toString())||"")))} `}invoked(){var t;null===(t=this.focusElement.value)||void 0===t||t.click()}};t([rt(),e("design:type",String)],re.prototype,"accept",void 0),re=t([st("sdpi-file")],re);let oe=class extends et{render(){return this.key?z`${gt.getMessage(this.key)}`:void 0}};t([rt(),e("design:type",String)],oe.prototype,"key",void 0),oe=t([st("sdpi-i18n")],oe);let ae=class extends(qt(Ot(Zt(et)))){constructor(){super(...arguments),this.required=!1,this.delaySave=!0,this.type="text"}static get styles(){return[...super.styles,Ht,a`input{background-color:var(--input-bg-color);padding:calc(var(--spacer) + 3px) var(--spacer)}input:disabled{opacity:var(--opacity-disabled)}input:required{background-position:98% center;background-repeat:no-repeat}input:required:valid{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIHZpZXdCb3g9IjAgMCA5IDkiPjxwb2x5Z29uIGZpbGw9IiNEOEQ4RDgiIHBvaW50cz0iNS4yIDEgNi4yIDEgNi4yIDcgMy4yIDcgMy4yIDYgNS4yIDYiIHRyYW5zZm9ybT0icm90YXRlKDQwIDQuNjc3IDQpIi8+PC9zdmc+)}input:required:invalid{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIHZpZXdCb3g9IjAgMCA5IDkiPgogICAgPHBhdGggZmlsbD0iI0Q4RDhEOCIgZD0iTTQuNSwwIEM2Ljk4NTI4MTM3LC00LjU2NTM4NzgyZS0xNiA5LDIuMDE0NzE4NjMgOSw0LjUgQzksNi45ODUyODEzNyA2Ljk4NTI4MTM3LDkgNC41LDkgQzIuMDE0NzE4NjMsOSAzLjA0MzU5MTg4ZS0xNiw2Ljk4NTI4MTM3IDAsNC41IEMtMy4wNDM1OTE4OGUtMTYsMi4wMTQ3MTg2MyAyLjAxNDcxODYzLDQuNTY1Mzg3ODJlLTE2IDQuNSwwIFogTTQsMSBMNCw2IEw1LDYgTDUsMSBMNCwxIFogTTQuNSw4IEM0Ljc3NjE0MjM3LDggNSw3Ljc3NjE0MjM3IDUsNy41IEM1LDcuMjIzODU3NjMgNC43NzYxNDIzNyw3IDQuNSw3IEM0LjIyMzg1NzYzLDcgNCw3LjIyMzg1NzYzIDQsNy41IEM0LDcuNzc2MTQyMzcgNC4yMjM4NTc2Myw4IDQuNSw4IFoiLz4KICA8L3N2Zz4)}`]}render(){var t;return z``}};t([rt({attribute:"maxlength",type:Number}),e("design:type",Number)],ae.prototype,"maxLength",void 0),t([rt(),e("design:type",String)],ae.prototype,"pattern",void 0),t([rt(yt),e("design:type",bt)],ae.prototype,"placeholder",void 0),t([rt({type:Boolean}),e("design:type",Object)],ae.prototype,"required",void 0),ae=t([st("sdpi-textfield")],ae);let le=class extends ae{constructor(){super(...arguments),this.type="password"}};le=t([st("sdpi-password")],le);let de=class extends(Rt(qt(ft(wt(Ut(Zt(et))))))){static get styles(){return[...super.styles,a`.loading{margin:0;padding:calc(var(--spacer) * 1.5) 0;user-select:none}`]}render(){return this.items.render({pending:()=>z`

${this.loadingText}

`,complete:()=>this.renderGrid(this.renderDataSource((t=>this.renderCheckable("radio",z``,t.label))))})}};de=t([st("sdpi-radio")],de);let ce=class extends(qt(Ot(Zt(et)))){constructor(){super(...arguments),this.showLabels=!1,this.delaySave=!0}static get styles(){return[...super.styles,a`input{-webkit-appearance:none;margin:0;height:22px;background-color:transparent}.container>div[aria-disabled=true],input:disabled{cursor:default;opacity:var(--opacity-disabled)}::-webkit-slider-runnable-track{margin-top:2px;height:5px;padding:0!important;border:solid 1px var(--input-bg-color);background:#636363;border-radius:3px}::-webkit-slider-thumb{-webkit-appearance:none;background-color:var(--input-font-color);border-radius:50%;cursor:pointer;top:-4px;position:relative;height:12px;width:12px}input:disabled::-webkit-slider-thumb{cursor:default}input::-webkit-slider-thumb::before{position:absolute;content:""}.container{display:flex;align-items:center}.container>div{flex:0 1}div[role=button]{cursor:pointer;user-select:none}.container>div:nth-child(2){flex:1 1;margin:0 var(--spacer)}`]}render(){var t,e;const i=(null===(t=this.value)||void 0===t?void 0:t.toString())||(null===(e=this.defaultValue)||void 0===e?void 0:e.toString())||"",s=z``;return this.showLabels?z`
${this.min}
${s}
${this.max}
`:s}};t([rt({type:Number}),e("design:type",Number)],ce.prototype,"max",void 0),t([rt({type:Number}),e("design:type",Number)],ce.prototype,"min",void 0),t([rt({attribute:"showlabels",type:Boolean}),e("design:type",Object)],ce.prototype,"showLabels",void 0),t([rt({type:Number}),e("design:type",Number)],ce.prototype,"step",void 0),ce=t([st("sdpi-range")],ce);let he=class extends et{render(){return z`
`}handleLabelClick(){for(const t of this.querySelectorAll("*")){const e=t;if(e.canFocus)return void e.focus()}}};he.styles=[Ht,a`::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-thumb{background-color:#666;border-radius:5px;outline:1px solid #708090}.container{color:var(--font-color);font-family:var(--font-family);font-size:var(--font-size);margin:0 0 10px 0;-webkit-user-drag:none}.grid{align-items:start;display:grid;grid-template-columns:95px 241px}.label{align-items:center;display:flex;justify-self:end;min-height:28px;padding-right:11px;text-align:right}`],t([rt(yt),e("design:type",bt)],he.prototype,"label",void 0),he=t([st("sdpi-item")],he);class ue{constructor(t){this.Y=t}disconnect(){this.Y=void 0}reconnect(t){this.Y=t}deref(){return this.Y}}class pe{constructor(){this.Z=void 0,this.q=void 0}get(){return this.Z}pause(){var t;null!==(t=this.Z)&&void 0!==t||(this.Z=new Promise((t=>this.q=t)))}resume(){var t;null===(t=this.q)||void 0===t||t.call(this),this.Z=this.q=void 0}}const ve=t=>!(t=>null===t||"object"!=typeof t&&"function"!=typeof t)(t)&&"function"==typeof t.then;const ge=Lt(class extends Nt{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CK=new ue(this),this._$CX=new pe}render(...t){var e;return null!==(e=t.find((t=>!ve(t))))&&void 0!==e?e:U}update(t,e){const i=this._$Cyt;let s=i.length;this._$Cyt=e;const n=this._$CK,r=this._$CX;this.isConnected||this.disconnected();for(let t=0;tthis._$Cwt);t++){const o=e[t];if(!ve(o))return this._$Cwt=t,o;t{for(;r.get();)await r.get();const e=n.deref();if(void 0!==e){const i=e._$Cyt.indexOf(o);i>-1&&i${this.items.render({pending:()=>z``,complete:()=>z`${void 0===s?ge(this.getLabelOrPlaceholder()):void 0} ${this.renderDataSource((t=>z``),((t,e)=>{var i;return z`${e}`}))}`})}`;return this.showRefresh&&void 0!==this.dataSource?z`
${n}
 
`:n}async getLabelOrPlaceholder(){if(this.getLabel){const t=await this.getLabel();if(void 0!==t)return z``}if(this.placeholder)return z``}getSelectedValueFrom(t){for(const e of t)if("children"in e){const t=this.getSelectedValueFrom(e.children);if(void 0!==t)return t}else if("value"in e&&e.value==this.value)return e.value}};t([rt({attribute:"label-setting"}),e("design:type",String)],be.prototype,"labelSetting",void 0),t([rt({attribute:"show-refresh",type:Boolean}),e("design:type",Object)],be.prototype,"showRefresh",void 0),t([rt(yt),e("design:type",bt)],be.prototype,"placeholder",void 0),be=t([st("sdpi-select")],be);let ye=class extends(qt(Ot(Zt(et)))){constructor(){super(...arguments),this.rows=3,this.showLength=!1,this.delaySave=!0}static get styles(){return[...super.styles,Ht,a`textarea{background-color:var(--input-bg-color);padding:calc(var(--spacer) + 3px) var(--spacer);resize:none}textarea:disabled{opacity:var(--opacity-disabled)}.length{color:var(--font-color);display:block;text-align:right;font-family:var(--font-family);font-size:var(--font-size)}`]}render(){return z` ${this.getLengthLabel()}`}getLengthLabel(){var t;if(this.showLength||this.maxLength){const e=this.maxLength?z`/${this.maxLength}`:void 0;return z``}}};t([rt({attribute:"maxlength",type:Number}),e("design:type",Number)],ye.prototype,"maxLength",void 0),t([rt({type:Number}),e("design:type",Object)],ye.prototype,"rows",void 0),t([rt({attribute:"showlength",type:Boolean}),e("design:type",Object)],ye.prototype,"showLength",void 0),ye=t([st("sdpi-textarea")],ye);const fe=window.connectElgatoStreamDeckSocket;var me;window.connectElgatoStreamDeckSocket=(t,e,i,s,n)=>{fe&&fe(t,e,i,s,n),xt.connect(t,e,i,JSON.parse(s),JSON.parse(n))},function(t){t.streamDeckClient=xt,t.useGlobalSettings=Qt,t.useSettings=Vt,t.i18n=gt}(me||(me={})),window.SDPIComponents=me;const $e=document.createElement("style");$e.innerHTML=a`body,html{background-color:#2d2d2d}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-thumb{background-color:#666;border-radius:5px;outline:1px solid #708090}`.cssText,document.head.appendChild($e)}(); diff --git a/src/plugin.ts b/src/plugin.ts index cd429e8..bf150b7 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,3 +1,10 @@ import streamDeck from "@elgato/streamdeck"; +import { GpuGraph } from "./actions/gpu-graph"; +import { InflightMonitor } from "./actions/inflight-monitor"; +import { registerDataSources } from "./lib/datasources"; + +streamDeck.actions.registerAction(new InflightMonitor()); +streamDeck.actions.registerAction(new GpuGraph()); +registerDataSources(); streamDeck.connect();