@verbaly/studio 0.56.0 → 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -41
- package/dist/cli.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/index-3Geaeu_2.js +3 -0
- package/dist/ui/assets/{index-3A7RArYB.css → index-B2gDPqi5.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +5 -27
- package/dist/panel/Actions.svelte +0 -248
- package/dist/panel/Health.svelte +0 -184
- package/dist/panel/Marks.svelte +0 -56
- package/dist/panel/Panel.svelte +0 -337
- package/dist/panel/Panel.svelte.d.ts +0 -12
- package/dist/panel/Rail.svelte +0 -303
- package/dist/panel/Row.svelte +0 -340
- package/dist/panel/api.ts +0 -82
- package/dist/panel/index.ts +0 -18
- package/dist/panel/model.ts +0 -150
- package/dist/panel/tokens.css +0 -106
- package/dist/panel/validate.ts +0 -94
- package/dist/panel/wire.ts +0 -29
- package/dist/panel/words.ts +0 -48
- package/dist/ui/assets/index-DksZVILQ.js +0 -3
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible,d=()=>{};function f(e){for(var t=0;t<e.length;t++)e[t]()}function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=1024,h=2048,g=4096,_=8192,v=16384,y=32768,b=1<<25,x=65536,S=1<<19,ee=1<<20,te=1<<25,C=65536,ne=1<<21,re=1<<22,ie=1<<23,ae=Symbol(`$state`),oe=Symbol(`component`),se=Symbol(``),ce=Symbol(`attributes`),le=Symbol(`class`),ue=Symbol(`style`),de=Symbol(`text`),fe=Symbol(`form reset`),pe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},me=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),he={},w=Symbol(`uninitialized`),ge=`http://www.w3.org/1999/xhtml`;function _e(){console.warn(`https://svelte.dev/e/derived_inert`)}function ve(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function ye(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function be(e){T=e}var E;function D(e){if(e===null)throw ve(),he;return E=e}function xe(){return D(Xt(E))}function O(e){if(T){if(Xt(E)!==null)throw ve(),he;E=e}}function Se(e=1){if(T){for(var t=e,n=E;t--;)n=Xt(n);E=n}}function Ce(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=Xt(n);e&&n.remove(),n=i}}function we(e){if(!e||e.nodeType!==8)throw ve(),he;return e.data}function Te(e){return e===this.v}function Ee(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function De(e){return!Ee(e,this.v)}function Oe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function je(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Me(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ne(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Pe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Fe(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ie(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Le(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Re(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var k=null;function ze(e){k=e}function Be(e,t=!1,n){k={p:k,i:!1,c:null,e:null,s:e,x:null,r:W,l:null}}function Ve(e){var t=k,n=t.e;if(n!==null){t.e=null;for(var r of n)dn(r)}return e!==void 0&&(t.x=e),t.i=!0,k=t.p,He(e)}function He(e={}){return i(e,oe,{value:!0}),e}function Ue(){return!0}var We=[];function Ge(){var e=We;We=[],f(e)}function Ke(e){if(We.length===0&&!xt){var t=We;queueMicrotask(()=>{t===We&&Ge()})}We.push(e)}function qe(){for(;We.length>0;)Ge()}var Je=~(h|g|m);function A(e,t){e.f=e.f&Je|t}function Ye(e){e.f&512||e.deps===null?A(e,m):A(e,g)}function Xe(e){if(e!==null)for(let t of e)t.f&2&&t.f&65536&&(t.f^=C,Xe(t.deps))}function Ze(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Xe(e.deps),A(e,m)}function Qe(e,t){if(t){let t=document.body;e.autofocus=!0,Ke(()=>{document.activeElement===t&&e.focus()})}}function $e(e){T&&I(e)!==null&&Qt(e)}var et=!1;function tt(){et||(et=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[fe]?.()})},{capture:!0}))}function nt(e){var t=H,n=W;U(null),Mn(null);try{return e()}finally{U(t),Mn(n)}}function rt(e,t,n,r=n){e.addEventListener(t,()=>nt(n));let i=e[fe];e[fe]=i?()=>{i(),r(!0)}:()=>r(!0),tt()}function it(e,t,n,r){let i=Ue()?ct:dt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=W,c=at(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){rn(e,s)}ot()}}var d=st();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>ut(e))).then(u).catch(e=>rn(e,s)).finally(d)}l?l.then(()=>{c(),f(),ot()}):f()}function at(){var e=W,t=H,n=k,r=M;return function(i=!0){Mn(e),U(t),ze(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ot(e=!0){Mn(null),U(null),ze(null),e&&M?.deactivate()}function st(){var e=W,t=e.b,n=M,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function ct(e){var t=2|h;return W!==null&&(W.f|=S),{ctx:k,deps:null,effects:null,equals:Te,f:t,fn:e,reactions:null,rv:0,v:w,wv:0,parent:W,ac:null}}var lt=Symbol(`obsolete`);function ut(e,t,n){let r=W;r===null&&ke();var i=void 0,a=Rt(w),o=!H,s=new Set;return pn(()=>{var t=W,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==pe&&n.reject(e)}).finally(ot)}catch(e){n.reject(e),ot()}var c=M;if(o){if(t.f&32768)var l=st();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(lt);else for(let e of s.values())e.reject(lt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==lt&&(c.activate(),t?(a.f|=ie,Bt(a,t)):(a.f&8388608&&(a.f^=ie),Bt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),ln(()=>{for(let e of s)e.reject(lt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function j(e){let t=ct(e);return Pn(t),t}function dt(e){let t=ct(e);return t.equals=De,t}function ft(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)V(t[n])}}function pt(e){var t,n=W,r=e.parent;if(!kn&&r!==null&&e.v!==w&&r.f&24576)return _e(),e.v;Mn(r);try{e.f&=~C,ft(e),t=Wn(e)}finally{Mn(n)}return t}function mt(e){var t=pt(e);if(!e.equals(t)&&(e.wv=Vn(),(!M?.is_fork||e.deps===null)&&(M===null?e.v=t:(M.capture(e,t,!0),vt?.capture(e,t,!0)),e.deps===null))){A(e,m);return}kn||(yt===null?Ye(e):(cn()||M?.is_fork)&&yt.set(e,t))}function ht(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&nt(()=>{t.ac.abort(pe),t.ac=null}),t.fn!==null&&(t.teardown=d),qn(t,0),vn(t))}function gt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Jn(t)}var _t=null,M=null,vt=null,yt=null,bt=null,xt=!1,St=!1,Ct=null,wt=null,Tt=0,Et=1,Dt=class e{id=Et++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){_t===null?_t=this:(_t.#n=this,this.#t=_t),_t=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)A(r,h),t(r);for(r of n.m)A(r,g),t(r)}this.#p.add(e)}#g(){this.#e=!0,Tt++>1e3&&(this.#x(),kt());for(let e of this.#u)this.#d.delete(e),A(e,h),this.schedule(e);for(let e of this.#d)A(e,g),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Ct=[],r=[],i=wt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Pt(e),this.#h()||this.discard(),t}if(M=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Ct=null,wt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Nt(e,t);i.length>0&&M.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),vt=this,jt(r),jt(n),vt=null,this.#s?.resolve();var s=M;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0){if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this}s!==null&&(It.clear(),s.#g())}#_(e,t,n){e.f^=m;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=m:i&4?t.push(r):Hn(r)&&(i&16&&this.#d.add(r),Jn(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),A(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),M=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)Ze(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==w&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),yt?.set(e,t)),this.is_fork||(e.v=t)}activate(){M=this}deactivate(){M=null,yt=null}flush(){try{St=!0,M=this,this.#g()}finally{Tt=0,bt=null,Ct=null,wt=null,St=!1,M=null,yt=null,It.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(lt);this.#x(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,Ke(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=p()).promise}static ensure(){if(M===null){let t=M=new e;!St&&!xt&&Ke(()=>{t.#e||t.flush()})}return M}apply(){yt=null}schedule(e){if(bt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ct!==null&&t===W&&(H===null||!(H.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=m}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?_t=e:t.#t=e,this.linked=!1}}};function Ot(e){var t=xt;xt=!0;try{var n;for(e&&(M!==null&&!M.is_fork&&M.flush(),n=e());;){if(qe(),M===null)return n;M.flush()}}finally{xt=t}}function kt(){try{Pe()}catch(e){rn(e,bt)}}var At=null;function jt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Hn(r)&&(At=new Set,Jn(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&xn(r),At?.size>0)){It.clear();for(let e of At){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)At.has(n)&&(At.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Jn(n)}}At.clear()}}At=null}}function Mt(e){M.schedule(e)}function Nt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),A(e,m);for(var n=e.first;n!==null;)Nt(n,t),n=n.next}}function Pt(e){A(e,m);for(var t=e.first;t!==null;)Pt(t),t=t.next}var Ft=new Set,It=new Map,Lt=!1;function Rt(e,t){return{f:0,v:e,reactions:null,equals:Te,rv:0,wv:0}}function N(e,t){let n=Rt(e,t);return Pn(n),n}function zt(e,t=!1,n=!0){let r=Rt(e);return t||(r.equals=De),r}function P(e,t,n=!1){return H!==null&&(!jn||H.f&131072)&&Ue()&&H.f&4325394&&(Nn===null||!Nn.has(e))&&Le(),Bt(e,n?Wt(t):t,wt)}function Bt(e,t,n=null){if(!e.equals(t)){kn?It.set(e,t):It.has(e)||It.set(e,e.v);var r=Dt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&pt(t),yt===null&&Ye(t)}e.wv=Vn(),Ut(e,h,n),Ue()&&W!==null&&W.f&1024&&!(W.f&96)&&(Fn===null?In([e]):Fn.push(e)),!r.is_fork&&Ft.size>0&&!Lt&&Vt()}return t}function Vt(){Lt=!1;for(let e of Ft){e.f&1024&&A(e,g);let t;try{t=Hn(e)}catch{t=!0}t&&Jn(e)}Ft.clear()}function Ht(e){P(e,e.v+1)}function Ut(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ue(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==W){var l=(c&h)===0;if(l&&A(s,t),c&131072)Ft.add(s);else if(c&2){var u=s;yt?.delete(u),c&65536||(c&512&&(W===null||!(W.f&2097152))&&(s.f|=C),Ut(u,g,n))}else if(l){var d=s;c&16&&At!==null&&At.add(d),n===null?Mt(d):n.push(d)}}}}function Wt(t){if(typeof t!=`object`||!t||ae in t||oe in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=N(0),u=null,d=zn,f=e=>{if(zn===d)return e();var t=H,n=zn;U(null),Bn(d);var r=e();return U(t),Bn(n),r};return i&&r.set(`length`,N(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Fe();var i=r.get(t);return i===void 0?f(()=>{var e=N(n.value,u);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>N(w,u));r.set(t,e),Ht(o)}}else P(n,w),Ht(o);return!0},get(e,n,i){if(n===ae)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>N(Wt(s?e[n]:w),u)),r.set(n,o)),o!==void 0){var c=q(o);return c===w?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=q(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==w)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ae)return!0;var n=r.get(t),i=n!==void 0&&n.v!==w||Reflect.has(e,t);return(n!==void 0||W!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>N(i?Wt(e[t]):w,u)),r.set(t,n)),q(n)===w)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>N(w,u)),r.set(d+``,p)):P(p,w)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>N(void 0,u)),P(c,Wt(n)),r.set(t,c));else{l=c.v!==w;var m=f(()=>Wt(n));P(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&P(g,_+1)}Ht(o)}return!0},ownKeys(e){q(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==w});for(var[n,i]of r)i.v!==w&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ie()}})}var Gt,Kt,qt,Jt;function Yt(){if(Gt===void 0){Gt=window,Kt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;qt=a(t,`firstChild`).get,Jt=a(t,`nextSibling`).get,u(e)&&(e[le]=void 0,e[ce]=null,e[ue]=void 0,e.__e=void 0),u(n)&&(n[de]=void 0)}}function F(e=``){return document.createTextNode(e)}function I(e){return qt.call(e)}function Xt(e){return Jt.call(e)}function L(e,t){if(!T)return I(e);var n=I(E);if(n===null)n=E.appendChild(F());else if(t&&n.nodeType!==3){var r=F();return n?.before(r),D(r),r}return t&&tn(n),D(n),n}function Zt(e,t=!1){if(!T){var n=I(e);return n instanceof Comment&&n.data===``?Xt(n):n}if(t){if(E?.nodeType!==3){var r=F();return E?.before(r),D(r),r}tn(E)}return E}function R(e,t=!1){if(!T)return I(e);var n=L(e,t);return O(e),n}function z(e,t=1,n=!1){let r=T?E:e;for(var i;t--;)i=r,r=Xt(r);if(!T)return r;if(n){if(r?.nodeType!==3){var a=F();return r===null?i?.after(a):r.before(a),D(a),a}tn(r)}return D(r),r}function Qt(e){e.textContent=``}function $t(){return!1}function en(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function tn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function nn(e){var t=W;if(t===null)return H.f|=ie,e;if(!(t.f&32768)&&!(t.f&4))throw e;rn(e,t)}function rn(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function an(e){W===null&&(H===null&&Ne(e),Me()),kn&&je(e)}function on(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function sn(e,t){var n=W;n!==null&&n.f&8192&&(e|=_);var r={ctx:k,deps:null,nodes:null,f:e|h|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var i=r;if(e&4)Ct===null?Dt.ensure().schedule(r):Ct.push(r);else if(t!==null){try{Jn(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=x))}if(i!==null&&(i.parent=n,n!==null&&on(i,n),H!==null&&H.f&2&&!(e&64))){var a=H;(a.effects??=[]).push(i)}return r}function cn(){return H!==null&&!jn}function ln(e){let t=sn(8,null);return A(t,m),t.teardown=e,t}function un(e){an(`$effect`);var t=W.f;if(!H&&t&32&&k!==null&&!k.i){var n=k;(n.e??=[]).push(e)}else return dn(e)}function dn(e){return sn(4|ee,e)}function fn(e){Dt.ensure();let t=sn(64|S,e);return(e={})=>new Promise(n=>{e.outro?Sn(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function pn(e){return sn(re|S,e)}function mn(e,t=0){return sn(8|t,e)}function B(e,t=[],n=[],r=[]){it(r,t,n,t=>{sn(8,()=>{e(...t.map(q))})})}function hn(e,t=0){return sn(16|t,e)}function gn(e){return sn(32|S,e)}function _n(e){var t=e.teardown;if(t!==null){let n=kn,r=H;An(!0),U(null);try{t.call(null)}catch(t){rn(t,e.parent)}finally{An(n),U(r)}}}function vn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&nt(()=>{e.abort(pe)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function yn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(bn(e.nodes.start,e.nodes.end),n=!0),e.f|=b,vn(e,t&&!n),qn(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();_n(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&xn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function bn(e,t){for(;e!==null;){var n=e===t?null:Xt(e);e.remove(),e=n}}function xn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Sn(e,t,n=!0){var r=[];e.f|=256,Cn(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Cn(e,t,n){if(!(e.f&8192)){e.f^=_;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);Cn(i,t,o?n:!1)}i=a}}}function wn(e){e.f&=-257,Tn(e,!0)}function Tn(e,t){if(!(e.f&256)&&e.f&8192){e.f^=_,e.f&1024||(A(e,h),Dt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);Tn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function En(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:Xt(n);t.append(n),n=i}}var Dn=null,On=!1,kn=!1;function An(e){kn=e}var H=null,jn=!1;function U(e){H=e}var W=null;function Mn(e){W=e}var Nn=null;function Pn(e){H!==null&&(Nn??=new Set).add(e)}var G=null,K=0,Fn=null;function In(e){Fn=e}var Ln=1,Rn=0,zn=Rn;function Bn(e){zn=e}function Vn(){return++Ln}function Hn(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~C),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Hn(a)&&mt(a),a.wv>e.wv)return!0}t&512&&yt===null&&A(e,m)}return!1}function Un(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Nn!==null&&Nn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Un(a,t,!1):t===a&&(n?A(a,h):a.f&1024&&A(a,g),Mt(a))}}function Wn(e){var t=G,n=K,r=Fn,i=H,a=Nn,o=k,s=jn,c=zn,l=e.f;G=null,K=0,Fn=null,H=l&96?null:e,Nn=null,ze(e.ctx),jn=!1,zn=++Rn,e.ac!==null&&(nt(()=>{e.ac.abort(pe)}),e.ac=null);try{e.f|=ne;var u=e.fn,d=u();e.f|=y;var f=Gn(e);if(Ue()&&Fn!==null&&!jn&&f!==null&&!(e.f&6146))for(var p=0;p<Fn.length;p++)Un(Fn[p],e);if(i!==null&&i!==e){if(Rn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Rn;if(t!==null)for(let e of t)e.rv=Rn;Fn!==null&&(r===null?r=Fn:r.push(...Fn))}return e.f&8388608&&(e.f^=ie),d}catch(t){return Gn(e),nn(t)}finally{e.f^=ne,G=t,K=n,Fn=r,H=i,Nn=a,ze(o),jn=s,zn=c}}function Gn(e){var t=e.deps,n=M?.is_fork;if(G!==null){var r;if(n||qn(e,K),t!==null&&K>0)for(t.length=K+G.length,r=0;r<G.length;r++)t[K+r]=G[r];else e.deps=t=G;if(cn()&&e.f&512)for(r=K;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&K<t.length&&(qn(e,K),t.length=K);return t}function Kn(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(G===null||!n.call(G,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~C),s.v!==w&&Ye(s),s.ac!==null&&nt(()=>{s.ac.abort(pe),s.ac=null,A(s,h)}),ht(s),qn(s,0)}}function qn(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Kn(e,n[r])}function Jn(e){var t=e.f;if(!(t&16384)){A(e,m);var n=W,r=On;W=e,On=!(t&96);try{t&16777232?yn(e):vn(e),_n(e);var i=Wn(e);e.teardown=typeof i==`function`?i:null,e.wv=Ln}finally{On=r,W=n}}}async function Yn(){await Promise.resolve(),Ot()}function q(e){var t=!!(e.f&2);if(Dn?.add(e),H!==null&&!jn&&!(W!==null&&W.f&16384)&&(Nn===null||!Nn.has(e))){var r=H.deps;if(H.f&2097152)e.rv<Rn&&(e.rv=Rn,G===null&&r!==null&&r[K]===e?K++:G===null?G=[e]:G.push(e));else{H.deps??=[],n.call(H.deps,e)||H.deps.push(e);var i=e.reactions;i===null?e.reactions=[H]:n.call(i,H)||i.push(H)}}if(kn&&It.has(e))return It.get(e);if(t){var a=e;if(kn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Zn(a))&&(o=pt(a)),It.set(a,o),o}var s=!(a.f&512)&&!jn&&H!==null&&(On||!!(H.f&512)),c=(a.f&y)===0;Hn(a)&&(s&&(a.f|=512),mt(a)),s&&!c&&(gt(a),Xn(a))}if(yt?.has(e))return yt.get(e);if(e.f&8388608)throw e.v;return e.v}function Xn(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(gt(t),Xn(t))}function Zn(e){if(e.v===w)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(It.has(t)||t.f&2&&Zn(t))return!0;return!1}function Qn(e){var t=jn;try{return jn=!0,e()}finally{jn=t}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var $n=[`touchstart`,`touchmove`];function er(e){return $n.includes(e)}var tr=Symbol(`events`),nr=new Set,rr=new Set;function ir(e,t,n,r={}){function i(e){if(r.capture||lr.call(t,e),!e.cancelBubble)return nt(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Ke(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function ar(e,t,n,r,i){var a={capture:r,passive:i},o=ir(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ln(()=>{t.removeEventListener(e,o,a)})}function J(e,t,n){(t[tr]??={})[e]=n}function or(e){for(var t=0;t<e.length;t++)nr.add(e[t]);for(var n of rr)n(e)}var sr=null,cr=!1;function lr(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;sr=e,cr||(cr=!0,setTimeout(()=>{cr=!1,sr=null}));var s=0,c=sr===e&&e[tr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[tr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=H,f=W;U(null),Mn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[tr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[tr]=t,delete e.currentTarget,U(d),Mn(f)}}}var ur=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function dr(e){return ur?.createHTML(e)??e}function fr(e){var t=en(`template`);return t.innerHTML=dr(e.replaceAll(`<!>`,`<!---->`)),t.content}function pr(e,t){var n=W;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function Y(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(`<!>`);return()=>{if(T)return pr(E,null),E;i===void 0&&(i=fr(a?e:`<!>`+e),n||(i=I(i)));var t=r||Kt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=I(t),s=t.lastChild;pr(o,s)}else pr(t,t);return t}}function mr(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(T)return pr(E,null),E;if(!o){var e=I(fr(a));if(i)for(o=document.createDocumentFragment();I(e);)o.appendChild(I(e));else o=I(e)}var t=o.cloneNode(!0);if(i){var n=I(t),r=t.lastChild;pr(n,r)}else pr(t,t);return t}}function hr(e,t){return mr(e,t,`svg`)}function gr(e=``){if(!T){var t=F(e+``);return pr(t,t),t}var n=E;return n.nodeType===3?tn(n):(n.before(n=F()),D(n)),pr(n,n),n}function _r(){if(T)return pr(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=F();return e.append(t,n),pr(t,n),e}function X(e,t){if(T){var n=W;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),xe();return}e!==null&&e.before(t)}function vr(e){let t=0,n=Rt(0),r;return()=>{cn()&&(q(n),mn(()=>(t===0&&(r=Qn(()=>e(()=>Ht(n)))),t+=1,()=>{Ke(()=>{--t,t===0&&(r?.(),r=void 0,Ht(n))})})))}}var yr=x|S;function br(e,t,n,r){new xr(e,t,n,r)}var xr=class{parent;is_pending=!1;transform_error;#e;#t=T?E:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=vr(()=>(this.#m=Rt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=W;t.b=this,t.f|=128,n(e)},this.parent=W.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=hn(()=>{if(T){let e=this.#t;xe();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#y():this.#g()}else this.#b()},yr),T&&(this.#e=E)}#g(){try{this.#a=gn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);Ke(r),t&&(this.#s=gn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{if(t){ye();return}t=!0,n&&Re(),this.#s!==null&&Sn(this.#s,()=>{this.#s=null}),this.#S(()=>{this.#b()})};return{reset:r,invoke_onerror:()=>{try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){rn(e,this.#i&&this.#i.parent)}}}}#y(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=gn(()=>e(this.#e)),Ke(()=>{var e=this.#c=document.createDocumentFragment(),t=F(),n=!1;if(e.append(t),this.#a=this.#S(()=>{try{return gn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){rn(e,this.#i.parent)}return null}}),this.#a===null){this.#c=null,n&&this.#x(M);return}this.#u===0&&(this.#e.before(e),this.#c=null,Sn(this.#o,()=>{this.#o=null}),this.#x(M))}))}#b(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=gn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();En(this.#a,e);let t=this.#n.pending;this.#o=gn(()=>t(this.#e))}else this.#x(M)}catch(e){this.error(e)}}#x(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Ze(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#S(e){var t=W,n=H,r=k;Mn(this.#i),U(this.#i),ze(this.#i.ctx);try{return Dt.ensure(),e()}finally{Mn(t),U(n),ze(r)}}#C(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#C(e,t);return}this.#u+=e,this.#u===0&&(this.#x(t),this.#o&&Sn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#C(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Ke(()=>{this.#d=!1,this.#m&&Bt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),q(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;M?.is_fork?(this.#a&&M.skip_effect(this.#a),this.#o&&M.skip_effect(this.#o),this.#s&&M.skip_effect(this.#s),M.oncommit(()=>{this.#w(e)})):this.#w(e)}#w(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),T&&(D(this.#t),Se(),D(Ce()));let t=this.#n.failed,n=e=>{let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&(this.#s=this.#S(()=>{try{return gn(()=>{var r=W;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return rn(e,this.#i.parent),null}}))};Ke(()=>{var t;try{t=this.transform_error(e)}catch(e){rn(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>rn(e,this.#i&&this.#i.parent)):n(t)})}};function Z(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[de]??=e.nodeValue)&&(e[de]=n,e.nodeValue=`${n}`)}function Sr(e,t){return wr(e,t)}var Cr=new Map;function wr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){Yt();var l=void 0,u=fn(()=>{var s=n??t.appendChild(F());br(s,{pending:()=>{}},t=>{Be({});var n=k;if(o&&(n.c=o),a&&(i.$$events=a),T&&pr(t,null),l=e(t,i)||He(),T&&(W.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw ve(),he;Ve()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=er(r);for(let e of[t,document]){var a=Cr.get(e);a===void 0&&(a=new Map,Cr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,lr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(nr)),rr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Cr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,lr),r.delete(e),r.size===0&&Cr.delete(n)):r.set(e,i)}rr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Tr.set(l,u),l}var Tr=new WeakMap,Er=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)wn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(wn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();En(r,t),t.append(F()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Sn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=M,r=$t();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=F();i.append(a),this.#n.set(e,{effect:gn(()=>t(a)),fragment:i})}else this.#t.set(e,gn(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else T&&(this.anchor=E),this.#a(n)}};function Q(e,t,n=!1){var r;T&&(r=E,xe());var i=new Er(e),a=n?x:0;function o(e,t){if(T){var n=we(r);if(e!==parseInt(n.substring(1))){var a=Ce();D(a),i.anchor=a,be(!1),i.ensure(e,t),be(!0);return}}i.ensure(e,t)}hn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Dr(e,t){return t}function Or(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Sn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;kr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;Qt(d),d.append(u),e.items.clear()}kr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function kr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=te,En(a,document.createDocumentFragment())):V(t[i],n)}}var Ar;function jr(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=T?D(I(u)):u.appendChild(F())}T&&xe();var d=null,f=dt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Nr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=te,Fr(d,null,c)):wn(d):Sn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:hn(()=>{p=q(f);var e=p.length;let t=!1;T&&we(c)===`[!`!=(e===0)&&(c=Ce(),D(c),be(!1),t=!0);for(var r=new Set,u=M,v=$t(),y=0;y<e;y+=1){T&&E.nodeType===8&&E.data===`]`&&(c=E,t=!0,be(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Bt(S.v,b),S.i&&Bt(S.i,y),v&&u.unskip_effect(S.e)):(S=Pr(l,h?c:Ar??=F(),b,x,y,o,n,i),h||(S.e.f|=te),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=gn(()=>s(c)):(d=gn(()=>s(Ar??=F())),d.f|=te)),e>r.size&&Ae(``,``,``),T&&e>0&&D(Ce()),!h){if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u)}t&&be(!0),q(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,T&&(c=E)}function Mr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Nr(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=Mr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(wn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=te,_===l)Fr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Ir(e,d,_),Ir(e,_,y),Fr(_,y,n),d=_,p=[],m=[],l=Mr(d.next);continue}}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],ee=p[p.length-1];for(x=0;x<p.length;x+=1)Fr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Ir(e,S.prev,ee.next),Ir(e,d,S),Ir(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),Fr(_,l,n),Ir(e,_.prev,_.next),Ir(e,_,d===null?e.effect.first:d.next),Ir(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Mr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Mr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(kr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var C=[];if(u!==void 0)for(_ of u)_.f&8192||C.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&C.push(l),l=Mr(l.next);var ne=C.length;if(ne>0){var re=i&4&&s===0?n:null;if(o){for(v=0;v<ne;v+=1)C[v].nodes?.a?.measure();for(v=0;v<ne;v+=1)C[v].nodes?.a?.fix()}Or(e,C,re)}}o&&Ke(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Pr(e,t,n,r,i,a,o,s){var c=o&1?o&16?Rt(n):zt(n,!1,!1):null,l=o&2?Rt(i):null;return{v:c,i:l,e:gn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Fr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=Xt(r);if(a.before(r),r===i)return;r=o}}function Ir(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Lr(e,t,...n){var r=new Er(e);hn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},x)}var Rr=[...`
|
|
2
|
+
\r\f\xA0\v`];function zr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Rr.includes(r[o-1]))&&(s===r.length||Rr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Br(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Vr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Hr(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Vr)),i&&c.push(...Object.keys(i).map(Vr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Vr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Br(r)),i&&(n+=Br(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Ur(e,t,n,r,i,a){var o=e[le];if(T||o!==n||o===void 0){var s=zr(n,r,a);(!T||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[le]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Wr(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Gr(e,t,n,r){var i=e[ue];if(T||i!==t){var a=Hr(t,r);(!T||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ue]=t}else r&&(Array.isArray(r)?(Wr(e,n?.[0],r[0]),Wr(e,n?.[1],r[1],`important`)):Wr(e,n,r));return r}var Kr=Symbol(`is custom element`),qr=Symbol(`is html`),Jr=me?`link`:`LINK`;function Yr(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Zr(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Zr(e,`checked`,null),e.checked=r}}};e[fe]=n,Ke(n),tt()}}function Xr(e,t){var n=Qr(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Zr(e,t,n,r){var i=Qr(e);T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Jr)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[se]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ei(e).has(t)?e[t]=n:e.setAttribute(t,n))}function Qr(e){return e[ce]??={[Kr]:e.nodeName.includes(`-`),[qr]:e.namespaceURI===ge}}var $r=new Map;function ei(e){var t=e.getAttribute(`is`)||e.nodeName,n=$r.get(t);if(n)return n;$r.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.add(s);i=l(i)}return n}function ti(e,t,n=t){var r=new WeakSet;rt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=ni(e)?ri(a):a,n(a),M!==null&&r.add(M),await Yn(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(T&&e.defaultValue!==e.value||Qn(t)==null&&e.value)&&(n(ni(e)?ri(e.value):e.value),M!==null&&r.add(M)),mn(()=>{var n=t();if(e===document.activeElement){var i=M;if(r.has(i))return}ni(e)&&n===ri(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}function ni(e){var t=e.type;return t===`number`||t===`range`}function ri(e){return e===``?null:+e}function ii(e){k===null&&Oe(`onMount`),un(()=>{let t=Qn(e);if(typeof t==`function`)return t})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ai=hr(`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m3.4 8.4 3 3 6.2-6.8"></path></svg>`),oi=hr(`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 4v5"></path><path d="M8 12h.01"></path></svg>`),si=hr(`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M4 4l8 8M12 4l-8 8"></path></svg>`),ci=Y(`<span class="fix svelte-hz6ou4"> </span>`),li=Y(`<li class="svelte-hz6ou4"><span class="mark svelte-hz6ou4" aria-hidden="true"><!></span> <span class="body svelte-hz6ou4"><b class="svelte-hz6ou4"> </b> <span class="msg svelte-hz6ou4"> </span> <!></span> <span class="sr svelte-hz6ou4"> </span></li>`),ui=Y(`<section class="health svelte-hz6ou4" aria-label="Health"><header class="svelte-hz6ou4"><h2 class="svelte-hz6ou4"> </h2> <p class="svelte-hz6ou4">This is the same check <code>npx verbaly doctor</code> runs, read out loud. It looks at your
|
|
3
|
+
settings, your catalogs and the way your build is wired, and it never changes anything.</p> <button class="close svelte-hz6ou4">Back to the messages</button></header> <ul class="svelte-hz6ou4"></ul></section>`);function di(e,t){Be(t,!0);let n={config:`Your settings`,cli:`The verbaly command`,catalogs:`Your catalogs`,routing:`Where the language lives in your urls`,plugin:`The piece that wires your build`,types:`The generated types`,sources:`Reading your code`,orphans:`Keys nothing in your code uses`,bundle:`What the browser downloads`,translations:`The translations themselves`},r=j(()=>t.entries.filter(e=>e.level!==`ok`).length);var i=ui(),a=L(i),o=L(a),s=R(o,!0),c=z(o,4);O(a);var l=z(a,2);jr(l,21,()=>t.entries,Dr,(e,t)=>{var r=li(),i=L(r),a=L(i),o=e=>{X(e,ai())},s=e=>{X(e,oi())},c=e=>{X(e,si())};Q(a,e=>{q(t).level===`ok`?e(o):q(t).level===`warn`?e(s,1):e(c,-1)}),O(i);var l=z(i,2),u=L(l),d=R(u,!0),f=z(u,2),p=R(f,!0),m=z(f,2),h=e=>{var n=ci(),r=R(n,!0);B(()=>Z(r,q(t).fix)),X(e,n)};Q(m,e=>{q(t).fix&&e(h)}),O(l);var g=R(z(l,2),!0);O(r),B(()=>{Zr(r,`data-level`,q(t).level),Z(d,n[q(t).check]??q(t).check),Z(p,q(t).message),Z(g,q(t).level)}),X(e,r)}),O(l),O(i),B(()=>Z(s,t.ok?`Nothing is broken`:`${q(r)} of ${t.entries.length} need you`)),J(`click`,c,function(...e){t.onClose?.apply(this,e)}),X(e,i),Ve()}or([`click`]);var fi={done:{short:`ready`,long:`ready`},draft:{short:`unread`,long:`written by a machine, nobody has read it`},missing:{short:`missing`,long:`missing, so your visitor sees the source language`},broken:{short:`breaks`,long:`breaks your site`}},pi={all:`everything`,missing:`missing`,draft:`unread`,broken:`breaks your site`,look:`worth a look`},mi={divergent:`the source says this two ways`,collision:`came back as two translations`,echo:`still identical to the source`,digits:`the numbers moved`,url:`a link changed`,code:`a code span changed`},hi=`Undo`,$={find:`Find new text`,findWhy:`Reads your code and adds what your catalogs do not have yet.`,translate:`Translate what is missing`,translateWhy:`Calls your provider, so it costs money and takes minutes.`,cancel:`Not now`,working:`Reading your code`,running:`Translating`,nothingNew:`Nothing new: your catalogs already have every message your code uses.`,nothingMissing:`Nothing missing in the languages you ticked.`,pickFirst:`Tick a language to translate it.`,onlyLocale:`This project has one language, so there is nothing to translate into.`,scanOff:`Source scanning is off in your config, so there is nothing to read.`},gi={noCatalogs:`No messages yet. Studio reads the catalogs in your project, and there are none here.`,oneLocale:`One language is all you have, so there is nothing to compare it against yet.`,oneLocaleFix:`Add another one to your config and it shows up in the rail.`,pickOne:`Tick a language in the rail to see its translations.`,noMatch:`Nothing matches. Every message here is in the state you asked for.`};function _i(e){return`${e} ${e===1?`message`:`messages`}`}var vi=Y(`<span> </span>`),yi=Y(`<button class="read svelte-1rwkwvu"> <span class="n svelte-1rwkwvu"> </span></button>`),bi=Y(`<li><label><input type="checkbox" class="svelte-1rwkwvu"/> <span class="meta svelte-1rwkwvu"><span class="name svelte-1rwkwvu"> </span> <span class="state svelte-1rwkwvu"> </span></span></label> <!></li>`),xi=Y(`<p class="undo svelte-1rwkwvu"><span> </span> <button class="svelte-1rwkwvu"> </button></p>`),Si=Y(`<li><button type="button"><span> </span> <span class="count svelte-1rwkwvu"> </span></button></li>`),Ci=Y(`<nav class="rail svelte-1rwkwvu" aria-label="Languages and filters"><button class="nav svelte-1rwkwvu"><span>Health</span> <!></button> <!> <h2 class="cap svelte-1rwkwvu">Languages</h2> <ul class="langs svelte-1rwkwvu"></ul> <!> <h2 class="cap svelte-1rwkwvu">Show</h2> <ul class="filters svelte-1rwkwvu"></ul></nav>`);function wi(e,t){Be(t,!0);let n=[`all`,`look`,`missing`,`draft`,`broken`];function r(e){return e.source?`the one you write`:e.broken?`${e.broken} breaks your site`:e.missing?`${e.missing} missing`:e.draft?`${e.draft} nobody has read`:`all read`}function i(e){return e.source?`done`:e.broken?`broken`:e.missing?`missing`:e.draft?`draft`:`done`}var a=Ci(),o=L(a),s=z(L(o),2),c=e=>{var n=vi();let r;var i=R(n,!0);B(()=>{r=Ur(n,1,`bad svelte-1rwkwvu`,null,r,{clean:!t.checks.bad}),Z(i,t.checks.bad||`ok`)}),X(e,n)};Q(s,e=>{t.checks&&e(c)}),O(o);var l=z(o,2);Lr(l,()=>t.actions);var u=z(l,4);jr(u,21,()=>t.health,e=>e.locale,(e,n)=>{var a=bi(),o=L(a);let s;var c=L(o);Yr(c);var l=z(c,2),u=L(l),d=R(u,!0),f=z(u,2),p=R(f,!0);O(l),O(o);var m=z(o,2),h=e=>{var r=yi(),i=L(r),a=R(z(i),!0);O(r),B(()=>{Z(i,`Mark as read `),Z(a,q(n).draft)}),J(`click`,r,()=>t.onRead(q(n).locale)),X(e,r)};Q(m,e=>{!q(n).source&&q(n).draft>0&&e(h)}),O(a),B((e,t,r)=>{s=Ur(o,1,`lang svelte-1rwkwvu`,null,s,{source:q(n).source}),Xr(c,e),c.disabled=q(n).source,Z(d,q(n).locale),Zr(f,`data-state`,t),Z(p,r)},[()=>t.shown.includes(q(n).locale),()=>i(q(n)),()=>r(q(n))]),J(`change`,c,()=>t.onToggle(q(n).locale)),X(e,a)}),O(u);var d=z(u,2),f=e=>{var n=xi(),r=L(n),i=R(r),a=z(r,2),o=R(a,!0);O(n),B(()=>{Z(i,`${t.pending.keys.length??``} in ${t.pending.locale??``} marked as read`),Z(o,hi)}),J(`click`,a,function(...e){t.onUndo?.apply(this,e)}),X(e,n)};Q(d,e=>{t.pending&&e(f)});var p=z(d,4);jr(p,20,()=>n,e=>e,(e,n)=>{var r=Si(),i=L(r);let a;var o=L(i),s=R(o,!0),c=R(z(o,2),!0);O(i),O(r),B(()=>{a=Ur(i,1,`svelte-1rwkwvu`,null,a,{on:t.state===n}),Z(s,pi[n]),Z(c,t.counts[n]??0)}),J(`click`,i,()=>t.onState(n)),X(e,r)}),O(p),O(a),J(`click`,o,function(...e){t.onHealth?.apply(this,e)}),X(e,a),Ve()}or([`click`,`change`]);var Ti=hr(`<svg viewBox="0 0 22 22" width="15" height="15" aria-hidden="true"><path d="M5 11h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>`),Ei=hr(`<svg viewBox="0 0 22 22" width="15" height="15" aria-hidden="true" fill="none"><path d="M6 12.5 11 7l5 5.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"></path><path d="M11 8v7" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg>`),Di=hr(`<svg viewBox="0 0 22 22" width="15" height="15" aria-hidden="true" fill="none"><path d="M4.5 12.5c1.6-2.2 3.2-2.2 4.8 0s3.2 2.2 4.8 0 3.2-2.2 4.8 0" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg>`),Oi=hr(`<svg viewBox="0 0 22 22" width="15" height="15" aria-hidden="true"><path d="M11 6v6.4" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path><circle cx="11" cy="16" r="1.2" fill="currentColor"></circle></svg>`),ki=Y(`<!> <span class="sr svelte-150apog"> </span>`,1);function Ai(e,t){let n={done:`translated`,draft:`written by a machine`,missing:`not translated, shows in your source language`,broken:`breaks your site`};var r=ki(),i=Zt(r),a=e=>{X(e,Ti())},o=e=>{X(e,Ei())},s=e=>{X(e,Di())},c=e=>{X(e,Oi())};Q(i,e=>{t.state===`done`?e(a):t.state===`missing`?e(o,1):t.state===`draft`?e(s,2):e(c,-1)});var l=R(z(i,2),!0);B(()=>Z(l,n[t.state])),X(e,r)}var ji=new Set;function Mi(e){ji.has(e)||(ji.add(e),console.warn(`[verbaly] ${e}`))}var Ni=/\{\s*[a-zA-Z0-9_]+\s*,\s*(?:plural|selectordinal|select|number|date|time)\b/;function Pi(e){return Ni.test(e)}var Fi=new Map,Ii=5e3;function Li(e,t){let n=Fi.get(e);if(!n){if(Pi(e)){if(!t)return Ri(e);n=t(e)}else n=zi(e,!1);Fi.size>=Ii&&Fi.delete(Fi.keys().next().value),Fi.set(e,n)}return n}function Ri(e){return Mi(`a message uses ICU syntax but no ICU parser is loaded: pass icu to createVerbaly (the compiler wires it when a catalog needs it, so this means it arrived after the build)`),[{kind:`text`,value:e}]}function zi(e,t){let n=[],r=``,i=0,a=()=>{r&&n.push({kind:`text`,value:r}),r=``};for(;i<e.length;){let o=e[i];if(o===`{`){if(e[i+1]===`{`){r+=`{`,i+=2;continue}let t=Bi(e,i);if(t<0){r+=e.slice(i);break}a(),n.push(Vi(e.slice(i+1,t))),i=t+1}else o===`}`&&e[i+1]===`}`?(r+=`}`,i+=2):t&&o===`#`?e[i+1]===`#`?(r+=`#`,i+=2):(a(),n.push({kind:`hash`}),i+=1):(r+=o,i+=1)}return a(),n}function Bi(e,t){let n=0,r=t;for(;r<e.length;){let t=e[r];if(t===`{`){if(e[r+1]===`{`){r+=2;continue}n+=1}else if(t===`}`){if(e[r+1]===`}`){r+=2;continue}if(--n,n===0)return r}r+=1}return-1}function Vi(e){let t=Hi(e),n=(t[0]??``).trim();if(!n)return{kind:`text`,value:`{${e}}`};let r=n.indexOf(`:`),i=(r<0?n:n.slice(0,r)).trim();if(!i)return{kind:`text`,value:`{${e}}`};let a={kind:`param`,name:i};if(r>=0){let e=n.slice(r+1).trim(),t=e.indexOf(`/`);a.format=(t<0?e:e.slice(0,t)).trim(),t>=0&&(a.arg=e.slice(t+1).trim())}if(t.length>1){a.variants=[];for(let e of t.slice(1)){let t=e.indexOf(`:`);if(t<0)continue;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();n&&a.variants.push([n,zi(r,!0)])}}return a}function Hi(e){let t=[],n=``,r=0,i=0;for(;i<e.length;){let a=e[i];if(a===`{`){if(e[i+1]===`{`){n+=`{{`,i+=2;continue}r+=1,n+=a}else if(a===`}`){if(e[i+1]===`}`){n+=`}}`,i+=2;continue}--r,n+=a}else if(a===`|`&&r===0){if(e[i+1]===`|`){n+=`|`,i+=2;continue}t.push(n),n=``}else n+=a;i+=1}return t.push(n),t}var Ui=/<(\/?)([a-zA-Z][\w-]*)(\/?)>/g,Wi=/&(?:(lt|gt|amp)|#(\d+)|#[xX]([0-9a-fA-F]+));/g,Gi={lt:`<`,gt:`>`,amp:`&`},Ki=e=>e.replace(Wi,(e,t,n,r)=>{if(t)return Gi[t];let i=n?parseInt(n,10):parseInt(r,16);return i<=1114111?String.fromCodePoint(i):e});function qi(e){Ui.lastIndex=0;let t=[],n=[],r=()=>n.length?n[n.length-1].children:t,i=e=>{e&&r().push(Ki(e))},a=0,o;for(;(o=Ui.exec(e))!==null;){let[t,s,c,l]=o;if(i(e.slice(a,o.index)),a=o.index+t.length,l)r().push({name:c,children:[]});else if(s){if(n.length&&n[n.length-1].name===c){let e=n.pop();r().push(e)}else i(t)}else n.push({name:c,children:[]})}for(i(e.slice(a));n.length;){let e=n.pop();r().push(...e.children)}return t}function Ji(e,t){for(let n of e)if(n.kind===`param`&&n.name){t.has(n.name)||t.set(n.name,new Set);for(let[e,r]of n.variants??[])t.get(n.name).add(e),Ji(r,t)}}function Yi(e){let t=new Map;try{Ji(Li(e),t)}catch{}return t}function Xi(e,t){for(let n of e)typeof n!=`string`&&(t.push(n.name),Xi(n.children,t))}function Zi(e){let t=[];try{Xi(qi(e),t)}catch{return t}return t}function Qi(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}var $i=e=>e.length===1?e[0]:`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`;function ea(e,t){let n=Yi(e),r=Yi(t),i=[...new Set([...n.keys(),...r.keys()])].sort().map(e=>({name:e,inSource:n.has(e),inTarget:r.has(e)})),a=[],o=i.filter(e=>e.inSource&&!e.inTarget).map(e=>`{${e.name}}`),s=i.filter(e=>!e.inSource&&e.inTarget).map(e=>`{${e.name}}`);o.length&&a.push(`${$i(o)} is missing, so its value never reaches the text`),s.length&&a.push(`${$i(s)} is not in the source, so it renders as literal text`);for(let[e,t]of r)t.size&&!t.has(`other`)&&a.push(`the block for {${e}} has no "other" case, so some counts render empty`);let c=Qi(Zi(e)),l=Qi(Zi(t));for(let[e,t]of c)(l.get(e)??0)<t&&a.push(`<${e}> is missing from the translation`);for(let[e,t]of l)(c.get(e)??0)<t&&a.push(`<${e}> is not in the source message`);return{params:i,problems:a}}var ta=Y(`<span> </span>`),na=Y(`<span class="vmsg svelte-1vuyl2e"> </span>`),ra=Y(`<span class="tl edit svelte-1vuyl2e"><span class="disc svelte-1vuyl2e"> </span> <textarea class="tf svelte-1vuyl2e" rows="2"></textarea></span> <span class="editbar svelte-1vuyl2e"><!> <!> <!> <button class="btn sm svelte-1vuyl2e"> </button> <button class="btn sm quiet svelte-1vuyl2e">Cancel</button> <span class="keys svelte-1vuyl2e">Enter saves · Esc closes</span></span>`,1),ia=Y(`<button class="tv svelte-1vuyl2e"> </button>`),aa=Y(`<button class="tv none svelte-1vuyl2e"> </button>`),oa=Y(`<span class="sig svelte-1vuyl2e"> </span>`),sa=Y(`<span class="tl svelte-1vuyl2e"><span class="disc svelte-1vuyl2e"> </span> <!> <!></span>`),ca=Y(`<article><span class="tile svelte-1vuyl2e"><!></span> <span class="row-t svelte-1vuyl2e"><span class="src svelte-1vuyl2e"> </span> <!></span></article>`);function la(e,t){Be(t,!0);let n=j(()=>t.row.cells.filter(e=>t.shown.includes(e.locale))),r=j(()=>[`broken`,`missing`,`draft`,`done`].find(e=>q(n).some(t=>t.state===e))??`done`),i=N(``),a=N(!1),o=N(null),s=j(()=>ea(t.row.source,q(i))),c=e=>`${e.locale} ${t.row.key}`;function l(e){P(i,e.text,!0),P(o,null),t.onEdit(c(e))}async function u(e){q(a)||(P(a,!0),P(o,await t.onSave(e.locale,t.row.key,q(i)),!0),P(a,!1),q(o)||t.onEdit(null))}function d(e,n){e.key===`Escape`&&t.onEdit(null),e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),u(n))}var f=ca();let p;var m=L(f);Ai(L(m),{get state(){return q(r)}}),O(m);var h=z(m,2),g=L(h),_=R(g,!0);jr(z(g,2),17,()=>q(n),e=>e.locale,(e,n)=>{var r=_r(),f=Zt(r),p=e=>{var r=ra(),c=Zt(r),l=L(c),f=R(l,!0),p=z(l,2);$e(p),Qe(p,!0),O(c);var m=z(c,2),h=L(m);jr(h,17,()=>q(s).params,e=>e.name,(e,t)=>{var n=ta();let r;var i=R(n);B(()=>{r=Ur(n,1,`pm svelte-1vuyl2e`,null,r,{gone:q(t).inSource&&!q(t).inTarget}),Z(i,`${q(t).inSource&&!q(t).inTarget?`+`:``}{${q(t).name??``}}`)}),X(e,n)});var g=z(h,2);jr(g,16,()=>q(s).problems,e=>e,(e,t)=>{var n=na(),r=R(n,!0);B(()=>Z(r,t)),X(e,n)});var _=z(g,2),v=e=>{var t=na(),n=R(t,!0);B(()=>Z(n,q(o))),X(e,t)};Q(_,e=>{q(o)&&!q(s).problems.length&&e(v)});var y=z(_,2),b=R(y,!0),x=z(y,2);Se(2),O(m),B(()=>{Zr(l,`data-state`,q(n).state),Z(f,q(n).locale),Zr(p,`aria-label`,`Translation for ${q(n).locale??``}`),y.disabled=q(a),Z(b,q(a)?`Saving`:`Save`)}),J(`keydown`,p,e=>d(e,q(n))),ti(p,()=>q(i),e=>P(i,e)),J(`click`,y,()=>u(q(n))),J(`click`,x,()=>t.onEdit(null)),X(e,r)},m=j(()=>t.editing===c(q(n))),h=e=>{var t=sa(),r=L(t),i=R(r,!0),a=z(r,2),o=e=>{var t=ia(),r=R(t,!0);B(()=>{Zr(t,`title`,q(n).text),Z(r,q(n).text)}),J(`click`,t,()=>l(q(n))),X(e,t)},s=e=>{var t=aa(),r=R(t,!0);B(()=>Z(r,fi.missing.long)),J(`click`,t,()=>l(q(n))),X(e,t)};Q(a,e=>{q(n).text?e(o):e(s,-1)}),jr(z(a,2),16,()=>q(n).signals,e=>e,(e,t)=>{var n=oa(),r=R(n,!0);B(()=>{Zr(n,`title`,mi[t]??t),Z(r,mi[t]??t)}),X(e,n)}),O(t),B(()=>{Zr(r,`data-state`,q(n).state),Z(i,q(n).locale)}),X(e,t)};Q(f,e=>{q(m)?e(p):e(h,-1)}),X(e,r)}),O(h),O(f),B(e=>{p=Ur(f,1,`row svelte-1vuyl2e`,null,p,{open:e}),Zr(f,`data-worst`,q(r)),Zr(m,`data-state`,q(r)),Z(_,t.row.source)},[()=>q(n).some(e=>t.editing===c(e))]),X(e,f),Ve()}or([`keydown`,`click`]);function ua(e,t=``,n={}){for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`string`?n[e]=i:i&&typeof i==`object`&&!Array.isArray(i)&&ua(i,e,n)}return n}function da(e){let t={};for(let n of e.locales)t[n]=ua(e.catalogs[n]??{});let n=new Map;for(let t of e.check.broken)t.severity===`error`&&n.set(`${t.locale}\u0000${t.key}`,t.issue);let r=new Map;for(let[t,n]of Object.entries(e.drafts))r.set(t,new Set(n));let i=t[e.sourceLocale]??{},a=e.locales.filter(t=>t!==e.sourceLocale),o=Object.keys(i).map(o=>({key:o,source:i[o]??``,origins:e.origins[o]??[],cells:a.map(i=>{let a=t[i]?.[o]??``,s=n.get(`${i}\u0000${o}`);return{locale:i,text:a,state:s?`broken`:a?r.get(i)?.has(o)?`draft`:`done`:`missing`,issue:s,signals:(e.triage?.[i]?.[o]??[]).map(e=>e.signal)}})}));return{root:e.root,scanning:e.scanning,sourceLocale:e.sourceLocale,locales:e.locales,rows:o,problems:e.problems}}function fa(e){return e.locales.map(t=>{let n=e.rows.length;if(t===e.sourceLocale)return{locale:t,source:!0,total:n,done:n,draft:0,missing:0,broken:0};let r={done:0,draft:0,missing:0,broken:0};for(let n of e.rows){let e=n.cells.find(e=>e.locale===t);e&&r[e.state]++}return{locale:t,source:!1,total:n,...r}})}function pa(e,t){Object.assign(e,da(t))}function ma(e,t,n){return e.rows.length?e.locales.length<2?`oneLocale`:t.length?n.length?null:`noMatch`:`pickOne`:`noCatalogs`}function ha(e,t){let n=t.text.trim().toLowerCase(),r=new Set(t.locales);return e.filter(e=>{let i=e.cells.filter(e=>r.has(e.locale));return t.state===`look`&&!i.some(e=>e.signals.length)||t.state!==`all`&&t.state!==`look`&&!i.some(e=>e.state===t.state)?!1:!n||e.source.toLowerCase().includes(n)?!0:i.some(e=>e.text.toLowerCase().includes(n))})}var ga=Y(`<div class="bill svelte-5qpy41"><p class="lede svelte-5qpy41"> </p> <p class="why svelte-5qpy41"> </p> <div class="pair svelte-5qpy41"><button class="go svelte-5qpy41"> </button> <button class="plain svelte-5qpy41"> </button></div></div>`),_a=Y(`<div class="bill svelte-5qpy41"><p class="lede svelte-5qpy41"> </p> <div class="track svelte-5qpy41"><span class="fill svelte-5qpy41"></span></div> <p class="why svelte-5qpy41"> </p></div>`),va=Y(`<button class="act svelte-5qpy41"><span class="name svelte-5qpy41"> </span> <span class="why svelte-5qpy41"> </span></button> <button class="act svelte-5qpy41"><span class="name svelte-5qpy41"> </span> <span class="why svelte-5qpy41"> </span></button>`,1),ya=Y(`<p> </p>`),ba=Y(`<section class="acts svelte-5qpy41" aria-label="Commands"><h2 class="cap svelte-5qpy41">Commands</h2> <!> <!></section>`);function xa(e,t){Be(t,!0);let n=N(Wt({at:`idle`})),r=j(()=>q(n).at===`finding`||q(n).at===`planning`||q(n).at===`running`);function i(e,t=!1){P(n,{at:`said`,text:e,bad:t},!0)}async function a(){P(n,{at:`finding`},!0);let e=await t.api.extract();if(e.error||!e.value)return i(e.error??`no answer`,!0);let{found:r}=e.value;if(!r)return i($.nothingNew);let a=`${_i(r)} your code uses and your catalogs did not have`;await t.onDone(a),i(a)}async function o(){P(n,{at:`planning`},!0);let e=await t.api.plan(t.shown);if(e.error||!e.value)return i(e.error??`no answer`,!0);if(!e.value.total)return i($.nothingMissing);P(n,{at:`plan`,plan:e.value},!0)}async function s(e){let r=await t.api.job(e);if(r.error||!r.value)return i(r.error??`no answer`,!0);let a=r.value;if(a.state===`running`){P(n,{at:`running`,job:a},!0);return}let o=`${_i(a.done)} translated, unread until you read them`;await t.onDone(o),i(a.state===`failed`?a.message??`the run failed`:o,a.state===`failed`)}async function c(){let e=await t.api.translate(t.shown);if(e.error||!e.value)return i(e.error??`no answer`,!0);P(n,{at:`running`,job:e.value},!0)}ii(()=>{t.api.job().then(e=>{e.value&&q(n).at===`idle`&&P(n,{at:`running`,job:e.value},!0)})}),un(()=>{if(q(n).at!==`running`)return;let e=q(n).job.id,t=setInterval(()=>void s(e),1e3);return()=>clearInterval(t)});let l=j(()=>t.targets?t.shown.length?$.translateWhy:$.pickFirst:$.onlyLocale),u=j(()=>q(n).at===`running`&&q(n).job.total?q(n).job.done/q(n).job.total:0);var d=ba(),f=z(L(d),2),p=e=>{var t=ga(),r=L(t),i=R(r),a=z(r,2),o=R(a,!0),s=z(a,2),l=L(s),u=R(l,!0),d=z(l,2),f=R(d,!0);O(s),O(t),B((e,t)=>{Z(i,`${e??``} in ${t??``}`),Z(o,$.translateWhy),Z(u,$.translate),Z(f,$.cancel)},[()=>_i(q(n).plan.total),()=>Object.keys(q(n).plan.pending).join(`, `)]),J(`click`,l,c),J(`click`,d,()=>P(n,{at:`idle`},!0)),X(e,t)},m=e=>{var t=_a(),r=L(t),i=R(r),a=z(r,2),o=R(a),s=R(z(a,2));O(t),B(e=>{Z(i,`${$.running??``} ${q(n).job.locale??``??``}`),Gr(o,`width: ${e??``}%`),Z(s,`${q(n).job.done??``} of ${q(n).job.total??``}`)},[()=>Math.round(q(u)*100)]),X(e,t)},h=e=>{var i=va(),s=Zt(i),c=L(s),u=R(c,!0),d=R(z(c,2),!0);O(s);var f=z(s,2),p=L(f),m=R(p,!0),h=R(z(p,2),!0);O(f),B(()=>{s.disabled=q(r)||!t.scanning,Z(u,q(n).at===`finding`?$.working:$.find),Z(d,t.scanning?$.findWhy:$.scanOff),f.disabled=q(r)||!t.shown.length,Z(m,$.translate),Z(h,q(l))}),J(`click`,s,a),J(`click`,f,o),X(e,i)};Q(f,e=>{q(n).at===`plan`?e(p):q(n).at===`running`?e(m,1):e(h,-1)});var g=z(f,2),_=e=>{var t=ya();let r;var i=R(t,!0);B(()=>{r=Ur(t,1,`said svelte-5qpy41`,null,r,{bad:q(n).bad}),Z(i,q(n).text)}),X(e,t)};Q(g,e=>{q(n).at===`said`&&e(_)}),O(d),X(e,d),Ve()}or([`click`]);var Sa=Y(`<li><code> </code> </li>`),Ca=Y(`<ul class="problems svelte-c7dw08"></ul>`),wa=Y(`<p class="note svelte-c7dw08"> </p>`),Ta=Y(`<!> <!>`,1),Ea=Y(`<main class="table svelte-c7dw08"><!></main>`),Da=Y(`Saved in <code> </code>`,1),Oa=Y(`<p class="snack svelte-c7dw08" role="status"><svg viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="svelte-c7dw08"><path d="m3.4 8.4 3 3 6.2-6.8"></path></svg> <!> <button class="svelte-c7dw08">Dismiss</button></p>`),ka=Y(`<div class="shell svelte-c7dw08"><header class="bar svelte-c7dw08"><span class="brand svelte-c7dw08">verbaly <b class="svelte-c7dw08">studio</b></span> <input class="search svelte-c7dw08" type="search" placeholder="Search the text, not the key" aria-label="Search the text, not the key"/> <span class="root svelte-c7dw08"> </span></header> <!> <div class="body svelte-c7dw08"><!> <!></div> <!></div>`);function Aa(e,t){Be(t,!0);let n=N(null),r=N(null),i=N(null),a=N(`messages`),o=N(null);async function s(){P(a,`health`);let e=await t.api.health();if(e.error){P(r,{text:e.error,file:``},!0);return}e.value&&P(o,e.value,!0)}un(()=>{t.api.health().then(e=>{e.value&&P(o,e.value,!0)})});async function c(e){let a=await t.api.state();if(a.error||!a.value){P(r,{text:a.error??`[verbaly] the server sent no state`,file:``},!0);return}P(n,null),P(i,null),pa(t.panel,a.value),P(r,{text:e,file:``},!0);let s=await t.api.health();s.value&&P(o,s.value,!0)}async function l(e,n,a){let o=await t.api.setRead(e,n,a);if(o.error){P(r,{text:o.error,file:``},!0);return}let s=new Set(o.value?.keys??[]);for(let n of t.panel.rows){if(!s.has(n.key))continue;let t=n.cells.find(t=>t.locale===e);t?.text&&(t.state=a?`draft`:`done`)}P(i,a?null:{locale:e,keys:o.value?.keys??[]},!0)}async function u(e,n,i){let a=await t.api.save(e,n,i);if(a.error)return a.error;let o=t.panel.rows.find(e=>e.key===n)?.cells.find(t=>t.locale===e);return o&&(o.text=i,o.state=i?`done`:`missing`,o.issue=void 0),P(r,{text:i,file:`${e}.json`},!0),null}let d=N(`all`),f=N(``),p=N(null),m=j(()=>t.panel.locales.filter(e=>e!==t.panel.sourceLocale)),h=j(()=>q(p)??q(m).slice(0,1)),g=j(()=>fa(t.panel)),_=j(()=>ha(t.panel.rows,{text:q(f),state:q(d),locales:q(h)})),v=j(()=>ma(t.panel,q(h),q(_))),y=j(()=>{let e={all:0,look:0,missing:0,draft:0,broken:0};for(let n of[`all`,`look`,`missing`,`draft`,`broken`])e[n]=ha(t.panel.rows,{text:q(f),state:n,locales:q(h)}).length;return e}),b=N(60);un(()=>{q(f),q(d),q(h),P(b,60)});function x(e){let t=e.currentTarget;t.scrollTop+t.clientHeight>t.scrollHeight-600&&q(b)<q(_).length&&P(b,q(b)+60)}function S(e){P(p,q(h).includes(e)?q(h).filter(t=>t!==e):[...q(h),e],!0)}var ee=ka(),te=L(ee),C=z(L(te),2);Yr(C);var ne=z(C,2),re=R(ne,!0);O(te);var ie=z(te,2),ae=e=>{var n=Ca();jr(n,21,()=>t.panel.problems,e=>e.scope+e.message,(e,t)=>{var n=Sa(),r=L(n),i=R(r,!0),a=z(r);O(n),B(()=>{Z(i,q(t).scope),Z(a,` ${q(t).message??``}`)}),X(e,n)}),O(n),X(e,n)};Q(ie,e=>{t.panel.problems.length&&e(ae)});var oe=z(ie,2),se=L(oe);{let e=e=>{xa(e,{get api(){return t.api},get scanning(){return t.panel.scanning},get targets(){return q(m).length},get shown(){return q(h)},onDone:c})},n=j(()=>q(o)?{bad:q(o).entries.filter(e=>e.level!==`ok`).length}:null);wi(se,{get health(){return q(g)},get shown(){return q(h)},get state(){return q(d)},get counts(){return q(y)},get pending(){return q(i)},get checks(){return q(n)},onToggle:S,onState:e=>P(d,e,!0),onRead:e=>l(e,void 0,!1),onUndo:()=>q(i)&&l(q(i).locale,q(i).keys,!0),onHealth:s,actions:e,$$slots:{actions:!0}})}var ce=z(se,2),le=e=>{{let t=j(()=>q(o)?.entries??[]),n=j(()=>q(o)?.ok??!0);di(e,{get entries(){return q(t)},get ok(){return q(n)},onClose:()=>P(a,`messages`)})}},ue=e=>{var t=Ea(),r=L(t),i=e=>{var t=wa(),n=R(t);B(()=>Z(n,`${gi[q(v)]??``}${q(v)===`oneLocale`?` ${gi.oneLocaleFix}`:``}`)),X(e,t)},a=e=>{var t=Ta(),r=Zt(t);jr(r,17,()=>q(_).slice(0,q(b)),e=>e.key,(e,t)=>{la(e,{get row(){return q(t)},get shown(){return q(h)},get editing(){return q(n)},onEdit:e=>P(n,e,!0),onSave:u})});var i=z(r,2),a=e=>{var t=wa(),n=R(t);B(()=>Z(n,`${q(_).length-q(b)} more below`)),X(e,t)};Q(i,e=>{q(b)<q(_).length&&e(a)}),X(e,t)};Q(r,e=>{q(v)?e(i):e(a,-1)}),O(t),ar(`scroll`,t,x),X(e,t)};Q(ce,e=>{q(a)===`health`?e(le):e(ue,-1)}),O(oe);var de=z(oe,2),fe=e=>{var t=Oa(),n=z(L(t),2),i=e=>{var t=Da(),n=R(z(Zt(t)),!0);B(()=>Z(n,q(r).file)),X(e,t)},a=e=>{var t=gr();B(()=>Z(t,q(r).text)),X(e,t)};Q(n,e=>{q(r).file?e(i):e(a,-1)});var o=z(n,2);O(t),J(`click`,o,()=>P(r,null)),X(e,t)};Q(de,e=>{q(r)&&e(fe)}),O(ee),B(()=>{Zr(ne,`title`,t.panel.root),Z(re,t.panel.root)}),ti(C,()=>q(f),e=>P(f,e)),X(e,ee),Ve()}or([`click`]);async function ja(e,t,n){let r=t.includes(`?`)?`&`:`?`,i;try{i=await fetch(`${t}${r}t=${encodeURIComponent(e)}`,{...n,headers:n?.body===void 0?void 0:{"content-type":`application/json`},body:n?.body===void 0?void 0:JSON.stringify(n.body)})}catch{return{error:`[verbaly] the studio server is not answering, is it still running?`}}let a=await i.json().catch(()=>({}));return i.ok?{value:a}:{error:a.error??`[verbaly] the server answered ${i.status}`}}function Ma(e){return{state:()=>ja(e,`/api/state`),health:()=>ja(e,`/api/health`),save:(t,n,r)=>ja(e,`/api/message/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,{method:`PUT`,body:{text:r}}),setRead:(t,n,r)=>ja(e,`/api/approve`,{method:`POST`,body:{locale:t,keys:n,undo:r}}),extract:()=>ja(e,`/api/extract`,{method:`POST`}),plan:t=>{let n=t.map(e=>`locale=${encodeURIComponent(e)}`).join(`&`);return ja(e,`/api/translate${n?`?${n}`:``}`)},translate:t=>ja(e,`/api/translate`,{method:`POST`,body:{locales:t}}),job:t=>ja(e,t?`/api/job/${encodeURIComponent(t)}`:`/api/job`)}}function Na(e){return Wt(da(e))}var Pa=new URLSearchParams(location.search).get(`t`)??``;async function Fa(){let e=document.getElementById(`app`),t=Ma(Pa),n=await t.state();if(n.error||!n.value){e.textContent=n.error??`[verbaly] the server sent no state`;return}Sr(Aa,{target:e,props:{panel:Na(n.value),api:t}})}Fa();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.health.svelte-hz6ou4{background:var(--paper);flex:1;min-width:0;overflow-y:auto}header.svelte-hz6ou4{border-bottom:1px solid var(--rule);padding:28px 24px 20px}h2.svelte-hz6ou4{letter-spacing:-.014em;color:var(--ink);margin:0;font-size:21px;font-weight:500}header.svelte-hz6ou4 p:where(.svelte-hz6ou4){max-width:64ch;color:var(--muted);margin:8px 0 0;font-size:13px}.close.svelte-hz6ou4{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--paper);color:var(--body);font:inherit;cursor:pointer;margin-top:16px;padding:5px 12px;font-size:12.5px}.close.svelte-hz6ou4:hover{background:var(--ground)}ul.svelte-hz6ou4{margin:0;padding:0;list-style:none}li.svelte-hz6ou4{border-bottom:1px solid var(--rule);align-items:flex-start;gap:12px;padding:14px 24px;display:flex}.mark.svelte-hz6ou4{background:var(--done-tint);width:20px;height:20px;color:var(--done);border-radius:50%;flex:none;justify-content:center;align-items:center;margin-top:1px;display:inline-flex}[data-level=warn].svelte-hz6ou4 .mark:where(.svelte-hz6ou4){background:var(--missing-tint);color:var(--missing)}[data-level=error].svelte-hz6ou4 .mark:where(.svelte-hz6ou4){background:var(--broken-tint);color:var(--broken)}.body.svelte-hz6ou4{flex-direction:column;gap:2px;min-width:0;display:flex}b.svelte-hz6ou4{color:var(--ink);font-size:13.5px;font-weight:500}.msg.svelte-hz6ou4{color:var(--body);font-size:13px}.fix.svelte-hz6ou4{font-family:var(--mono);color:var(--draft);margin-top:4px;font-size:12px}.sr.svelte-hz6ou4{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.rail.svelte-1rwkwvu{width:var(--rail);border-right:1px solid var(--rule);background:var(--ground);flex:none;padding:18px 14px;overflow-y:auto}.nav.svelte-1rwkwvu{border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;margin-bottom:18px;padding:7px 8px;font-size:13px;display:flex}.nav.svelte-1rwkwvu:hover{background:var(--hollow)}.bad.svelte-1rwkwvu{background:var(--broken-tint);color:var(--broken);font-family:var(--mono);border-radius:999px;margin-left:auto;padding:0 7px;font-size:11px}.bad.clean.svelte-1rwkwvu{background:var(--done-tint);color:var(--done)}.cap.svelte-1rwkwvu{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding:0 6px;font-size:11px;font-weight:600}ul.svelte-1rwkwvu{margin:0 0 22px;padding:0;list-style:none}.lang.svelte-1rwkwvu{border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:10px;padding:7px 6px;display:flex}.lang.svelte-1rwkwvu:hover{background:var(--hollow)}.lang.source.svelte-1rwkwvu{cursor:default}.lang.svelte-1rwkwvu input:where(.svelte-1rwkwvu){accent-color:var(--done);margin:4px 0 0}.meta.svelte-1rwkwvu{flex-direction:column;min-width:0;display:flex}.name.svelte-1rwkwvu{font-family:var(--mono);color:var(--ink);font-size:13px;font-weight:600}.state.svelte-1rwkwvu{color:var(--muted);font-size:11.5px}.state[data-state=broken].svelte-1rwkwvu{color:var(--broken)}.state[data-state=missing].svelte-1rwkwvu{color:var(--missing)}.state[data-state=draft].svelte-1rwkwvu{color:var(--draft)}.read.svelte-1rwkwvu{border:1px solid var(--draft);background:var(--draft-tint);color:var(--draft);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:6px;margin:2px 0 6px 30px;padding:3px 9px;font-size:11.5px;display:flex}.read.svelte-1rwkwvu .n:where(.svelte-1rwkwvu){font-family:var(--mono);opacity:.8}.undo.svelte-1rwkwvu{border-radius:var(--radius);background:var(--hollow);color:var(--body);align-items:center;gap:8px;margin:-14px 0 22px;padding:8px 10px;font-size:11.5px;display:flex}.undo.svelte-1rwkwvu button:where(.svelte-1rwkwvu){border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;margin-left:auto;padding:3px 10px;font-size:11.5px}.filters.svelte-1rwkwvu button:where(.svelte-1rwkwvu){border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.filters.svelte-1rwkwvu button:where(.svelte-1rwkwvu):hover{background:var(--hollow)}.filters.svelte-1rwkwvu button.on:where(.svelte-1rwkwvu){background:var(--hollow);color:var(--ink);font-weight:600}.count.svelte-1rwkwvu{font-family:var(--mono);color:var(--muted);font-size:12px}.sr.svelte-150apog{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.row.svelte-1vuyl2e{border-bottom:1px solid var(--rule);align-items:flex-start;gap:16px;min-height:64px;padding:12px 20px;display:flex}.row.svelte-1vuyl2e:hover{background:var(--ground)}.row.open.svelte-1vuyl2e{background:var(--paper);box-shadow:inset 3px 0 0 var(--done);outline:1px solid var(--rule);outline-offset:-1px}.tile.svelte-1vuyl2e{border-radius:var(--radius);flex:none;justify-content:center;align-items:center;width:26px;height:26px;margin-top:2px;display:inline-flex}.tile[data-state=done].svelte-1vuyl2e{color:var(--rule-strong)}.tile[data-state=draft].svelte-1vuyl2e{background:var(--draft-tint);color:var(--draft)}.tile[data-state=missing].svelte-1vuyl2e{background:var(--missing-tint);color:var(--missing)}.tile[data-state=broken].svelte-1vuyl2e{background:var(--broken);color:var(--paper)}.row-t.svelte-1vuyl2e{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.src.svelte-1vuyl2e{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;line-height:1.3;overflow:hidden}.tl.svelte-1vuyl2e{align-items:baseline;gap:8px;min-width:0;display:flex}.tl.edit.svelte-1vuyl2e{align-items:flex-start}.disc.svelte-1vuyl2e{background:var(--hollow);width:20px;height:20px;color:var(--body);font-family:var(--mono);letter-spacing:-.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;display:inline-flex;transform:translateY(3px)}.disc[data-state=done].svelte-1vuyl2e{background:var(--done-tint);color:var(--done)}.disc[data-state=draft].svelte-1vuyl2e{background:var(--draft-tint);color:var(--draft)}.disc[data-state=missing].svelte-1vuyl2e{background:var(--missing-tint);color:var(--missing)}.disc[data-state=broken].svelte-1vuyl2e{background:var(--broken-tint);color:var(--broken)}.tv.svelte-1vuyl2e{text-align:left;min-width:0;font-family:var(--serif);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:0;flex:1;padding:0;font-size:17px;line-height:1.35;overflow:hidden}.sig.svelte-1vuyl2e{color:var(--draft);background:var(--draft-tint);white-space:nowrap;border-radius:4px;flex:none;padding:1px 6px;font-size:11px}.tv.none.svelte-1vuyl2e{font-family:var(--sans);color:var(--missing);font-size:13px;font-style:italic}.tf.svelte-1vuyl2e{min-width:0;font-family:var(--serif);color:var(--ink);background:var(--paper);border:1px solid var(--done);border-radius:var(--radius);resize:vertical;flex:1;padding:6px 10px;font-size:17px;line-height:1.45}.tf.svelte-1vuyl2e:focus-visible{outline:2px solid color-mix(in oklab, var(--done) 26%, transparent);outline-offset:1px}.editbar.svelte-1vuyl2e{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.pm.svelte-1vuyl2e{font-family:var(--mono);color:var(--body);background:var(--hollow);border-radius:4px;padding:1px 5px;font-size:12.5px}.pm.gone.svelte-1vuyl2e{background:var(--broken-tint);border:1px dashed var(--broken);color:var(--broken)}.vmsg.svelte-1vuyl2e{color:var(--broken);background:var(--broken-tint);border-radius:var(--radius);align-items:center;gap:6px;padding:4px 9px;font-size:12.5px;display:inline-flex}.btn.svelte-1vuyl2e{border:1px solid var(--done);border-radius:var(--radius);background:var(--done);height:30px;color:var(--paper);font:inherit;cursor:pointer;padding:0 12px;font-size:12.5px;font-weight:500}.btn.quiet.svelte-1vuyl2e{background:var(--paper);color:var(--body);border-color:var(--rule-strong);font-weight:400}.btn.svelte-1vuyl2e:disabled{opacity:.6;cursor:default}.keys.svelte-1vuyl2e{font-family:var(--mono);color:var(--muted);font-size:11px}.acts.svelte-5qpy41{margin-bottom:22px}.cap.svelte-5qpy41{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding:0 6px;font-size:11px;font-weight:600}.act.svelte-5qpy41{border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;flex-direction:column;gap:1px;margin-bottom:4px;padding:7px 8px;display:flex}.act.svelte-5qpy41:hover:not(:disabled){background:var(--hollow)}.act.svelte-5qpy41:disabled{cursor:default}.act.svelte-5qpy41:disabled .name:where(.svelte-5qpy41){opacity:.55}.name.svelte-5qpy41{color:var(--ink);font-size:13px}.why.svelte-5qpy41{color:var(--muted);margin:0;font-size:11.5px;line-height:1.35}.bill.svelte-5qpy41{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);padding:10px}.lede.svelte-5qpy41{color:var(--ink);margin:0 0 4px;font-size:13px}.pair.svelte-5qpy41{gap:6px;margin-top:10px;display:flex}.go.svelte-5qpy41{border-radius:var(--radius);background:var(--done);color:var(--paper);font:inherit;cursor:pointer;border:0;flex:1;padding:5px 10px;font-size:12px}.plain.svelte-5qpy41{border:1px solid var(--rule-strong);border-radius:var(--radius);color:var(--body);font:inherit;cursor:pointer;background:0 0;padding:5px 10px;font-size:12px}.track.svelte-5qpy41{background:var(--hollow);border-radius:999px;height:4px;margin:8px 0 6px;overflow:hidden}.fill.svelte-5qpy41{background:var(--done);height:100%;transition:width .3s linear;display:block}.said.svelte-5qpy41{color:var(--muted);margin:6px 0 0;padding:0 8px;font-size:11.5px}.said.bad.svelte-5qpy41{color:var(--broken)}.shell.svelte-c7dw08{flex-direction:column;height:100%;display:flex;position:relative}.bar.svelte-c7dw08{background:var(--bar);height:48px;color:var(--on-bar);flex:none;align-items:center;gap:16px;padding:0 16px;display:flex;box-shadow:inset 0 -1px #ffffff1f}.brand.svelte-c7dw08{letter-spacing:.02em;opacity:.75;white-space:nowrap;font-size:13px}.brand.svelte-c7dw08 b:where(.svelte-c7dw08){opacity:1;font-weight:600}.search.svelte-c7dw08{border-radius:var(--radius);max-width:520px;color:var(--on-bar);font:inherit;background:#ffffff0f;border:1px solid #ffffff29;flex:1;padding:6px 12px;font-size:13px}.search.svelte-c7dw08::placeholder{color:#ffffff73}.search.svelte-c7dw08:focus-visible{outline:2px solid var(--done);outline-offset:1px}.root.svelte-c7dw08{font-family:var(--mono);opacity:.55;text-overflow:ellipsis;white-space:nowrap;max-width:30ch;margin-left:auto;font-size:11.5px;overflow:hidden}.problems.svelte-c7dw08{background:var(--broken-tint);color:var(--broken);border-bottom:1px solid var(--rule);margin:0;padding:8px 16px;font-size:12.5px;list-style:none}.body.svelte-c7dw08{flex:1;min-height:0;display:flex}.table.svelte-c7dw08{background:var(--paper);flex:1;min-width:0;overflow-y:auto}.note.svelte-c7dw08{color:var(--muted);margin:0;padding:24px 20px;font-size:13px}.snack.svelte-c7dw08{background:var(--bar);height:44px;color:var(--on-bar);border-radius:var(--radius);white-space:nowrap;align-items:center;gap:12px;margin:0;padding:0 12px 0 20px;font-size:13px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 2px 6px #0610052e,0 34px 64px -28px #06100566}.snack.svelte-c7dw08 svg:where(.svelte-c7dw08){color:#8ed67f}.snack.svelte-c7dw08 button:where(.svelte-c7dw08){height:30px;color:inherit;font:inherit;cursor:pointer;background:#ffffff24;border:0;border-radius:4px;padding:0 12px;font-size:12.5px}.verbaly-studio{--paper:#f8fbf7;--ground:#eff4ee;--hollow:#e5ede4;--rule:#d7dfd5;--rule-strong:#828d80;--muted:#636c61;--body:#374036;--ink:#061005;--bar:#131e12;--on-bar:#f8fbf7;--broken:#b43931;--broken-tint:#eee0db;--missing:#8e5a04;--missing-tint:#e9e4d5;--draft:#2267ad;--draft-tint:#dae6ed;--done:#2e7428;--done-tint:#dce8da;--sans:"Schibsted Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--serif:"Newsreader", ui-serif, Georgia, "Times New Roman", serif;--mono:"JetBrains Mono", ui-monospace, "Cascadia Code", "SF Mono", monospace;--rail:232px;--radius:6px}@media (prefers-color-scheme:dark){.verbaly-studio:not([data-theme=light]){--paper:#10170f;--ground:#161e15;--hollow:#1d271c;--rule:#2a352a;--rule-strong:#6f7a6d;--muted:#9aa598;--body:#d3dbd1;--ink:#f2f7f1;--broken:#f08a82;--broken-tint:#3a211f;--missing:#dcae4e;--missing-tint:#352c16;--draft:#7db6e8;--draft-tint:#172a3a;--done:#79c46f;--done-tint:#182c16}}.verbaly-studio[data-theme=dark]{--paper:#10170f;--ground:#161e15;--hollow:#1d271c;--rule:#2a352a;--rule-strong:#6f7a6d;--muted:#9aa598;--body:#d3dbd1;--ink:#f2f7f1;--broken:#f08a82;--broken-tint:#3a211f;--missing:#dcae4e;--missing-tint:#352c16;--draft:#7db6e8;--draft-tint:#172a3a;--done:#79c46f;--done-tint:#182c16}.verbaly-studio,.verbaly-studio *,.verbaly-studio :before,.verbaly-studio :after{box-sizing:border-box}.verbaly-studio{color:var(--body);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}.verbaly-studio code,.verbaly-studio kbd{font-family:var(--mono);font-size:.92em}@media (prefers-reduced-motion:reduce){.verbaly-studio,.verbaly-studio *,.verbaly-studio :before,.verbaly-studio :after{transition-duration:.01ms!important;animation-duration:.01ms!important}}html,body{height:100%}body{background:var(--ground);margin:0}#app{height:100%}
|
|
1
|
+
.health.svelte-hz6ou4{background:var(--paper);flex:1;min-width:0;overflow-y:auto}header.svelte-hz6ou4{border-bottom:1px solid var(--rule);padding:28px 24px 20px}h2.svelte-hz6ou4{letter-spacing:-.014em;color:var(--ink);margin:0;font-size:21px;font-weight:500}header.svelte-hz6ou4 p:where(.svelte-hz6ou4){max-width:64ch;color:var(--muted);margin:8px 0 0;font-size:13px}.close.svelte-hz6ou4{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--paper);color:var(--body);font:inherit;cursor:pointer;margin-top:16px;padding:5px 12px;font-size:12.5px}.close.svelte-hz6ou4:hover{background:var(--ground)}ul.svelte-hz6ou4{margin:0;padding:0;list-style:none}li.svelte-hz6ou4{border-bottom:1px solid var(--rule);align-items:flex-start;gap:12px;padding:14px 24px;display:flex}.mark.svelte-hz6ou4{background:var(--done-tint);width:20px;height:20px;color:var(--done);border-radius:50%;flex:none;justify-content:center;align-items:center;margin-top:1px;display:inline-flex}[data-level=warn].svelte-hz6ou4 .mark:where(.svelte-hz6ou4){background:var(--missing-tint);color:var(--missing)}[data-level=error].svelte-hz6ou4 .mark:where(.svelte-hz6ou4){background:var(--broken-tint);color:var(--broken)}.body.svelte-hz6ou4{flex-direction:column;gap:2px;min-width:0;display:flex}b.svelte-hz6ou4{color:var(--ink);font-size:13.5px;font-weight:500}.msg.svelte-hz6ou4{color:var(--body);font-size:13px}.fix.svelte-hz6ou4{font-family:var(--mono);color:var(--draft);margin-top:4px;font-size:12px}.sr.svelte-hz6ou4{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.rail.svelte-1rwkwvu{width:var(--rail);border-right:1px solid var(--rule);background:var(--ground);flex:none;padding:18px 14px;overflow-y:auto}.nav.svelte-1rwkwvu{border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;margin-bottom:18px;padding:7px 8px;font-size:13px;display:flex}.nav.svelte-1rwkwvu:hover{background:var(--hollow)}.bad.svelte-1rwkwvu{background:var(--broken-tint);color:var(--broken);font-family:var(--mono);border-radius:999px;margin-left:auto;padding:0 7px;font-size:11px}.bad.clean.svelte-1rwkwvu{background:var(--done-tint);color:var(--done)}.cap.svelte-1rwkwvu{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding:0 6px;font-size:11px;font-weight:600}ul.svelte-1rwkwvu{margin:0 0 22px;padding:0;list-style:none}.lang.svelte-1rwkwvu{border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:10px;padding:7px 6px;display:flex}.lang.svelte-1rwkwvu:hover{background:var(--hollow)}.lang.source.svelte-1rwkwvu{cursor:default}.lang.svelte-1rwkwvu input:where(.svelte-1rwkwvu){accent-color:var(--done);margin:4px 0 0}.meta.svelte-1rwkwvu{flex-direction:column;min-width:0;display:flex}.name.svelte-1rwkwvu{font-family:var(--mono);color:var(--ink);font-size:13px;font-weight:600}.state.svelte-1rwkwvu{color:var(--muted);font-size:11.5px}.state[data-state=broken].svelte-1rwkwvu{color:var(--broken)}.state[data-state=missing].svelte-1rwkwvu{color:var(--missing)}.state[data-state=draft].svelte-1rwkwvu{color:var(--draft)}.read.svelte-1rwkwvu{border:1px solid var(--draft);background:var(--draft-tint);color:var(--draft);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:6px;margin:2px 0 6px 30px;padding:3px 9px;font-size:11.5px;display:flex}.read.svelte-1rwkwvu .n:where(.svelte-1rwkwvu){font-family:var(--mono);opacity:.8}.undo.svelte-1rwkwvu{border-radius:var(--radius);background:var(--hollow);color:var(--body);align-items:center;gap:8px;margin:-14px 0 22px;padding:8px 10px;font-size:11.5px;display:flex}.undo.svelte-1rwkwvu button:where(.svelte-1rwkwvu){border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;margin-left:auto;padding:3px 10px;font-size:11.5px}.filters.svelte-1rwkwvu button:where(.svelte-1rwkwvu){border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.filters.svelte-1rwkwvu button:where(.svelte-1rwkwvu):hover{background:var(--hollow)}.filters.svelte-1rwkwvu button.on:where(.svelte-1rwkwvu){background:var(--hollow);color:var(--ink);font-weight:600}.count.svelte-1rwkwvu{font-family:var(--mono);color:var(--muted);font-size:12px}.sr.svelte-150apog{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.row.svelte-1vuyl2e{border-bottom:1px solid var(--rule);align-items:flex-start;gap:16px;min-height:64px;padding:12px 20px;display:flex}.row.svelte-1vuyl2e:hover{background:var(--ground)}.row.open.svelte-1vuyl2e{background:var(--paper);box-shadow:inset 3px 0 0 var(--done);outline:1px solid var(--rule);outline-offset:-1px}.tile.svelte-1vuyl2e{border-radius:var(--radius);flex:none;justify-content:center;align-items:center;width:26px;height:26px;margin-top:2px;display:inline-flex}.tile[data-state=done].svelte-1vuyl2e{color:var(--rule-strong)}.tile[data-state=draft].svelte-1vuyl2e{background:var(--draft-tint);color:var(--draft)}.tile[data-state=missing].svelte-1vuyl2e{background:var(--missing-tint);color:var(--missing)}.tile[data-state=broken].svelte-1vuyl2e{background:var(--broken);color:var(--paper)}.row-t.svelte-1vuyl2e{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.src.svelte-1vuyl2e{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;line-height:1.3;overflow:hidden}.tl.svelte-1vuyl2e{align-items:baseline;gap:8px;min-width:0;display:flex}.tl.edit.svelte-1vuyl2e{align-items:flex-start}.disc.svelte-1vuyl2e{background:var(--hollow);width:20px;height:20px;color:var(--body);font-family:var(--mono);letter-spacing:-.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;display:inline-flex;transform:translateY(3px)}.disc[data-state=done].svelte-1vuyl2e{background:var(--done-tint);color:var(--done)}.disc[data-state=draft].svelte-1vuyl2e{background:var(--draft-tint);color:var(--draft)}.disc[data-state=missing].svelte-1vuyl2e{background:var(--missing-tint);color:var(--missing)}.disc[data-state=broken].svelte-1vuyl2e{background:var(--broken-tint);color:var(--broken)}.tv.svelte-1vuyl2e{text-align:left;min-width:0;font-family:var(--serif);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:0;flex:1;padding:0;font-size:17px;line-height:1.35;overflow:hidden}.sig.svelte-1vuyl2e{color:var(--draft);background:var(--draft-tint);white-space:nowrap;border-radius:4px;flex:none;padding:1px 6px;font-size:11px}.tv.none.svelte-1vuyl2e{font-family:var(--sans);color:var(--missing);font-size:13px;font-style:italic}.tf.svelte-1vuyl2e{min-width:0;font-family:var(--serif);color:var(--ink);background:var(--paper);border:1px solid var(--done);border-radius:var(--radius);resize:vertical;flex:1;padding:6px 10px;font-size:17px;line-height:1.45}.tf.svelte-1vuyl2e:focus-visible{outline:2px solid color-mix(in oklab, var(--done) 26%, transparent);outline-offset:1px}.editbar.svelte-1vuyl2e{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.pm.svelte-1vuyl2e{font-family:var(--mono);color:var(--body);background:var(--hollow);border-radius:4px;padding:1px 5px;font-size:12.5px}.pm.gone.svelte-1vuyl2e{background:var(--broken-tint);border:1px dashed var(--broken);color:var(--broken)}.vmsg.svelte-1vuyl2e{color:var(--broken);background:var(--broken-tint);border-radius:var(--radius);align-items:center;gap:6px;padding:4px 9px;font-size:12.5px;display:inline-flex}.btn.svelte-1vuyl2e{border:1px solid var(--done);border-radius:var(--radius);background:var(--done);height:30px;color:var(--paper);font:inherit;cursor:pointer;padding:0 12px;font-size:12.5px;font-weight:500}.btn.quiet.svelte-1vuyl2e{background:var(--paper);color:var(--body);border-color:var(--rule-strong);font-weight:400}.btn.svelte-1vuyl2e:disabled{opacity:.6;cursor:default}.keys.svelte-1vuyl2e{font-family:var(--mono);color:var(--muted);font-size:11px}.acts.svelte-5qpy41{margin-bottom:22px}.cap.svelte-5qpy41{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding:0 6px;font-size:11px;font-weight:600}.act.svelte-5qpy41{border-radius:var(--radius);width:100%;font:inherit;color:var(--body);cursor:pointer;text-align:left;background:0 0;border:0;flex-direction:column;gap:1px;margin-bottom:4px;padding:7px 8px;display:flex}.act.svelte-5qpy41:hover:not(:disabled){background:var(--hollow)}.act.svelte-5qpy41:disabled{cursor:default}.act.svelte-5qpy41:disabled .name:where(.svelte-5qpy41){opacity:.55}.name.svelte-5qpy41{color:var(--ink);font-size:13px}.why.svelte-5qpy41{color:var(--muted);margin:0;font-size:11.5px;line-height:1.35}.bill.svelte-5qpy41{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);padding:10px}.lede.svelte-5qpy41{color:var(--ink);margin:0 0 4px;font-size:13px}.pair.svelte-5qpy41{gap:6px;margin-top:10px;display:flex}.go.svelte-5qpy41{border-radius:var(--radius);background:var(--done);color:var(--paper);font:inherit;cursor:pointer;border:0;flex:1;padding:5px 10px;font-size:12px}.plain.svelte-5qpy41{border:1px solid var(--rule-strong);border-radius:var(--radius);color:var(--body);font:inherit;cursor:pointer;background:0 0;padding:5px 10px;font-size:12px}.track.svelte-5qpy41{background:var(--hollow);border-radius:999px;height:4px;margin:8px 0 6px;overflow:hidden}.fill.svelte-5qpy41{background:var(--done);height:100%;transition:width .3s linear;display:block}.said.svelte-5qpy41{color:var(--muted);margin:6px 0 0;padding:0 8px;font-size:11.5px}.said.bad.svelte-5qpy41{color:var(--broken)}.shell.svelte-c7dw08{flex-direction:column;height:100%;display:flex;position:relative}.bar.svelte-c7dw08{background:var(--bar);height:48px;color:var(--on-bar);flex:none;align-items:center;gap:16px;padding:0 16px;display:flex;box-shadow:inset 0 -1px #ffffff1f}.brand.svelte-c7dw08{letter-spacing:.02em;opacity:.75;white-space:nowrap;font-size:13px}.brand.svelte-c7dw08 b:where(.svelte-c7dw08){opacity:1;font-weight:600}.search.svelte-c7dw08{border-radius:var(--radius);max-width:520px;color:var(--on-bar);font:inherit;background:#ffffff0f;border:1px solid #ffffff29;flex:1;padding:6px 12px;font-size:13px}.search.svelte-c7dw08::placeholder{color:#ffffff73}.search.svelte-c7dw08:focus-visible{outline:2px solid var(--done);outline-offset:1px}.root.svelte-c7dw08{font-family:var(--mono);opacity:.55;text-overflow:ellipsis;white-space:nowrap;max-width:30ch;margin-left:auto;font-size:11.5px;overflow:hidden}.problems.svelte-c7dw08{background:var(--broken-tint);color:var(--broken);border-bottom:1px solid var(--rule);margin:0;padding:8px 16px;font-size:12.5px;list-style:none}.body.svelte-c7dw08{flex:1;min-height:0;display:flex}.table.svelte-c7dw08{background:var(--paper);flex:1;min-width:0;overflow-y:auto}.note.svelte-c7dw08{color:var(--muted);margin:0;padding:24px 20px;font-size:13px}.snack.svelte-c7dw08{background:var(--bar);height:44px;color:var(--on-bar);border-radius:var(--radius);white-space:nowrap;align-items:center;gap:12px;margin:0;padding:0 12px 0 20px;font-size:13px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 2px 6px #0610052e,0 34px 64px -28px #06100566}.snack.svelte-c7dw08 svg:where(.svelte-c7dw08){color:#8ed67f}.snack.svelte-c7dw08 button:where(.svelte-c7dw08){height:30px;color:inherit;font:inherit;cursor:pointer;background:#ffffff24;border:0;border-radius:4px;padding:0 12px;font-size:12.5px}.verbaly-studio{--paper:#f8fbf7;--ground:#eff4ee;--hollow:#e5ede4;--rule:#d7dfd5;--rule-strong:#828d80;--muted:#636c61;--body:#374036;--ink:#061005;--bar:#131e12;--on-bar:#f8fbf7;--broken:#b43931;--broken-tint:#eee0db;--missing:#8e5a04;--missing-tint:#e9e4d5;--draft:#2267ad;--draft-tint:#dae6ed;--done:#2e7428;--done-tint:#dce8da;--sans:"Schibsted Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--serif:"Newsreader", ui-serif, Georgia, "Times New Roman", serif;--mono:"JetBrains Mono", ui-monospace, "Cascadia Code", "SF Mono", monospace;--rail:232px;--radius:6px}@media (prefers-color-scheme:dark){.verbaly-studio:not([data-theme=light]){--paper:#10170f;--ground:#161e15;--hollow:#1d271c;--rule:#2a352a;--rule-strong:#6f7a6d;--muted:#9aa598;--body:#d3dbd1;--ink:#f2f7f1;--broken:#f08a82;--broken-tint:#3a211f;--missing:#dcae4e;--missing-tint:#352c16;--draft:#7db6e8;--draft-tint:#172a3a;--done:#79c46f;--done-tint:#182c16}}.verbaly-studio[data-theme=dark]{--paper:#10170f;--ground:#161e15;--hollow:#1d271c;--rule:#2a352a;--rule-strong:#6f7a6d;--muted:#9aa598;--body:#d3dbd1;--ink:#f2f7f1;--broken:#f08a82;--broken-tint:#3a211f;--missing:#dcae4e;--missing-tint:#352c16;--draft:#7db6e8;--draft-tint:#172a3a;--done:#79c46f;--done-tint:#182c16}.verbaly-studio,.verbaly-studio *,.verbaly-studio :before,.verbaly-studio :after{box-sizing:border-box}.verbaly-studio{background:var(--ground);color:var(--body);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}.verbaly-studio code,.verbaly-studio kbd{font-family:var(--mono);font-size:.92em}@media (prefers-reduced-motion:reduce){.verbaly-studio,.verbaly-studio *,.verbaly-studio :before,.verbaly-studio :after{transition-duration:.01ms!important;animation-duration:.01ms!important}}html,body{height:100%}body{background:var(--ground);margin:0}#app{height:100%}
|
package/dist/ui/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Verbaly Studio</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-3Geaeu_2.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B2gDPqi5.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verbaly/studio",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
4
4
|
"description": "Local review server for Verbaly: read, edit and approve translations over the JSON files already in your repo. No account, no database.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
@@ -26,17 +26,7 @@
|
|
|
26
26
|
".": {
|
|
27
27
|
"types": "./dist/index.d.ts",
|
|
28
28
|
"import": "./dist/index.js"
|
|
29
|
-
}
|
|
30
|
-
"./ui": {
|
|
31
|
-
"types": "./dist/panel/index.ts",
|
|
32
|
-
"import": "./dist/panel/index.ts"
|
|
33
|
-
},
|
|
34
|
-
"./Panel.svelte": {
|
|
35
|
-
"types": "./dist/panel/Panel.svelte.d.ts",
|
|
36
|
-
"svelte": "./dist/panel/Panel.svelte",
|
|
37
|
-
"default": "./dist/panel/Panel.svelte"
|
|
38
|
-
},
|
|
39
|
-
"./tokens.css": "./dist/panel/tokens.css"
|
|
29
|
+
}
|
|
40
30
|
},
|
|
41
31
|
"bin": {
|
|
42
32
|
"verbaly-studio": "./dist/cli.js"
|
|
@@ -53,7 +43,7 @@
|
|
|
53
43
|
"access": "public"
|
|
54
44
|
},
|
|
55
45
|
"dependencies": {
|
|
56
|
-
"@verbaly/compiler": "^0.
|
|
46
|
+
"@verbaly/compiler": "^0.57.0"
|
|
57
47
|
},
|
|
58
48
|
"devDependencies": {
|
|
59
49
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
@@ -62,22 +52,10 @@
|
|
|
62
52
|
"svelte-check": "^4.7.6",
|
|
63
53
|
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
64
54
|
"vite": "^8.3.0",
|
|
65
|
-
"verbaly": "^0.
|
|
66
|
-
},
|
|
67
|
-
"peerDependencies": {
|
|
68
|
-
"svelte": "^5.0.0",
|
|
69
|
-
"verbaly": "^0.56.0"
|
|
70
|
-
},
|
|
71
|
-
"peerDependenciesMeta": {
|
|
72
|
-
"svelte": {
|
|
73
|
-
"optional": true
|
|
74
|
-
},
|
|
75
|
-
"verbaly": {
|
|
76
|
-
"optional": true
|
|
77
|
-
}
|
|
55
|
+
"verbaly": "^0.57.0"
|
|
78
56
|
},
|
|
79
57
|
"scripts": {
|
|
80
|
-
"build": "tsdown && vite build
|
|
58
|
+
"build": "tsdown && vite build",
|
|
81
59
|
"dev": "vite",
|
|
82
60
|
"test": "vitest run --passWithNoTests",
|
|
83
61
|
"typecheck": "tsc --noEmit && svelte-check --tsconfig ./tsconfig.json --fail-on-warnings"
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { onMount } from 'svelte';
|
|
3
|
-
import { ACTION, messages } from './words';
|
|
4
|
-
import type { Job, Plan, StudioApi } from './api';
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
api: StudioApi;
|
|
8
|
-
shown: string[];
|
|
9
|
-
onDone: (said: string) => Promise<void> | void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const { api, shown, onDone }: Props = $props();
|
|
13
|
-
|
|
14
|
-
type Phase =
|
|
15
|
-
| { at: 'idle' }
|
|
16
|
-
| { at: 'finding' }
|
|
17
|
-
| { at: 'planning' }
|
|
18
|
-
| { at: 'plan'; plan: Plan }
|
|
19
|
-
| { at: 'running'; job: Job }
|
|
20
|
-
| { at: 'said'; text: string; bad: boolean };
|
|
21
|
-
|
|
22
|
-
// the annotation goes on the rune: on the declaration, phase narrows to its first member
|
|
23
|
-
let phase = $state<Phase>({ at: 'idle' });
|
|
24
|
-
const busy = $derived(phase.at === 'finding' || phase.at === 'planning' || phase.at === 'running');
|
|
25
|
-
|
|
26
|
-
function said(text: string, bad = false) {
|
|
27
|
-
phase = { at: 'said', text, bad };
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async function find() {
|
|
31
|
-
phase = { at: 'finding' };
|
|
32
|
-
const answer = await api.extract();
|
|
33
|
-
if (answer.error || !answer.value) return said(answer.error ?? 'no answer', true);
|
|
34
|
-
const { found } = answer.value;
|
|
35
|
-
if (!found) return said(ACTION.nothingNew);
|
|
36
|
-
const wrote = `${messages(found)} your code uses and your catalogs did not have`;
|
|
37
|
-
await onDone(wrote);
|
|
38
|
-
said(wrote);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function plan() {
|
|
42
|
-
phase = { at: 'planning' };
|
|
43
|
-
const answer = await api.plan(shown);
|
|
44
|
-
if (answer.error || !answer.value) return said(answer.error ?? 'no answer', true);
|
|
45
|
-
if (!answer.value.total) return said(ACTION.nothingMissing);
|
|
46
|
-
phase = { at: 'plan', plan: answer.value };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// the bar is asked, never pushed: translate writes partial results, so a reload must not lose it
|
|
50
|
-
async function poll(id: string) {
|
|
51
|
-
const answer = await api.job(id);
|
|
52
|
-
if (answer.error || !answer.value) return said(answer.error ?? 'no answer', true);
|
|
53
|
-
const job = answer.value;
|
|
54
|
-
if (job.state === 'running') {
|
|
55
|
-
phase = { at: 'running', job };
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// every translation a machine wrote is a draft, and the panel has to say so out loud
|
|
59
|
-
const wrote = `${messages(job.done)} translated, unread until you read them`;
|
|
60
|
-
await onDone(wrote);
|
|
61
|
-
said(job.state === 'failed' ? (job.message ?? 'the run failed') : wrote, job.state === 'failed');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async function go() {
|
|
65
|
-
const answer = await api.translate(shown);
|
|
66
|
-
if (answer.error || !answer.value) return said(answer.error ?? 'no answer', true);
|
|
67
|
-
phase = { at: 'running', job: answer.value };
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// a run outlives the page that started it, so the bar comes back instead of the job hiding
|
|
71
|
-
onMount(() => {
|
|
72
|
-
void api.job().then((answer) => {
|
|
73
|
-
if (answer.value && phase.at === 'idle') phase = { at: 'running', job: answer.value };
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
$effect(() => {
|
|
78
|
-
if (phase.at !== 'running') return;
|
|
79
|
-
const id = phase.job.id;
|
|
80
|
-
const timer = setInterval(() => void poll(id), 1000);
|
|
81
|
-
return () => clearInterval(timer);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
const share = $derived(
|
|
85
|
-
phase.at === 'running' && phase.job.total ? phase.job.done / phase.job.total : 0,
|
|
86
|
-
);
|
|
87
|
-
</script>
|
|
88
|
-
|
|
89
|
-
<section class="acts" aria-label="Commands">
|
|
90
|
-
<h2 class="cap">Commands</h2>
|
|
91
|
-
|
|
92
|
-
{#if phase.at === 'plan'}
|
|
93
|
-
<div class="bill">
|
|
94
|
-
<p class="lede">{messages(phase.plan.total)} in {Object.keys(phase.plan.pending).join(', ')}</p>
|
|
95
|
-
<p class="why">{ACTION.translateWhy}</p>
|
|
96
|
-
<div class="pair">
|
|
97
|
-
<button class="go" onclick={go}>{ACTION.translate}</button>
|
|
98
|
-
<button class="plain" onclick={() => (phase = { at: 'idle' })}>{ACTION.cancel}</button>
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
{:else if phase.at === 'running'}
|
|
102
|
-
<div class="bill">
|
|
103
|
-
<p class="lede">{ACTION.running} {phase.job.locale ?? ''}</p>
|
|
104
|
-
<div class="track"><span class="fill" style="width: {Math.round(share * 100)}%"></span></div>
|
|
105
|
-
<p class="why">{phase.job.done} of {phase.job.total}</p>
|
|
106
|
-
</div>
|
|
107
|
-
{:else}
|
|
108
|
-
<button class="act" disabled={busy} onclick={find}>
|
|
109
|
-
<span class="name">{phase.at === 'finding' ? ACTION.working : ACTION.find}</span>
|
|
110
|
-
<span class="why">{ACTION.findWhy}</span>
|
|
111
|
-
</button>
|
|
112
|
-
<button class="act" disabled={busy || !shown.length} onclick={plan}>
|
|
113
|
-
<span class="name">{ACTION.translate}</span>
|
|
114
|
-
<span class="why">{shown.length ? ACTION.translateWhy : ACTION.pickFirst}</span>
|
|
115
|
-
</button>
|
|
116
|
-
{/if}
|
|
117
|
-
|
|
118
|
-
{#if phase.at === 'said'}
|
|
119
|
-
<p class="said" class:bad={phase.bad}>{phase.text}</p>
|
|
120
|
-
{/if}
|
|
121
|
-
</section>
|
|
122
|
-
|
|
123
|
-
<style>
|
|
124
|
-
.acts {
|
|
125
|
-
margin-bottom: 22px;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.cap {
|
|
129
|
-
margin: 0 0 8px;
|
|
130
|
-
padding: 0 6px;
|
|
131
|
-
font-size: 11px;
|
|
132
|
-
font-weight: 600;
|
|
133
|
-
letter-spacing: 0.08em;
|
|
134
|
-
text-transform: uppercase;
|
|
135
|
-
color: var(--muted);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.act {
|
|
139
|
-
display: flex;
|
|
140
|
-
flex-direction: column;
|
|
141
|
-
gap: 1px;
|
|
142
|
-
width: 100%;
|
|
143
|
-
margin-bottom: 4px;
|
|
144
|
-
padding: 7px 8px;
|
|
145
|
-
border: 0;
|
|
146
|
-
border-radius: var(--radius);
|
|
147
|
-
background: none;
|
|
148
|
-
font: inherit;
|
|
149
|
-
color: var(--body);
|
|
150
|
-
cursor: pointer;
|
|
151
|
-
text-align: left;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.act:hover:not(:disabled) {
|
|
155
|
-
background: var(--hollow);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.act:disabled {
|
|
159
|
-
cursor: default;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/* only the name dims: the line under it is where a disabled button says why it is disabled */
|
|
163
|
-
.act:disabled .name {
|
|
164
|
-
opacity: 0.55;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.name {
|
|
168
|
-
font-size: 13px;
|
|
169
|
-
color: var(--ink);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.why {
|
|
173
|
-
margin: 0;
|
|
174
|
-
font-size: 11.5px;
|
|
175
|
-
line-height: 1.35;
|
|
176
|
-
color: var(--muted);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.bill {
|
|
180
|
-
padding: 10px;
|
|
181
|
-
border: 1px solid var(--rule);
|
|
182
|
-
border-radius: var(--radius);
|
|
183
|
-
background: var(--paper);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
.lede {
|
|
187
|
-
margin: 0 0 4px;
|
|
188
|
-
font-size: 13px;
|
|
189
|
-
color: var(--ink);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
.pair {
|
|
193
|
-
display: flex;
|
|
194
|
-
gap: 6px;
|
|
195
|
-
margin-top: 10px;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.go {
|
|
199
|
-
flex: 1;
|
|
200
|
-
padding: 5px 10px;
|
|
201
|
-
border: 0;
|
|
202
|
-
border-radius: var(--radius);
|
|
203
|
-
background: var(--done);
|
|
204
|
-
/* paper turns with the theme, so the label stays legible on both greens */
|
|
205
|
-
color: var(--paper);
|
|
206
|
-
font: inherit;
|
|
207
|
-
font-size: 12px;
|
|
208
|
-
cursor: pointer;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.plain {
|
|
212
|
-
padding: 5px 10px;
|
|
213
|
-
border: 1px solid var(--rule-strong);
|
|
214
|
-
border-radius: var(--radius);
|
|
215
|
-
background: none;
|
|
216
|
-
color: var(--body);
|
|
217
|
-
font: inherit;
|
|
218
|
-
font-size: 12px;
|
|
219
|
-
cursor: pointer;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/* the one thing on this screen that moves, because it reports a run that is really happening */
|
|
223
|
-
.track {
|
|
224
|
-
height: 4px;
|
|
225
|
-
margin: 8px 0 6px;
|
|
226
|
-
border-radius: 999px;
|
|
227
|
-
background: var(--hollow);
|
|
228
|
-
overflow: hidden;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
.fill {
|
|
232
|
-
display: block;
|
|
233
|
-
height: 100%;
|
|
234
|
-
background: var(--done);
|
|
235
|
-
transition: width 0.3s linear;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.said {
|
|
239
|
-
margin: 6px 0 0;
|
|
240
|
-
padding: 0 8px;
|
|
241
|
-
font-size: 11.5px;
|
|
242
|
-
color: var(--muted);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.said.bad {
|
|
246
|
-
color: var(--broken);
|
|
247
|
-
}
|
|
248
|
-
</style>
|