From bc30c837f80d7de5ebbdbe438a8316150b175e09 Mon Sep 17 00:00:00 2001 From: canicjusz Date: Fri, 24 May 2024 01:10:32 +0200 Subject: [PATCH] add language selector to portfolio pages and make the selector more appealing --- docs/404.html | 14 ++++---- ...{404.md.453a8206.js => 404.md.f0046ab7.js} | 2 +- ...3a8206.lean.js => 404.md.f0046ab7.lean.js} | 2 +- ...lement.e72f51e6.js => Element.b0b3cbd3.js} | 2 +- docs/assets/Grid.0285a3ac.js | 1 + docs/assets/Grid.5ca7e5a0.js | 1 - docs/assets/app.09bea5ba.js | 28 ++++++++++++++++ docs/assets/app.b9d21ddb.js | 28 ---------------- ...ex.md.8e680bc5.js => index.md.e53be222.js} | 2 +- ...0bc5.lean.js => index.md.e53be222.lean.js} | 2 +- .../pages_English_portfolio.md.4f37d1b7.js | 1 + ...ages_English_portfolio.md.4f37d1b7.lean.js | 1 + .../pages_English_portfolio.md.da74d676.js | 1 - ...ages_English_portfolio.md.da74d676.lean.js | 1 - ...e-esperanto-layout-windows.md.8a160d4d.js} | 2 +- ...eranto-layout-windows.md.8a160d4d.lean.js} | 2 +- ...nto_Tradukoj_sole-en-lvivo.md.2979757a.js} | 2 +- ...radukoj_sole-en-lvivo.md.2979757a.lean.js} | 2 +- ...koj_teda-tempo-por-legiano.md.cebd761a.js} | 4 +-- ...eda-tempo-por-legiano.md.cebd761a.lean.js} | 4 +-- .../pages_Polski_portfolio.md.312e9e7d.js | 22 ------------- ...pages_Polski_portfolio.md.312e9e7d.lean.js | 22 ------------- .../pages_Polski_portfolio.md.54ed9dcc.js | 22 +++++++++++++ ...pages_Polski_portfolio.md.54ed9dcc.lean.js | 22 +++++++++++++ ...{style.b6f43584.css => style.8dde9333.css} | 2 +- docs/index.html | 14 ++++---- docs/pages/English/portfolio.html | 18 +++++------ .../create-esperanto-layout-windows.html | 14 ++++---- .../Esperanto/Tradukoj/sole-en-lvivo.html | 14 ++++---- .../Tradukoj/teda-tempo-por-legiano.html | 14 ++++---- docs/pages/Polski/portfolio.html | 18 +++++------ src/components/SelectLanguage.vue | 32 +++++++++++-------- src/pages/English/portfolio.md | 6 +++- src/pages/Polski/portfolio.md | 5 +++ 34 files changed, 170 insertions(+), 157 deletions(-) rename docs/assets/{404.md.453a8206.js => 404.md.f0046ab7.js} (67%) rename docs/assets/{404.md.453a8206.lean.js => 404.md.f0046ab7.lean.js} (67%) rename docs/assets/{Element.e72f51e6.js => Element.b0b3cbd3.js} (90%) create mode 100644 docs/assets/Grid.0285a3ac.js delete mode 100644 docs/assets/Grid.5ca7e5a0.js create mode 100644 docs/assets/app.09bea5ba.js delete mode 100644 docs/assets/app.b9d21ddb.js rename docs/assets/{index.md.8e680bc5.js => index.md.e53be222.js} (96%) rename docs/assets/{index.md.8e680bc5.lean.js => index.md.e53be222.lean.js} (95%) create mode 100644 docs/assets/pages_English_portfolio.md.4f37d1b7.js create mode 100644 docs/assets/pages_English_portfolio.md.4f37d1b7.lean.js delete mode 100644 docs/assets/pages_English_portfolio.md.da74d676.js delete mode 100644 docs/assets/pages_English_portfolio.md.da74d676.lean.js rename docs/assets/{pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.js => pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.js} (98%) rename docs/assets/{pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.lean.js => pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.lean.js} (95%) rename docs/assets/{pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.js => pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.js} (96%) rename docs/assets/{pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.lean.js => pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.lean.js} (96%) rename docs/assets/{pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.js => pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.js} (89%) rename docs/assets/{pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.lean.js => pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.lean.js} (89%) delete mode 100644 docs/assets/pages_Polski_portfolio.md.312e9e7d.js delete mode 100644 docs/assets/pages_Polski_portfolio.md.312e9e7d.lean.js create mode 100644 docs/assets/pages_Polski_portfolio.md.54ed9dcc.js create mode 100644 docs/assets/pages_Polski_portfolio.md.54ed9dcc.lean.js rename docs/assets/{style.b6f43584.css => style.8dde9333.css} (98%) diff --git a/docs/404.html b/docs/404.html index 22efb08..d6e6cc3 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,17 +7,17 @@ Ta strona nie istnieje / This page doesn't exist / Ĉi tiu retejo ne ekzistas | canicjusz in English - - - - - + + + + +

Ta strona nie istnieje / This page doesn't exist / Ĉi tiu retejo ne ekzistas

Home

- - + + \ No newline at end of file diff --git a/docs/assets/404.md.453a8206.js b/docs/assets/404.md.f0046ab7.js similarity index 67% rename from docs/assets/404.md.453a8206.js rename to docs/assets/404.md.f0046ab7.js index 74ddaba..f43522e 100644 --- a/docs/assets/404.md.453a8206.js +++ b/docs/assets/404.md.f0046ab7.js @@ -1 +1 @@ -import{_ as t,o as s,c as a,a as e}from"./app.b9d21ddb.js";const j=`{"title":"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas","description":"","frontmatter":{},"relativePath":"404.md","lastUpdated":1709057980554}`,i={},n=e("h1",{id:"ta-strona-nie-istnieje-this-page-doesn-t-exist-ci-tiu-retejo-ne-ekzistas"},"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas",-1),o=e("p",null,[e("a",{href:"/"},"Home")],-1),r=[n,o];function d(c,_,p,l,h,u){return s(),a("div",null,r)}var m=t(i,[["render",d]]);export{j as __pageData,m as default}; +import{_ as t,o as s,c as a,a as e}from"./app.09bea5ba.js";const j=`{"title":"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas","description":"","frontmatter":{},"relativePath":"404.md","lastUpdated":1709057980554}`,i={},n=e("h1",{id:"ta-strona-nie-istnieje-this-page-doesn-t-exist-ci-tiu-retejo-ne-ekzistas"},"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas",-1),o=e("p",null,[e("a",{href:"/"},"Home")],-1),r=[n,o];function c(_,d,p,l,h,u){return s(),a("div",null,r)}var m=t(i,[["render",c]]);export{j as __pageData,m as default}; diff --git a/docs/assets/404.md.453a8206.lean.js b/docs/assets/404.md.f0046ab7.lean.js similarity index 67% rename from docs/assets/404.md.453a8206.lean.js rename to docs/assets/404.md.f0046ab7.lean.js index 74ddaba..f43522e 100644 --- a/docs/assets/404.md.453a8206.lean.js +++ b/docs/assets/404.md.f0046ab7.lean.js @@ -1 +1 @@ -import{_ as t,o as s,c as a,a as e}from"./app.b9d21ddb.js";const j=`{"title":"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas","description":"","frontmatter":{},"relativePath":"404.md","lastUpdated":1709057980554}`,i={},n=e("h1",{id:"ta-strona-nie-istnieje-this-page-doesn-t-exist-ci-tiu-retejo-ne-ekzistas"},"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas",-1),o=e("p",null,[e("a",{href:"/"},"Home")],-1),r=[n,o];function d(c,_,p,l,h,u){return s(),a("div",null,r)}var m=t(i,[["render",d]]);export{j as __pageData,m as default}; +import{_ as t,o as s,c as a,a as e}from"./app.09bea5ba.js";const j=`{"title":"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas","description":"","frontmatter":{},"relativePath":"404.md","lastUpdated":1709057980554}`,i={},n=e("h1",{id:"ta-strona-nie-istnieje-this-page-doesn-t-exist-ci-tiu-retejo-ne-ekzistas"},"Ta strona nie istnieje / This page doesn't exist / \u0108i tiu retejo ne ekzistas",-1),o=e("p",null,[e("a",{href:"/"},"Home")],-1),r=[n,o];function c(_,d,p,l,h,u){return s(),a("div",null,r)}var m=t(i,[["render",c]]);export{j as __pageData,m as default}; diff --git a/docs/assets/Element.e72f51e6.js b/docs/assets/Element.b0b3cbd3.js similarity index 90% rename from docs/assets/Element.e72f51e6.js rename to docs/assets/Element.b0b3cbd3.js index 4d07639..ae52c03 100644 --- a/docs/assets/Element.e72f51e6.js +++ b/docs/assets/Element.b0b3cbd3.js @@ -1 +1 @@ -import{_ as C,j as f,k as g,H as u,r as N,l as y,m as r,o as l,c as o,t as _,a as s,i as p,n as c,e as d,w as h,q as x,s as v,T as j}from"./app.b9d21ddb.js";const z=f(()=>g(()=>import("./app.b9d21ddb.js").then(function(t){return t.N}),[])),B={props:{page:Object,level:Number},components:{Navbar:z,Hamburger:u},setup(){return{isClicked:N(!1),hideNavbars:y}}},E={class:"navbar__element"},H=["href"];function O(t,n,a,e,T,V){const b=r("Hamburger"),m=r("Navbar"),k=r("ClientOnly");return l(),o("li",E,[a.page.type==="file"?(l(),o("a",{key:0,href:a.page.href,class:"navbar__link navbar__file",onClick:n[0]||(n[0]=(...i)=>e.hideNavbars&&e.hideNavbars(...i))},_(a.page.name),9,H)):(l(),o("div",{key:1,class:"navbar__folder",onClick:n[2]||(n[2]=i=>e.isClicked=!e.isClicked)},[s("div",null,[p(_(a.page.name)+" ",1),s("span",{class:c(["navbar__triangle",{"navbar__triangle--opened":e.isClicked}])},null,2)]),d(k,null,{default:h(()=>[(l(),x(j,{to:"nav"},[s("div",{class:"navbar-container",style:v({zIndex:a.level})},[s("div",{class:c(["navbar",{"navbar--show":e.isClicked}]),style:v({zIndex:a.level})},[d(b,{class:c({"hamburger--clicked":e.isClicked}),onClick:n[1]||(n[1]=i=>e.isClicked=!e.isClicked)},null,8,["class"]),d(m,{list:a.page.content,level:a.level+1},null,8,["list","level"])],6)],4)]))]),_:1})]))])}var I=C(B,[["render",O]]);export{I as default}; +import{_ as C,j as f,k as g,H as u,r as N,l as y,m as r,o as l,c as o,t as _,a as s,i as p,n as c,e as d,w as h,q as x,s as v,T as j}from"./app.09bea5ba.js";const z=f(()=>g(()=>import("./app.09bea5ba.js").then(function(t){return t.N}),[])),B={props:{page:Object,level:Number},components:{Navbar:z,Hamburger:u},setup(){return{isClicked:N(!1),hideNavbars:y}}},E={class:"navbar__element"},H=["href"];function O(t,n,a,e,T,V){const b=r("Hamburger"),m=r("Navbar"),k=r("ClientOnly");return l(),o("li",E,[a.page.type==="file"?(l(),o("a",{key:0,href:a.page.href,class:"navbar__link navbar__file",onClick:n[0]||(n[0]=(...i)=>e.hideNavbars&&e.hideNavbars(...i))},_(a.page.name),9,H)):(l(),o("div",{key:1,class:"navbar__folder",onClick:n[2]||(n[2]=i=>e.isClicked=!e.isClicked)},[s("div",null,[p(_(a.page.name)+" ",1),s("span",{class:c(["navbar__triangle",{"navbar__triangle--opened":e.isClicked}])},null,2)]),d(k,null,{default:h(()=>[(l(),x(j,{to:"nav"},[s("div",{class:"navbar-container",style:v({zIndex:a.level})},[s("div",{class:c(["navbar",{"navbar--show":e.isClicked}]),style:v({zIndex:a.level})},[d(b,{class:c({"hamburger--clicked":e.isClicked}),onClick:n[1]||(n[1]=i=>e.isClicked=!e.isClicked)},null,8,["class"]),d(m,{list:a.page.content,level:a.level+1},null,8,["list","level"])],6)],4)]))]),_:1})]))])}var I=C(B,[["render",O]]);export{I as default}; diff --git a/docs/assets/Grid.0285a3ac.js b/docs/assets/Grid.0285a3ac.js new file mode 100644 index 0000000..a9c34d3 --- /dev/null +++ b/docs/assets/Grid.0285a3ac.js @@ -0,0 +1 @@ +import{_ as a,o as t,c as e,F as _,g as o}from"./app.09bea5ba.js";var v="/portfolio/radiowezel.jpg";const c={props:{files:Array}},i={class:"grid"},n=["srcset","src","alt"];function p(d,l,r,u,g,h){return t(),e("div",i,[(t(!0),e(_,null,o(r.files,s=>(t(),e("img",{class:"grid__img",srcset:s.path+" 1x",src:s.path,key:s.alt,height:"320",width:"240",alt:s.alt},null,8,n))),128))])}var f=a(c,[["render",p],["__scopeId","data-v-10a29b93"]]);export{f as G,v as _}; diff --git a/docs/assets/Grid.5ca7e5a0.js b/docs/assets/Grid.5ca7e5a0.js deleted file mode 100644 index e315641..0000000 --- a/docs/assets/Grid.5ca7e5a0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,o as t,c as r,F as _,g as o}from"./app.b9d21ddb.js";var v="/portfolio/radiowezel.jpg";const c={props:{files:Array}},d={class:"grid"},i=["srcset","src","alt"];function n(p,l,e,u,g,h){return t(),r("div",d,[(t(!0),r(_,null,o(e.files,s=>(t(),r("img",{class:"grid__img",srcset:s.path+" 1x",src:s.path,key:s.alt,height:"320",width:"240",alt:s.alt},null,8,i))),128))])}var f=a(c,[["render",n],["__scopeId","data-v-10a29b93"]]);export{f as G,v as _}; diff --git a/docs/assets/app.09bea5ba.js b/docs/assets/app.09bea5ba.js new file mode 100644 index 0000000..f5f5737 --- /dev/null +++ b/docs/assets/app.09bea5ba.js @@ -0,0 +1,28 @@ +var bo=Object.defineProperty,yo=Object.defineProperties;var vo=Object.getOwnPropertyDescriptors;var Ss=Object.getOwnPropertySymbols;var xo=Object.prototype.hasOwnProperty,wo=Object.prototype.propertyIsEnumerable;var Os=(e,t,n)=>t in e?bo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mt=(e,t)=>{for(var n in t||(t={}))xo.call(t,n)&&Os(e,n,t[n]);if(Ss)for(var n of Ss(t))wo.call(t,n)&&Os(e,n,t[n]);return e},On=(e,t)=>yo(e,vo(t));/** +* @vue/shared v3.4.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Pn(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const Z={},rt=[],me=()=>{},Eo=()=>!1,bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Rn=e=>e.startsWith("onUpdate:"),oe=Object.assign,Mn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Co=Object.prototype.hasOwnProperty,K=(e,t)=>Co.call(e,t),N=Array.isArray,ot=e=>kt(e)==="[object Map]",Ps=e=>kt(e)==="[object Set]",j=e=>typeof e=="function",te=e=>typeof e=="string",it=e=>typeof e=="symbol",Q=e=>e!==null&&typeof e=="object",Rs=e=>(Q(e)||j(e))&&j(e.then)&&j(e.catch),Ms=Object.prototype.toString,kt=e=>Ms.call(e),To=e=>kt(e).slice(8,-1),Is=e=>kt(e)==="[object Object]",In=e=>te(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,lt=Pn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ao=/-(\w)/g,Pe=Vt(e=>e.replace(Ao,(t,n)=>n?n.toUpperCase():"")),So=/\B([A-Z])/g,ct=Vt(e=>e.replace(So,"-$1").toLowerCase()),Ut=Vt(e=>e.charAt(0).toUpperCase()+e.slice(1)),$n=Vt(e=>e?`on${Ut(e)}`:""),De=(e,t)=>!Object.is(e,t),Ln=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Oo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let $s;const Fn=()=>$s||($s=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Kt(e){if(N(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ro);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ft(e){let t="";if(te(e))t=e;else if(N(e))for(let n=0;nte(e)?e:e==null?"":N(e)||Q(e)&&(e.toString===Ms||!j(e.toString))?JSON.stringify(e,Fs,2):String(e),Fs=(e,t)=>t&&t.__v_isRef?Fs(e,t.value):ot(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Hn(s,o)+" =>"]=r,n),{})}:Ps(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Hn(n))}:it(t)?Hn(t):Q(t)&&!N(t)&&!Is(t)?String(t):t,Hn=(e,t="")=>{var n;return it(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ve;class Fo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Ve()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=je,n=Je;try{return je=!0,Je=this,this._runnings++,Hs(this),this.fn()}finally{Ns(this),this._runnings--,Je=n,je=t}}stop(){var t;this.active&&(Hs(this),Ns(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Do(e){return e.value}function Hs(e){e._trackId++,e._depsLength=0}function Ns(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Un=new WeakMap,ze=Symbol(""),Bn=Symbol("");function pe(e,t,n){if(je&&Je){let s=Un.get(e);s||Un.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Us(()=>s.delete(n))),ks(Je,r)}}function Le(e,t,n,s,r,o){const i=Un.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&N(e)){const f=Number(s);i.forEach((a,h)=>{(h==="length"||!it(h)&&h>=f)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":N(e)?In(n)&&l.push(i.get("length")):(l.push(i.get(ze)),ot(e)&&l.push(i.get(Bn)));break;case"delete":N(e)||(l.push(i.get(ze)),ot(e)&&l.push(i.get(Bn)));break;case"set":ot(e)&&l.push(i.get(ze));break}jn();for(const f of l)f&&Vs(f,4);kn()}const jo=Pn("__proto__,__v_isRef,__isVue"),Bs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(it)),Ks=ko();function ko(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=W(this);for(let o=0,i=this.length;o{e[t]=function(...n){ke(),jn();const s=W(this)[t].apply(this,n);return kn(),Ve(),s}}),e}function Vo(e){const t=W(this);return pe(t,"has",e),t.hasOwnProperty(e)}class Ws{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?ei:Qs:o?Zs:Xs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=N(t);if(!r){if(i&&K(Ks,n))return Reflect.get(Ks,n,s);if(n==="hasOwnProperty")return Vo}const l=Reflect.get(t,n,s);return(it(n)?Bs.has(n):jo(n))||(r||pe(t,"get",n),o)?l:ce(l)?i&&In(n)?l:l.value:Q(l)?r?Qt(l):Zt(l):l}}class qs extends Ws{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const f=at(o);if(!en(s)&&!at(s)&&(o=W(o),s=W(s)),!N(t)&&ce(o)&&!ce(s))return f?!1:(o.value=s,!0)}const i=N(t)&&In(n)?Number(n)e,qt=e=>Reflect.getPrototypeOf(e);function Gt(e,t,n=!1,s=!1){e=e.__v_raw;const r=W(e),o=W(t);n||(De(t,o)&&pe(r,"get",t),pe(r,"get",o));const{has:i}=qt(r),l=s?Kn:n?Gn:yt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function Yt(e,t=!1){const n=this.__v_raw,s=W(n),r=W(e);return t||(De(e,r)&&pe(s,"has",e),pe(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Jt(e,t=!1){return e=e.__v_raw,!t&&pe(W(e),"iterate",ze),Reflect.get(e,"size",e)}function Gs(e){e=W(e);const t=W(this);return qt(t).has.call(t,e)||(t.add(e),Le(t,"add",e,e)),this}function Ys(e,t){t=W(t);const n=W(this),{has:s,get:r}=qt(n);let o=s.call(n,e);o||(e=W(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?De(t,i)&&Le(n,"set",e,t):Le(n,"add",e,t),this}function Js(e){const t=W(this),{has:n,get:s}=qt(t);let r=n.call(t,e);r||(e=W(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&Le(t,"delete",e,void 0),o}function zs(){const e=W(this),t=e.size!==0,n=e.clear();return t&&Le(e,"clear",void 0,void 0),n}function zt(e,t){return function(s,r){const o=this,i=o.__v_raw,l=W(i),f=t?Kn:e?Gn:yt;return!e&&pe(l,"iterate",ze),i.forEach((a,h)=>s.call(r,f(a),f(h),o))}}function Xt(e,t,n){return function(...s){const r=this.__v_raw,o=W(r),i=ot(o),l=e==="entries"||e===Symbol.iterator&&i,f=e==="keys"&&i,a=r[e](...s),h=n?Kn:t?Gn:yt;return!t&&pe(o,"iterate",f?Bn:ze),{next(){const{value:g,done:y}=a.next();return y?{value:g,done:y}:{value:l?[h(g[0]),h(g[1])]:h(g),done:y}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function qo(){const e={get(o){return Gt(this,o)},get size(){return Jt(this)},has:Yt,add:Gs,set:Ys,delete:Js,clear:zs,forEach:zt(!1,!1)},t={get(o){return Gt(this,o,!1,!0)},get size(){return Jt(this)},has:Yt,add:Gs,set:Ys,delete:Js,clear:zs,forEach:zt(!1,!0)},n={get(o){return Gt(this,o,!0)},get size(){return Jt(this,!0)},has(o){return Yt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!1)},s={get(o){return Gt(this,o,!0,!0)},get size(){return Jt(this,!0)},has(o){return Yt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Xt(o,!1,!1),n[o]=Xt(o,!0,!1),t[o]=Xt(o,!1,!0),s[o]=Xt(o,!0,!0)}),[e,n,t,s]}const[Go,Yo,Jo,zo]=qo();function Wn(e,t){const n=t?e?zo:Jo:e?Yo:Go;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(K(n,r)&&r in s?n:s,r,o)}const Xo={get:Wn(!1,!1)},Zo={get:Wn(!1,!0)},Qo={get:Wn(!0,!1)},Xs=new WeakMap,Zs=new WeakMap,Qs=new WeakMap,ei=new WeakMap;function ti(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ni(e){return e.__v_skip||!Object.isExtensible(e)?0:ti(To(e))}function Zt(e){return at(e)?e:qn(e,!1,Bo,Xo,Xs)}function si(e){return qn(e,!1,Wo,Zo,Zs)}function Qt(e){return qn(e,!0,Ko,Qo,Qs)}function qn(e,t,n,s,r){if(!Q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=ni(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function ut(e){return at(e)?ut(e.__v_raw):!!(e&&e.__v_isReactive)}function at(e){return!!(e&&e.__v_isReadonly)}function en(e){return!!(e&&e.__v_isShallow)}function er(e){return ut(e)||at(e)}function W(e){const t=e&&e.__v_raw;return t?W(t):e}function tn(e){return Object.isExtensible(e)&&Bt(e,"__v_skip",!0),e}const yt=e=>Q(e)?Zt(e):e,Gn=e=>Q(e)?Qt(e):e;class tr{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Nn(()=>t(this._value),()=>nn(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=W(this);return(!t._cacheable||t.effect.dirty)&&De(t._value,t._value=t.effect.run())&&nn(t,4),nr(t),t.effect._dirtyLevel>=2&&nn(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ri(e,t,n=!1){let s,r;const o=j(e);return o?(s=e,r=me):(s=e.get,r=e.set),new tr(s,r,o||!r,n)}function nr(e){var t;je&&Je&&(e=W(e),ks(Je,(t=e.dep)!=null?t:e.dep=Us(()=>e.dep=void 0,e instanceof tr?e:void 0)))}function nn(e,t=4,n){e=W(e);const s=e.dep;s&&Vs(s,t)}function ce(e){return!!(e&&e.__v_isRef===!0)}function Re(e){return oi(e,!1)}function oi(e,t){return ce(e)?e:new ii(e,t)}class ii{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:W(t),this._value=n?t:yt(t)}get value(){return nr(this),this._value}set value(t){const n=this.__v_isShallow||en(t)||at(t);t=n?t:W(t),De(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:yt(t),nn(this,4))}}function li(e){return ce(e)?e.value:e}const ci={get:(e,t,n)=>li(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ce(r)&&!ce(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function sr(e){return ut(e)?e:new Proxy(e,ci)}/** +* @vue/runtime-core v3.4.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const vt=[];function Xe(e,...t){ke();const n=vt.length?vt[vt.length-1].component:null,s=n&&n.appContext.config.warnHandler,r=fi();if(s)Fe(s,n,11,[e+t.join(""),n&&n.proxy,r.map(({vnode:o})=>`at <${Yr(n,o.type)}>`).join(` +`),r]);else{const o=[`[Vue warn]: ${e}`,...t];r.length&&o.push(` +`,...ui(r)),console.warn(...o)}Ve()}function fi(){let e=vt[vt.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function ui(e){const t=[];return e.forEach((n,s)=>{t.push(...s===0?[]:[` +`],...ai(n))}),t}function ai({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,r=` at <${Yr(e.component,e.type,s)}`,o=">"+n;return e.props?[r,...hi(e.props),o]:[r+o]}function hi(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(s=>{t.push(...rr(s,e[s]))}),n.length>3&&t.push(" ..."),t}function rr(e,t,n){return te(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:ce(t)?(t=rr(e,W(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):j(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=W(t),n?t:[`${e}=`,t])}function Fe(e,t,n,s){try{return s?e(...s):e()}catch(r){xt(r,t,n)}}function xe(e,t,n,s){if(j(e)){const o=Fe(e,t,n,s);return o&&Rs(o)&&o.catch(i=>{xt(i,t,n)}),o}const r=[];for(let o=0;o>>1,r=le[s],o=Et(r);oMe&&le.splice(t,1)}function _i(e){N(e)?ht.push(...e):(!Be||!Be.includes(e,e.allowRecurse?Ze+1:Ze))&&ht.push(e),lr()}function cr(e,t,n=wt?Me+1:0){for(;nEt(n)-Et(s));if(ht.length=0,Be){Be.push(...t);return}for(Be=t,Ze=0;Zee.id==null?1/0:e.id,mi=(e,t)=>{const n=Et(e)-Et(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function fr(e){Yn=!1,wt=!0,le.sort(mi);const t=me;try{for(Me=0;Mete(T)?T.trim():T)),g&&(r=n.map(Oo))}let l,f=s[l=$n(t)]||s[l=$n(Pe(t))];!f&&o&&(f=s[l=$n(ct(t))]),f&&xe(f,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(a,e,6,r)}}function ur(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!j(e)){const f=a=>{const h=ur(a,t,!0);h&&(l=!0,oe(i,h))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!o&&!l?(Q(e)&&s.set(e,null),null):(N(o)?o.forEach(f=>i[f]=null):oe(i,o),Q(e)&&s.set(e,i),i)}function on(e,t){return!e||!bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),K(e,t[0].toLowerCase()+t.slice(1))||K(e,ct(t))||K(e,t))}let we=null,ln=null;function cn(e){const t=we;return we=e,ln=e&&e.type.__scopeId||null,t}function yi(e){ln=e}function vi(){ln=null}function xi(e,t=we,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Dr(-1);const o=cn(t);let i;try{i=e(...r)}finally{cn(o),s._d&&Dr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function zn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:f,emit:a,render:h,renderCache:g,data:y,setupState:T,ctx:O,inheritAttrs:$}=e;let B,Y;const G=cn(e);try{if(n.shapeFlag&4){const v=r||s,I=v;B=Te(h.call(I,v,g,o,T,y,O)),Y=f}else{const v=t;B=Te(v.length>1?v(o,{attrs:f,slots:l,emit:a}):v(o,null)),Y=t.props?f:wi(f)}}catch(v){Lt.length=0,xt(v,e,1),B=ee(We)}let d=B;if(Y&&$!==!1){const v=Object.keys(Y),{shapeFlag:I}=d;v.length&&I&(1|6)&&(i&&v.some(Rn)&&(Y=Ei(Y,i)),d=gt(d,Y))}return n.dirs&&(d=gt(d),d.dirs=d.dirs?d.dirs.concat(n.dirs):n.dirs),n.transition&&(d.transition=n.transition),B=d,cn(G),B}const wi=e=>{let t;for(const n in e)(n==="class"||n==="style"||bt(n))&&((t||(t={}))[n]=e[n]);return t},Ei=(e,t)=>{const n={};for(const s in e)(!Rn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ci(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:f}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return s?ar(s,i,a):!!i;if(f&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function pr(e,t){t&&t.pendingBranch?N(e)?t.effects.push(...e):t.effects.push(e):_i(e)}const Pi=Symbol.for("v-scx"),Ri=()=>Rt(Pi);function Mi(e,t){return Xn(e,null,t)}const un={};function Ct(e,t,n){return Xn(e,t,n)}function Xn(e,t,{immediate:n,deep:s,flush:r,once:o,onTrack:i,onTrigger:l}=Z){if(t&&o){const S=t;t=(...F)=>{S(...F),I()}}const f=ie,a=S=>s===!0?S:dt(S,s===!1?1:void 0);let h,g=!1,y=!1;if(ce(e)?(h=()=>e.value,g=en(e)):ut(e)?(h=()=>a(e),g=!0):N(e)?(y=!0,g=e.some(S=>ut(S)||en(S)),h=()=>e.map(S=>{if(ce(S))return S.value;if(ut(S))return a(S);if(j(S))return Fe(S,f,2)})):j(e)?t?h=()=>Fe(e,f,2):h=()=>(T&&T(),xe(e,f,3,[O])):h=me,t&&s){const S=h;h=()=>dt(S())}let T,O=S=>{T=d.onStop=()=>{Fe(S,f,4),T=d.onStop=void 0}},$;if(Dt)if(O=me,t?n&&xe(t,f,3,[h(),y?[]:void 0,O]):h(),r==="sync"){const S=Ri();$=S.__watcherHandles||(S.__watcherHandles=[])}else return me;let B=y?new Array(e.length).fill(un):un;const Y=()=>{if(!(!d.active||!d.dirty))if(t){const S=d.run();(s||g||(y?S.some((F,k)=>De(F,B[k])):De(S,B)))&&(T&&T(),xe(t,f,3,[S,B===un?void 0:y&&B[0]===un?[]:B,O]),B=S)}else d.run()};Y.allowRecurse=!!t;let G;r==="sync"?G=Y:r==="post"?G=()=>ge(Y,f&&f.suspense):(Y.pre=!0,f&&(Y.id=f.uid),G=()=>sn(Y));const d=new Nn(h,me,G),v=No(),I=()=>{d.stop(),v&&Mn(v.effects,d)};return t?n?Y():B=d.run():r==="post"?ge(d.run.bind(d),f&&f.suspense):d.run(),$&&$.push(I),I}function Ii(e,t,n){const s=this.proxy,r=te(e)?e.includes(".")?gr(s,e):()=>s[e]:e.bind(s,s);let o;j(t)?o=t:(o=t.handler,n=t);const i=Nt(this),l=Xn(r,o.bind(s),n);return i(),l}function gr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),ce(e))dt(e.value,t,n,s);else if(N(e))for(let r=0;r{dt(r,t,n,s)});else if(Is(e))for(const r in e)dt(e[r],t,n,s);return e}function Ie(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;ioe({name:e.name},t,{setup:e}))():e}const At=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function $i(e){j(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:o,suspensible:i=!0,onError:l}=e;let f=null,a,h=0;const g=()=>(h++,f=null,y()),y=()=>{let T;return f||(T=f=t().catch(O=>{if(O=O instanceof Error?O:new Error(String(O)),l)return new Promise(($,B)=>{l(O,()=>$(g()),()=>B(O),h+1)});throw O}).then(O=>T!==f&&f?f:(O&&(O.__esModule||O[Symbol.toStringTag]==="Module")&&(O=O.default),a=O,O)))};return Tt({name:"AsyncComponentWrapper",__asyncLoader:y,get __asyncResolved(){return a},setup(){const T=ie;if(a)return()=>Zn(a,T);const O=G=>{f=null,xt(G,T,13,!s)};if(i&&T.suspense||Dt)return y().then(G=>()=>Zn(G,T)).catch(G=>(O(G),()=>s?ee(s,{error:G}):null));const $=Re(!1),B=Re(),Y=Re(!!r);return r&&setTimeout(()=>{Y.value=!1},r),o!=null&&setTimeout(()=>{if(!$.value&&!B.value){const G=new Error(`Async component timed out after ${o}ms.`);O(G),B.value=G}},o),y().then(()=>{$.value=!0,T.parent&&Qn(T.parent.vnode)&&(T.parent.effect.dirty=!0,sn(T.parent.update))}).catch(G=>{O(G),B.value=G}),()=>{if($.value&&a)return Zn(a,T);if(B.value&&s)return ee(s,{error:B.value});if(n&&!Y.value)return ee(n)}}})}function Zn(e,t){const{ref:n,props:s,children:r,ce:o}=t.vnode,i=ee(e,s,r);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Qn=e=>e.type.__isKeepAlive;function Li(e,t){_r(e,"a",t)}function Fi(e,t){_r(e,"da",t)}function _r(e,t,n=ie){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(an(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Qn(r.parent.vnode)&&Hi(s,t,n,r),r=r.parent}}function Hi(e,t,n,s){const r=an(t,e,s,!0);ts(()=>{Mn(s[t],r)},n)}function an(e,t,n=ie,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;ke();const l=Nt(n),f=xe(t,n,e,i);return l(),Ve(),f});return s?r.unshift(o):r.push(o),o}}const He=e=>(t,n=ie)=>(!Dt||e==="sp")&&an(e,(...s)=>t(...s),n),Ni=He("bm"),es=He("m"),Di=He("bu"),ji=He("u"),ki=He("bum"),ts=He("um"),Vi=He("sp"),Ui=He("rtg"),Bi=He("rtc");function Ki(e,t=ie){an("ec",e,t)}function mr(e,t,n,s){let r;const o=n&&n[s];if(N(e)||te(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,f=i.length;le?Br(e)?_s(e)||e.proxy:ns(e.parent):null,St=oe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ns(e.parent),$root:e=>ns(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,sn(e.update)}),$nextTick:e=>e.n||(e.n=ir.bind(e.proxy)),$watch:e=>Ii.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&K(e,t),Wi={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:f}=e;let a;if(t[0]!=="$"){const T=i[t];if(T!==void 0)switch(T){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ss(s,t))return i[t]=1,s[t];if(r!==Z&&K(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&K(a,t))return i[t]=3,o[t];if(n!==Z&&K(n,t))return i[t]=4,n[t];rs&&(i[t]=0)}}const h=St[t];let g,y;if(h)return t==="$attrs"&&pe(e,"get",t),h(e);if((g=l.__cssModules)&&(g=g[t]))return g;if(n!==Z&&K(n,t))return i[t]=4,n[t];if(y=f.config.globalProperties,K(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&K(s,t)?(s[t]=n,!0):K(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==Z&&K(e,i)||ss(t,i)||(l=o[0])&&K(l,i)||K(s,i)||K(St,i)||K(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:K(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function br(e){return N(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let rs=!0;function qi(e){const t=os(e),n=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&yr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:f,inject:a,created:h,beforeMount:g,mounted:y,beforeUpdate:T,updated:O,activated:$,deactivated:B,beforeDestroy:Y,beforeUnmount:G,destroyed:d,unmounted:v,render:I,renderTracked:S,renderTriggered:F,errorCaptured:k,serverPrefetch:q,expose:D,inheritAttrs:J,components:re,directives:ne,filters:he}=t;if(a&&Gi(a,s,null),i)for(const U in i){const R=i[U];j(R)&&(s[U]=R.bind(n))}if(r){const U=r.call(n,n);Q(U)&&(e.data=Zt(U))}if(rs=!0,o)for(const U in o){const R=o[U],Ae=j(R)?R.bind(n,n):j(R.get)?R.get.bind(n,n):me,tt=!j(R)&&j(R.set)?R.set.bind(n):me,Ye=ms({get:Ae,set:tt});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:Se=>Ye.value=Se})}if(l)for(const U in l)vr(l[U],s,n,U);if(f){const U=j(f)?f.call(n):f;Reflect.ownKeys(U).forEach(R=>{Qi(R,U[R])})}h&&yr(h,e,"c");function L(U,R){N(R)?R.forEach(Ae=>U(Ae.bind(n))):R&&U(R.bind(n))}if(L(Ni,g),L(es,y),L(Di,T),L(ji,O),L(Li,$),L(Fi,B),L(Ki,k),L(Bi,S),L(Ui,F),L(ki,G),L(ts,v),L(Vi,q),N(D))if(D.length){const U=e.exposed||(e.exposed={});D.forEach(R=>{Object.defineProperty(U,R,{get:()=>n[R],set:Ae=>n[R]=Ae})})}else e.exposed||(e.exposed={});I&&e.render===me&&(e.render=I),J!=null&&(e.inheritAttrs=J),re&&(e.components=re),ne&&(e.directives=ne)}function Gi(e,t,n=me){N(e)&&(e=is(e));for(const s in e){const r=e[s];let o;Q(r)?"default"in r?o=Rt(r.from||s,r.default,!0):o=Rt(r.from||s):o=Rt(r),ce(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function yr(e,t,n){xe(N(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function vr(e,t,n,s){const r=s.includes(".")?gr(n,s):()=>n[s];if(te(e)){const o=t[e];j(o)&&Ct(r,o)}else if(j(e))Ct(r,e.bind(n));else if(Q(e))if(N(e))e.forEach(o=>vr(o,t,n,s));else{const o=j(e.handler)?e.handler.bind(n):t[e.handler];j(o)&&Ct(r,o,e)}}function os(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let f;return l?f=l:!r.length&&!n&&!s?f=t:(f={},r.length&&r.forEach(a=>hn(f,a,i,!0)),hn(f,t,i)),Q(t)&&o.set(t,f),f}function hn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&hn(e,o,n,!0),r&&r.forEach(i=>hn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Yi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Yi={data:xr,props:wr,emits:wr,methods:Ot,computed:Ot,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Ot,directives:Ot,watch:zi,provide:xr,inject:Ji};function xr(e,t){return t?e?function(){return oe(j(e)?e.call(this,this):e,j(t)?t.call(this,this):t)}:t:e}function Ji(e,t){return Ot(is(e),is(t))}function is(e){if(N(e)){const t={};for(let n=0;n1)return n&&j(t)?t.call(s&&s.proxy):t}}function el(e,t,n,s=!1){const r={},o={};Bt(o,_n,1),e.propsDefaults=Object.create(null),Cr(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:si(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function tl(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=W(r),[f]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let g=0;g{f=!0;const[y,T]=Tr(g,t,!0);oe(i,y),T&&l.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!f)return Q(e)&&s.set(e,rt),rt;if(N(o))for(let h=0;h-1,T[1]=$<0||O<$,(O>-1||K(T,"default"))&&l.push(g)}}}const a=[i,l];return Q(e)&&s.set(e,a),a}function Ar(e){return e[0]!=="$"&&!lt(e)}function Sr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Or(e,t){return Sr(e)===Sr(t)}function Pr(e,t){return N(t)?t.findIndex(n=>Or(n,e)):j(t)&&Or(t,e)?0:-1}const Rr=e=>e[0]==="_"||e==="$stable",cs=e=>N(e)?e.map(Te):[Te(e)],nl=(e,t,n)=>{if(t._n)return t;const s=xi((...r)=>cs(t(...r)),n);return s._c=!1,s},Mr=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Rr(r))continue;const o=e[r];if(j(o))t[r]=nl(r,o,s);else if(o!=null){const i=cs(o);t[r]=()=>i}}},Ir=(e,t)=>{const n=cs(t);e.slots.default=()=>n},sl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=W(t),Bt(t,"_",n)):Mr(t,e.slots={})}else e.slots={},t&&Ir(e,t);Bt(e.slots,_n,1)},rl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(oe(r,t),!n&&l===1&&delete r._):(o=!t.$stable,Mr(t,r)),i=t}else t&&(Ir(e,t),i={default:1});if(o)for(const l in r)!Rr(l)&&i[l]==null&&delete r[l]};function dn(e,t,n,s,r=!1){if(N(e)){e.forEach((y,T)=>dn(y,t&&(N(t)?t[T]:t),n,s,r));return}if(At(s)&&!r)return;const o=s.shapeFlag&4?_s(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:f}=e,a=t&&t.r,h=l.refs===Z?l.refs={}:l.refs,g=l.setupState;if(a!=null&&a!==f&&(te(a)?(h[a]=null,K(g,a)&&(g[a]=null)):ce(a)&&(a.value=null)),j(f))Fe(f,l,12,[i,h]);else{const y=te(f),T=ce(f);if(y||T){const O=()=>{if(e.f){const $=y?K(g,f)?g[f]:h[f]:f.value;r?N($)&&Mn($,o):N($)?$.includes(o)||$.push(o):y?(h[f]=[o],K(g,f)&&(g[f]=h[f])):(f.value=[o],e.k&&(h[e.k]=f.value))}else y?(h[f]=i,K(g,f)&&(g[f]=i)):T&&(f.value=i,e.k&&(h[e.k]=i))};i?(O.id=-1,ge(O,n)):O()}}}let Ke=!1;const ol=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",il=e=>e.namespaceURI.includes("MathML"),pn=e=>{if(ol(e))return"svg";if(il(e))return"mathml"},Mt=e=>e.nodeType===8;function ll(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:o,parentNode:i,remove:l,insert:f,createComment:a}}=e,h=(d,v)=>{if(!v.hasChildNodes()){__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Xe("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,d,v),rn(),v._vnode=d;return}Ke=!1,g(v.firstChild,d,null,null,null),rn(),v._vnode=d,Ke&&console.error("Hydration completed but contains mismatches.")},g=(d,v,I,S,F,k=!1)=>{const q=Mt(d)&&d.data==="[",D=()=>$(d,v,I,S,F,q),{type:J,ref:re,shapeFlag:ne,patchFlag:he}=v;let de=d.nodeType;v.el=d,he===-2&&(k=!1,v.dynamicChildren=null);let L=null;switch(J){case pt:de!==3?v.children===""?(f(v.el=r(""),i(d),d),L=d):L=D():(d.data!==v.children&&(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Xe("Hydration text mismatch in",d.parentNode,` + - rendered on server: ${JSON.stringify(d.data)} + - expected on client: ${JSON.stringify(v.children)}`),d.data=v.children),L=o(d));break;case We:G(d)?(L=o(d),Y(v.el=d.content.firstChild,d,I)):de!==8||q?L=D():L=o(d);break;case $t:if(q&&(d=o(d),de=d.nodeType),de===1||de===3){L=d;const U=!v.children.length;for(let R=0;R{k=k||!!v.dynamicChildren;const{type:q,props:D,patchFlag:J,shapeFlag:re,dirs:ne,transition:he}=v,de=q==="input"||q==="option";if(de||J!==-1){ne&&Ie(v,null,I,"created");let L=!1;if(G(d)){L=$r(S,he)&&I&&I.vnode.props&&I.vnode.props.appear;const R=d.content.firstChild;L&&he.beforeEnter(R),Y(R,d,I),v.el=d=R}if(re&16&&!(D&&(D.innerHTML||D.textContent))){let R=T(d.firstChild,v,d,I,S,F,k),Ae=!1;for(;R;){Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&!Ae&&(Xe("Hydration children mismatch on",d,` +Server rendered element contains more child nodes than client vdom.`),Ae=!0);const tt=R;R=R.nextSibling,l(tt)}}else re&8&&d.textContent!==v.children&&(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Xe("Hydration text content mismatch on",d,` + - rendered on server: ${d.textContent} + - expected on client: ${v.children}`),d.textContent=v.children);if(D)if(de||!k||J&(16|32))for(const R in D)(de&&(R.endsWith("value")||R==="indeterminate")||bt(R)&&!lt(R)||R[0]===".")&&s(d,R,null,D[R],void 0,void 0,I);else D.onClick&&s(d,"onClick",null,D.onClick,void 0,void 0,I);let U;(U=D&&D.onVnodeBeforeMount)&&be(U,I,v),ne&&Ie(v,null,I,"beforeMount"),((U=D&&D.onVnodeMounted)||ne||L)&&pr(()=>{U&&be(U,I,v),L&&he.enter(d),ne&&Ie(v,null,I,"mounted")},S)}return d.nextSibling},T=(d,v,I,S,F,k,q)=>{q=q||!!v.dynamicChildren;const D=v.children,J=D.length;let re=!1;for(let ne=0;ne{const{slotScopeIds:q}=v;q&&(F=F?F.concat(q):q);const D=i(d),J=T(o(d),v,D,I,S,F,k);return J&&Mt(J)&&J.data==="]"?o(v.anchor=J):(Ke=!0,f(v.anchor=a("]"),D,J),J)},$=(d,v,I,S,F,k)=>{if(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Xe(`Hydration node mismatch: +- rendered on server:`,d,d.nodeType===3?"(text)":Mt(d)&&d.data==="["?"(start of fragment)":"",` +- expected on client:`,v.type),v.el=null,k){const J=B(d);for(;;){const re=o(d);if(re&&re!==J)l(re);else break}}const q=o(d),D=i(d);return l(d),n(null,v,D,q,I,S,pn(D),F),q},B=(d,v="[",I="]")=>{let S=0;for(;d;)if(d=o(d),d&&Mt(d)&&(d.data===v&&S++,d.data===I)){if(S===0)return o(d);S--}return d},Y=(d,v,I)=>{const S=v.parentNode;S&&S.replaceChild(d,v);let F=I;for(;F;)F.vnode.el===v&&(F.vnode.el=F.subTree.el=d),F=F.parent},G=d=>d.nodeType===1&&d.tagName.toLowerCase()==="template";return[h,g]}function cl(){typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__!="boolean"&&(Fn().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const ge=pr;function fl(e){return ul(e,ll)}function ul(e,t){cl();const n=Fn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:f,setText:a,setElementText:h,parentNode:g,nextSibling:y,setScopeId:T=me,insertStaticContent:O}=e,$=(c,u,p,_=null,m=null,w=null,C=void 0,x=null,E=!!u.dynamicChildren)=>{if(c===u)return;c&&!Ht(c,u)&&(_=jt(c),Se(c,m,w,!0),c=null),u.patchFlag===-2&&(E=!1,u.dynamicChildren=null);const{type:b,ref:A,shapeFlag:M}=u;switch(b){case pt:B(c,u,p,_);break;case We:Y(c,u,p,_);break;case $t:c==null&&G(u,p,_,C);break;case ue:re(c,u,p,_,m,w,C,x,E);break;default:M&1?I(c,u,p,_,m,w,C,x,E):M&6?ne(c,u,p,_,m,w,C,x,E):(M&64||M&128)&&b.process(c,u,p,_,m,w,C,x,E,nt)}A!=null&&m&&dn(A,c&&c.ref,w,u||c,!u)},B=(c,u,p,_)=>{if(c==null)s(u.el=l(u.children),p,_);else{const m=u.el=c.el;u.children!==c.children&&a(m,u.children)}},Y=(c,u,p,_)=>{c==null?s(u.el=f(u.children||""),p,_):u.el=c.el},G=(c,u,p,_)=>{[c.el,c.anchor]=O(c.children,u,p,_,c.el,c.anchor)},d=({el:c,anchor:u},p,_)=>{let m;for(;c&&c!==u;)m=y(c),s(c,p,_),c=m;s(u,p,_)},v=({el:c,anchor:u})=>{let p;for(;c&&c!==u;)p=y(c),r(c),c=p;r(u)},I=(c,u,p,_,m,w,C,x,E)=>{u.type==="svg"?C="svg":u.type==="math"&&(C="mathml"),c==null?S(u,p,_,m,w,C,x,E):q(c,u,m,w,C,x,E)},S=(c,u,p,_,m,w,C,x)=>{let E,b;const{props:A,shapeFlag:M,transition:P,dirs:H}=c;if(E=c.el=i(c.type,w,A&&A.is,A),M&8?h(E,c.children):M&16&&k(c.children,E,null,_,m,fs(c,w),C,x),H&&Ie(c,null,_,"created"),F(E,c,c.scopeId,C,_),A){for(const z in A)z!=="value"&&!lt(z)&&o(E,z,null,A[z],w,c.children,_,m,$e);"value"in A&&o(E,"value",null,A.value,w),(b=A.onVnodeBeforeMount)&&be(b,_,c)}H&&Ie(c,null,_,"beforeMount");const V=$r(m,P);V&&P.beforeEnter(E),s(E,u,p),((b=A&&A.onVnodeMounted)||V||H)&&ge(()=>{b&&be(b,_,c),V&&P.enter(E),H&&Ie(c,null,_,"mounted")},m)},F=(c,u,p,_,m)=>{if(p&&T(c,p),_)for(let w=0;w<_.length;w++)T(c,_[w]);if(m){let w=m.subTree;if(u===w){const C=m.vnode;F(c,C,C.scopeId,C.slotScopeIds,m.parent)}}},k=(c,u,p,_,m,w,C,x,E=0)=>{for(let b=E;b{const x=u.el=c.el;let{patchFlag:E,dynamicChildren:b,dirs:A}=u;E|=c.patchFlag&16;const M=c.props||Z,P=u.props||Z;let H;if(p&&Qe(p,!1),(H=P.onVnodeBeforeUpdate)&&be(H,p,u,c),A&&Ie(u,c,p,"beforeUpdate"),p&&Qe(p,!0),b?D(c.dynamicChildren,b,x,p,_,fs(u,m),w):C||R(c,u,x,null,p,_,fs(u,m),w,!1),E>0){if(E&16)J(x,u,M,P,p,_,m);else if(E&2&&M.class!==P.class&&o(x,"class",null,P.class,m),E&4&&o(x,"style",M.style,P.style,m),E&8){const V=u.dynamicProps;for(let z=0;z{H&&be(H,p,u,c),A&&Ie(u,c,p,"updated")},_)},D=(c,u,p,_,m,w,C)=>{for(let x=0;x{if(p!==_){if(p!==Z)for(const x in p)!lt(x)&&!(x in _)&&o(c,x,p[x],null,C,u.children,m,w,$e);for(const x in _){if(lt(x))continue;const E=_[x],b=p[x];E!==b&&x!=="value"&&o(c,x,b,E,C,u.children,m,w,$e)}"value"in _&&o(c,"value",p.value,_.value,C)}},re=(c,u,p,_,m,w,C,x,E)=>{const b=u.el=c?c.el:l(""),A=u.anchor=c?c.anchor:l("");let{patchFlag:M,dynamicChildren:P,slotScopeIds:H}=u;H&&(x=x?x.concat(H):H),c==null?(s(b,p,_),s(A,p,_),k(u.children||[],p,A,m,w,C,x,E)):M>0&&M&64&&P&&c.dynamicChildren?(D(c.dynamicChildren,P,p,m,w,C,x),(u.key!=null||m&&u===m.subTree)&&us(c,u,!0)):R(c,u,p,A,m,w,C,x,E)},ne=(c,u,p,_,m,w,C,x,E)=>{u.slotScopeIds=x,c==null?u.shapeFlag&512?m.ctx.activate(u,p,_,C,E):he(u,p,_,m,w,C,E):de(c,u,E)},he=(c,u,p,_,m,w,C)=>{const x=c.component=wl(c,_,m);if(Qn(c)&&(x.ctx.renderer=nt),El(x),x.asyncDep){if(m&&m.registerDep(x,L),!c.el){const E=x.subTree=ee(We);Y(null,E,u,p)}}else L(x,c,u,p,m,w,C)},de=(c,u,p)=>{const _=u.component=c.component;if(Ci(c,u,p))if(_.asyncDep&&!_.asyncResolved){U(_,u,p);return}else _.next=u,gi(_.update),_.effect.dirty=!0,_.update();else u.el=c.el,_.vnode=u},L=(c,u,p,_,m,w,C)=>{const x=()=>{if(c.isMounted){let{next:A,bu:M,u:P,parent:H,vnode:V}=c;{const st=Lr(c);if(st){A&&(A.el=V.el,U(c,A,C)),st.asyncDep.then(()=>{c.isUnmounted||x()});return}}let z=A,X;Qe(c,!1),A?(A.el=V.el,U(c,A,C)):A=V,M&&Ln(M),(X=A.props&&A.props.onVnodeBeforeUpdate)&&be(X,H,A,V),Qe(c,!0);const se=zn(c),ye=c.subTree;c.subTree=se,$(ye,se,g(ye.el),jt(ye),c,m,w),A.el=se.el,z===null&&Ti(c,se.el),P&&ge(P,m),(X=A.props&&A.props.onVnodeUpdated)&&ge(()=>be(X,H,A,V),m)}else{let A;const{el:M,props:P}=u,{bm:H,m:V,parent:z}=c,X=At(u);if(Qe(c,!1),H&&Ln(H),!X&&(A=P&&P.onVnodeBeforeMount)&&be(A,z,u),Qe(c,!0),M&&Sn){const se=()=>{c.subTree=zn(c),Sn(M,c.subTree,c,m,null)};X?u.type.__asyncLoader().then(()=>!c.isUnmounted&&se()):se()}else{const se=c.subTree=zn(c);$(null,se,p,_,c,m,w),u.el=se.el}if(V&&ge(V,m),!X&&(A=P&&P.onVnodeMounted)){const se=u;ge(()=>be(A,z,se),m)}(u.shapeFlag&256||z&&At(z.vnode)&&z.vnode.shapeFlag&256)&&c.a&&ge(c.a,m),c.isMounted=!0,u=p=_=null}},E=c.effect=new Nn(x,me,()=>sn(b),c.scope),b=c.update=()=>{E.dirty&&E.run()};b.id=c.uid,Qe(c,!0),b()},U=(c,u,p)=>{u.component=c;const _=c.vnode.props;c.vnode=u,c.next=null,tl(c,u.props,_,p),rl(c,u.children,p),ke(),cr(c),Ve()},R=(c,u,p,_,m,w,C,x,E=!1)=>{const b=c&&c.children,A=c?c.shapeFlag:0,M=u.children,{patchFlag:P,shapeFlag:H}=u;if(P>0){if(P&128){tt(b,M,p,_,m,w,C,x,E);return}else if(P&256){Ae(b,M,p,_,m,w,C,x,E);return}}H&8?(A&16&&$e(b,m,w),M!==b&&h(p,M)):A&16?H&16?tt(b,M,p,_,m,w,C,x,E):$e(b,m,w,!0):(A&8&&h(p,""),H&16&&k(M,p,_,m,w,C,x,E))},Ae=(c,u,p,_,m,w,C,x,E)=>{c=c||rt,u=u||rt;const b=c.length,A=u.length,M=Math.min(b,A);let P;for(P=0;PA?$e(c,m,w,!0,!1,M):k(u,p,_,m,w,C,x,E,M)},tt=(c,u,p,_,m,w,C,x,E)=>{let b=0;const A=u.length;let M=c.length-1,P=A-1;for(;b<=M&&b<=P;){const H=c[b],V=u[b]=E?qe(u[b]):Te(u[b]);if(Ht(H,V))$(H,V,p,null,m,w,C,x,E);else break;b++}for(;b<=M&&b<=P;){const H=c[M],V=u[P]=E?qe(u[P]):Te(u[P]);if(Ht(H,V))$(H,V,p,null,m,w,C,x,E);else break;M--,P--}if(b>M){if(b<=P){const H=P+1,V=HP)for(;b<=M;)Se(c[b],m,w,!0),b++;else{const H=b,V=b,z=new Map;for(b=V;b<=P;b++){const _e=u[b]=E?qe(u[b]):Te(u[b]);_e.key!=null&&z.set(_e.key,b)}let X,se=0;const ye=P-V+1;let st=!1,Cs=0;const _t=new Array(ye);for(b=0;b=ye){Se(_e,m,w,!0);continue}let Oe;if(_e.key!=null)Oe=z.get(_e.key);else for(X=V;X<=P;X++)if(_t[X-V]===0&&Ht(_e,u[X])){Oe=X;break}Oe===void 0?Se(_e,m,w,!0):(_t[Oe-V]=b+1,Oe>=Cs?Cs=Oe:st=!0,$(_e,u[Oe],p,null,m,w,C,x,E),se++)}const Ts=st?al(_t):rt;for(X=Ts.length-1,b=ye-1;b>=0;b--){const _e=V+b,Oe=u[_e],As=_e+1{const{el:w,type:C,transition:x,children:E,shapeFlag:b}=c;if(b&6){Ye(c.component.subTree,u,p,_);return}if(b&128){c.suspense.move(u,p,_);return}if(b&64){C.move(c,u,p,nt);return}if(C===ue){s(w,u,p);for(let M=0;Mx.enter(w),m);else{const{leave:M,delayLeave:P,afterLeave:H}=x,V=()=>s(w,u,p),z=()=>{M(w,()=>{V(),H&&H()})};P?P(w,V,z):z()}else s(w,u,p)},Se=(c,u,p,_=!1,m=!1)=>{const{type:w,props:C,ref:x,children:E,dynamicChildren:b,shapeFlag:A,patchFlag:M,dirs:P}=c;if(x!=null&&dn(x,null,p,c,!0),A&256){u.ctx.deactivate(c);return}const H=A&1&&P,V=!At(c);let z;if(V&&(z=C&&C.onVnodeBeforeUnmount)&&be(z,u,c),A&6)mo(c.component,p,_);else{if(A&128){c.suspense.unmount(p,_);return}H&&Ie(c,null,u,"beforeUnmount"),A&64?c.type.remove(c,u,p,m,nt,_):b&&(w!==ue||M>0&&M&64)?$e(b,u,p,!1,!0):(w===ue&&M&(128|256)||!m&&A&16)&&$e(E,u,p),_&&ws(c)}(V&&(z=C&&C.onVnodeUnmounted)||H)&&ge(()=>{z&&be(z,u,c),H&&Ie(c,null,u,"unmounted")},p)},ws=c=>{const{type:u,el:p,anchor:_,transition:m}=c;if(u===ue){_o(p,_);return}if(u===$t){v(c);return}const w=()=>{r(p),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:C,delayLeave:x}=m,E=()=>C(p,w);x?x(c.el,w,E):E()}else w()},_o=(c,u)=>{let p;for(;c!==u;)p=y(c),r(c),c=p;r(u)},mo=(c,u,p)=>{const{bum:_,scope:m,update:w,subTree:C,um:x}=c;_&&Ln(_),m.stop(),w&&(w.active=!1,Se(C,c,u,p)),x&&ge(x,u),ge(()=>{c.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},$e=(c,u,p,_=!1,m=!1,w=0)=>{for(let C=w;Cc.shapeFlag&6?jt(c.component.subTree):c.shapeFlag&128?c.suspense.next():y(c.anchor||c.el);let Tn=!1;const Es=(c,u,p)=>{c==null?u._vnode&&Se(u._vnode,null,null,!0):$(u._vnode||null,c,u,null,null,null,p),Tn||(Tn=!0,cr(),rn(),Tn=!1),u._vnode=c},nt={p:$,um:Se,m:Ye,r:ws,mt:he,mc:k,pc:R,pbc:D,n:jt,o:e};let An,Sn;return t&&([An,Sn]=t(nt)),{render:Es,hydrate:An,createApp:Zi(Es,An)}}function fs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Qe({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function $r(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function us(e,t,n=!1){const s=e.children,r=t.children;if(N(s)&&N(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Lr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Lr(t)}const hl=e=>e.__isTeleport,It=e=>e&&(e.disabled||e.disabled===""),Fr=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,Hr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,as=(e,t)=>{const n=e&&e.to;return te(n)?t?t(n):null:n},dl={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,f,a){const{mc:h,pc:g,pbc:y,o:{insert:T,querySelector:O,createText:$,createComment:B}}=a,Y=It(t.props);let{shapeFlag:G,children:d,dynamicChildren:v}=t;if(e==null){const I=t.el=$(""),S=t.anchor=$("");T(I,n,s),T(S,n,s);const F=t.target=as(t.props,O),k=t.targetAnchor=$("");F&&(T(k,F),i==="svg"||Fr(F)?i="svg":(i==="mathml"||Hr(F))&&(i="mathml"));const q=(D,J)=>{G&16&&h(d,D,J,r,o,i,l,f)};Y?q(n,S):F&&q(F,k)}else{t.el=e.el;const I=t.anchor=e.anchor,S=t.target=e.target,F=t.targetAnchor=e.targetAnchor,k=It(e.props),q=k?n:S,D=k?I:F;if(i==="svg"||Fr(S)?i="svg":(i==="mathml"||Hr(S))&&(i="mathml"),v?(y(e.dynamicChildren,v,q,r,o,i,l),us(e,t,!0)):f||g(e,t,q,D,r,o,i,l,!1),Y)k?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):gn(t,n,I,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const J=t.target=as(t.props,O);J&&gn(t,J,null,a,0)}else k&&gn(t,S,F,a,1)}Nr(t)},remove(e,t,n,s,{um:r,o:{remove:o}},i){const{shapeFlag:l,children:f,anchor:a,targetAnchor:h,target:g,props:y}=e;if(g&&o(h),i&&o(a),l&16){const T=i||!It(y);for(let O=0;O0?Ee||rt:null,gl(),Ft>0&&Ee&&Ee.push(e),e}function Ne(e,t,n,s,r,o){return jr(ae(e,t,n,s,r,o,!0))}function kr(e,t,n,s,r){return jr(ee(e,t,n,s,r,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Ht(e,t){return e.type===t.type&&e.key===t.key}const _n="__vInternal",Vr=({key:e})=>e!=null?e:null,mn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?te(e)||ce(e)||j(e)?{i:we,r:e,k:t,f:!!n}:e:null);function ae(e,t=null,n=null,s=0,r=null,o=e===ue?0:1,i=!1,l=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vr(t),ref:t&&mn(t),scopeId:ln,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:we};return l?(ps(f,n),o&128&&e.normalize(f)):n&&(f.shapeFlag|=te(n)?8:16),Ft>0&&!i&&Ee&&(f.patchFlag>0||o&6)&&f.patchFlag!==32&&Ee.push(f),f}const ee=_l;function _l(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Ai)&&(e=We),hs(e)){const l=gt(e,t,!0);return n&&ps(l,n),Ft>0&&!o&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag|=-2,l}if(Pl(e)&&(e=e.__vccOpts),t){t=ml(t);let{class:l,style:f}=t;l&&!te(l)&&(t.class=ft(l)),Q(f)&&(er(f)&&!N(f)&&(f=oe({},f)),t.style=Kt(f))}const i=te(e)?1:Oi(e)?128:hl(e)?64:Q(e)?4:j(e)?2:0;return ae(e,t,n,s,r,i,o,!0)}function ml(e){return e?er(e)||_n in e?oe({},e):e:null}function gt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?yl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Vr(l),ref:t&&t.ref?n&&r?N(r)?r.concat(mn(t)):[r,mn(t)]:mn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ue?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&>(e.ssContent),ssFallback:e.ssFallback&>(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ds(e=" ",t=0){return ee(pt,null,e,t)}function pf(e,t){const n=ee($t,null,e);return n.staticCount=t,n}function bl(e="",t=!1){return t?(Ce(),kr(We,null,e)):ee(We,null,e)}function Te(e){return e==null||typeof e=="boolean"?ee(We):N(e)?ee(ue,null,e.slice()):typeof e=="object"?qe(e):ee(pt,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:gt(e)}function ps(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(N(t))n=16;else if(typeof t=="object")if(s&(1|64)){const r=t.default;r&&(r._c&&(r._d=!1),ps(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(_n in t)?t._ctx=we:r===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else j(t)?(t={default:t,_ctx:we},n=32):(t=String(t),s&64?(n=16,t=[ds(t)]):n=8);e.children=t,e.shapeFlag|=n}function yl(...e){const t={};for(let n=0;n{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};bn=t("__VUE_INSTANCE_SETTERS__",n=>ie=n),gs=t("__VUE_SSR_SETTERS__",n=>Dt=n)}const Nt=e=>{const t=ie;return bn(e),e.scope.on(),()=>{e.scope.off(),bn(t)}},Ur=()=>{ie&&ie.scope.off(),bn(null)};function Br(e){return e.vnode.shapeFlag&4}let Dt=!1;function El(e,t=!1){t&&gs(t);const{props:n,children:s}=e.vnode,r=Br(e);el(e,n,r,t),sl(e,s);const o=r?Cl(e,t):void 0;return t&&gs(!1),o}function Cl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=tn(new Proxy(e.ctx,Wi));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Al(e):null,o=Nt(e);ke();const i=Fe(s,e,0,[e.props,r]);if(Ve(),o(),Rs(i)){if(i.then(Ur,Ur),t)return i.then(l=>{Kr(e,l,t)}).catch(l=>{xt(l,e,0)});e.asyncDep=i}else Kr(e,i,t)}else qr(e,t)}function Kr(e,t,n){j(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Q(t)&&(e.setupState=sr(t)),qr(e,n)}let Wr;function qr(e,t,n){const s=e.type;if(!e.render){if(!t&&Wr&&!s.render){const r=s.template||os(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:f}=s,a=oe(oe({isCustomElement:o,delimiters:l},i),f);s.render=Wr(r,a)}}e.render=s.render||me}{const r=Nt(e);ke();try{qi(e)}finally{Ve(),r()}}}function Tl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return pe(e,"get","$attrs"),t[n]}}))}function Al(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Tl(e)},slots:e.slots,emit:e.emit,expose:t}}function _s(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(sr(tn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in St)return St[n](e)},has(t,n){return n in t||n in St}}))}const Sl=/(?:^|[-_])(\w)/g,Ol=e=>e.replace(Sl,t=>t.toUpperCase()).replace(/[-_]/g,"");function Gr(e,t=!0){return j(e)?e.displayName||e.name:e.name||t&&e.__name}function Yr(e,t,n=!1){let s=Gr(t);if(!s&&t.__file){const r=t.__file.match(/([^/\\]+)\.\w+$/);r&&(s=r[1])}if(!s&&e&&e.parent){const r=o=>{for(const i in o)if(o[i]===t)return i};s=r(e.components||e.parent.type.components)||r(e.appContext.components)}return s?Ol(s):n?"App":"Anonymous"}function Pl(e){return j(e)&&"__vccOpts"in e}const ms=(e,t)=>ri(e,t,Dt);function Jr(e,t,n){const s=arguments.length;return s===2?Q(t)&&!N(t)?hs(t)?ee(e,null,[t]):ee(e,t):ee(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&hs(n)&&(n=[n]),ee(e,t,n))}const Rl="3.4.20";/** +* @vue/runtime-dom v3.4.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Ml="http://www.w3.org/2000/svg",Il="http://www.w3.org/1998/Math/MathML",Ge=typeof document!="undefined"?document:null,zr=Ge&&Ge.createElement("template"),$l={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(Ml,e):t==="mathml"?Ge.createElementNS(Il,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{zr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=zr.content;if(s==="svg"||s==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ll=Symbol("_vtc");function Fl(e,t,n){const s=e[Ll];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Xr=Symbol("_vod"),Hl=Symbol("_vsh"),Nl=Symbol(""),Dl=/(^|;)\s*display\s*:/;function jl(e,t,n){const s=e.style,r=te(n);let o=!1;if(n&&!r){if(t)if(te(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&yn(s,l,"")}else for(const i in t)n[i]==null&&yn(s,i,"");for(const i in n)i==="display"&&(o=!0),yn(s,i,n[i])}else if(r){if(t!==n){const i=s[Nl];i&&(n+=";"+i),s.cssText=n,o=Dl.test(n)}}else t&&e.removeAttribute("style");Xr in e&&(e[Xr]=o?s.display:"",e[Hl]&&(s.display="none"))}const Zr=/\s*!important$/;function yn(e,t,n){if(N(n))n.forEach(s=>yn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=kl(e,t);Zr.test(n)?e.setProperty(ct(s),n.replace(Zr,""),"important"):e[s]=n}}const Qr=["Webkit","Moz","ms"],bs={};function kl(e,t){const n=bs[t];if(n)return n;let s=Pe(t);if(s!=="filter"&&s in e)return bs[t]=s;s=Ut(s);for(let r=0;rys||(Gl.then(()=>ys=0),ys=Date.now());function Jl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;xe(zl(s,n.value),t,5,[s])};return n.value=e,n.attached=Yl(),n}function zl(e,t){if(N(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const so=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xl=(e,t,n,s,r,o,i,l,f)=>{const a=r==="svg";t==="class"?Fl(e,s,a):t==="style"?jl(e,n,s):bt(t)?Rn(t)||Wl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zl(e,t,s,a))?Ul(e,t,s,o,i,l,f):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Vl(e,t,s,a))};function Zl(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&so(t)&&j(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return so(t)&&te(n)?!1:t in e}const Ql=oe({patchProp:Xl},$l);let vs,ro=!1;function ec(){return vs=ro?vs:fl(Ql),ro=!0,vs}const tc=(...e)=>{const t=ec().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=sc(s);if(r)return n(r,!0,nc(r))},t};function nc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function sc(e){return te(e)?document.querySelector(e):e}const et=typeof window!="undefined";function rc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function oo(e){let t=e.replace(/\.html$/,"");if(t.endsWith("/")&&(t+="index"),et){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const io=Symbol(),lo="http://a.com",oc=()=>({path:"/",component:null,data:null});function ic(e,t){const n=Zt(oc()),s=typeof window!="undefined";function r(l=s?location.href:"/"){const f=new URL(l,lo);return!f.pathname.endsWith("/")&&!f.pathname.endsWith(".html")&&(f.pathname+=".html",l=f.pathname+f.search+f.hash),s&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l)),i(l)}let o=null;async function i(l,f=0){const a=new URL(l,lo),h=o=a.pathname;try{let g=e(h);if("then"in g&&typeof g.then=="function"&&(g=await g),o===h){o=null;const{default:y,__pageData:T}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=tn(y),n.data=Qt(JSON.parse(T)),s&&ir(()=>{if(a.hash&&!f){const O=document.querySelector(decodeURIComponent(a.hash));if(O){fo(O,a.hash);return}}window.scrollTo(0,f)})}}catch(g){g.message.match(/fetch/)||console.error(g),o===h&&(o=null,n.path=h,n.component=t?tn(t):null)}}return s&&(window.addEventListener("click",l=>{const f=l.target.closest("a");if(f){const{href:a,protocol:h,hostname:g,pathname:y,hash:T,target:O}=f,$=window.location,B=y.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&O!=="_blank"&&h===$.protocol&&g===$.hostname&&!(B&&B[0]!==".html")&&(l.preventDefault(),y===$.pathname?T&&T!==$.hash&&(history.pushState(null,"",T),fo(f,T,f.classList.contains("header-anchor"))):r(a))}},{capture:!0}),window.addEventListener("popstate",l=>{i(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),{route:n,go:r}}function co(){const e=Rt(io);if(!e)throw new Error("useRouter() is called without provider.");return e}function vn(){return co().route}function fo(e,t,n=!1){const s=document.querySelector(".nav-bar").offsetHeight,r=e.classList.contains(".header-anchor")?e:document.querySelector(decodeURIComponent(t));if(r){const o=r.offsetTop-s-15;!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})}}const lc=Tt({name:"VitePressContent",setup(){const e=vn();return()=>e.component?Jr(e.component):null}}),cc=Tt({setup(e,{slots:t}){const n=Re(!1);return es(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function fc(e,t,n,s){Object.defineProperties(e.config.globalProperties,{$site:{get(){return t.value}},$siteByRoute:{get(){return n.value}},$themeConfig:{get(){return n.value.themeConfig}},$page:{get(){return s.value}},$frontmatter:{get(){return s.value.frontmatter}},$lang:{get(){return n.value.lang}},$localePath:{get(){const{locales:r}=t.value,{lang:o}=n.value,i=Object.keys(r).find(l=>r[l].lang===o);return r&&i||"/"}},$title:{get(){return s.value.title?s.value.title+" | "+n.value.title:n.value.title}},$description:{get(){return s.value.description||n.value.description}},$withBase:{value(r){return rc(t.value.base,r)}}})}function uc(e){e.component("Content",lc),e.component("ClientOnly",cc),e.component("Debug",()=>null)}var ac='{"lang":"en-US","title":"canicjusz in English","description":"A VitePress site","base":"/","head":[],"themeConfig":{},"locales":{"/pages/Esperanto/":{"lang":"eo","title":"canicjusz Esperante"},"/pages/Polski/":{"lang":"pl","title":"canicjusz po polsku"}},"customData":{"pages":[{"type":"file","name":"Home","href":"/"},{"type":"dir","name":"English","content":[{"type":"file","name":"Portfolio - Jan Michalak","href":"/pages/English/portfolio"}]},{"type":"dir","name":"Esperanto","content":[{"type":"dir","name":"Teknologio","content":[{"type":"file","name":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","href":"/pages/Esperanto/Teknologio/create-esperanto-layout-windows"}]},{"type":"dir","name":"Tradukoj","content":[{"type":"file","name":"Sole en Lvivo","href":"/pages/Esperanto/Tradukoj/sole-en-lvivo"},{"type":"file","name":"Teda tempo por legiano","href":"/pages/Esperanto/Tradukoj/teda-tempo-por-legiano"}]}]},{"type":"dir","name":"Polski","content":[{"type":"file","name":"Portfolio - Jan Michalak","href":"/pages/Polski/portfolio"}]}],"links":{"portfolio":["/pages/English/portfolio","/pages/Polski/portfolio"],"create-esperanto-layout-windows":["/pages/Esperanto/Teknologio/create-esperanto-layout-windows"],"sole-en-lvivo":["/pages/Esperanto/Tradukoj/sole-en-lvivo"],"teda-tempo-por-legiano":["/pages/Esperanto/Tradukoj/teda-tempo-por-legiano"]}}}';const xn=Re(hc(ac));function uo(){return xn}function hc(e){return Qt(JSON.parse(e))}const dc=typeof window!="undefined";function pc(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function ao(e,t){const n=pc(t,Object.keys(e));return n?e[n]:void 0}function gc(e,t){t=_c(e,t);const n=ao(e.locales||{},t)||{},s=ao(e.themeConfig&&e.themeConfig.locales||{},t)||{};return On(mt(mt({},e),n),{themeConfig:On(mt(mt({},e.themeConfig),s),{locales:{}}),locales:{}})}function _c(e,t){if(!dc)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}function mc(e){const t=e||vn();return ms(()=>gc(xn.value,t.path))}function bc(e){const t=e||vn();return ms(()=>t.data)}function yc(e,t){const n=Array.from(document.querySelectorAll("meta"));let s=!0;const r=o=>{if(s){s=!1;return}n.forEach(i=>document.head.removeChild(i)),n.length=0,o&&o.length&&o.forEach(i=>{const l=vc(i);document.head.appendChild(l),n.push(l)})};Mi(()=>{const o=e.data,i=t.value,l=o&&o.title,f=o&&o.description,a=o&&o.frontmatter.head;document.title=(l?l+" | ":"")+i.title,r([["meta",{charset:"utf-8"}],["meta",{name:"viewport",content:"width=device-width,initial-scale=1"}],["meta",{name:"description",content:f||i.description}],...i.head,...a&&wc(a)||[]])})}function vc([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function xc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function wc(e){return e.filter(t=>!xc(t))}const Ec="modulepreload",ho={},Cc="/",Tc=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Cc}${s}`,s in ho)return;ho[s]=!0;const r=s.endsWith(".css"),o=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${o}`))return;const i=document.createElement("link");if(i.rel=r?"stylesheet":Ec,r||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),r)return new Promise((l,f)=>{i.addEventListener("load",l),i.addEventListener("error",f)})})).then(()=>t())};var wn=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const Ac=$i(()=>Tc(()=>import("./Element.b0b3cbd3.js"),[])),Sc={components:{Element:Ac},props:{list:Array,level:{type:Number,default:2}},setup(){return{isClicked:Re(!1)}}},Oc={class:"navbar__list"};function Pc(e,t,n,s,r,o){const i=fn("Element");return Ce(),Ne("ul",Oc,[(Ce(!0),Ne(ue,null,mr(n.list,l=>(Ce(),kr(i,{key:l.type+l.name,page:l,level:n.level},null,8,["page","level"]))),128))])}var po=wn(Sc,[["render",Pc]]),gf=Object.freeze(Object.defineProperty({__proto__:null,default:po},Symbol.toStringTag,{value:"Module"}));const Rc={},Mc={class:"hamburger"},Ic=ae("div",{class:"hamburger__cheese"},null,-1),$c=ae("div",{class:"hamburger__meat"},null,-1),Lc=ae("div",{class:"hamburger__bun"},null,-1),Fc=[Ic,$c,Lc];function Hc(e,t){return Ce(),Ne("div",Mc,Fc)}var Nc=wn(Rc,[["render",Hc]]);function Dc(){document.querySelectorAll(".hamburger--clicked").forEach(t=>t.click())}const jc=e=>(yi("data-v-6e0ba27d"),e=e(),vi(),e),kc=jc(()=>ae("p",{class:"title"},"Debug",-1)),Vc={class:"block"},Uc={class:"block"},Bc={class:"block"};Tt({__name:"Debug",setup(e){const t=Re(null),n=Re(!1);return Ct(n,s=>{s===!1&&(t.value.scrollTop=0)}),(s,r)=>(Ce(),Ne("div",{class:ft(["debug",{open:n.value}]),ref_key:"el",ref:t,onClick:r[0]||(r[0]=o=>n.value=!n.value)},[kc,ae("pre",Vc,"$page "+Wt(s.$page),1),ae("pre",Uc,"$siteByRoute "+Wt(s.$siteByRoute),1),ae("pre",Bc,"$site "+Wt(s.$site),1)],2))}});const Kc={components:{Navbar:po,Hamburger:Nc},setup(){const e=uo(),{pages:t}=e.value.customData,n=Re(!1);return{pages:t,isClicked:n,hideNavbars:Dc}}},Wc={class:"navbar-container"},qc={class:"content-container"};function Gc(e,t,n,s,r,o){const i=fn("Hamburger"),l=fn("Navbar"),f=fn("Content");return Ce(),Ne(ue,null,[ae("nav",null,[ae("div",Wc,[ee(i,{class:ft({"hamburger--clicked":s.isClicked}),onClick:t[0]||(t[0]=a=>s.isClicked=!s.isClicked)},null,8,["class"]),ae("div",{class:ft(["navbar navbar-first",{"navbar--show":s.isClicked,"navbar--unclickable":!s.isClicked}])},[ee(l,{list:s.pages},null,8,["list"])],2)])]),ae("main",{onClick:t[1]||(t[1]=(...a)=>s.hideNavbars&&s.hideNavbars(...a))},[ae("div",qc,[ee(f)])])],64)}var Yc=wn(Kc,[["render",Gc]]);const Jc=Tt({__name:"404",setup(e){return window.location.replace("https://canicjusz.github.io/404.html"),()=>{}}});const zc={setup(){const e=uo(),{links:t}=e.value.customData,r=co().route.data.relativePath.slice(0,-3),o=Re("/"+r),i=r.split("/").pop();return{translations:t[i].map(a=>({lang:a.split("/")[2],link:a})),selected:o}}},Xc={class:"language__selection"},Zc={key:0},Qc=["href"];function ef(e,t,n,s,r,o){return Ce(),Ne("div",Xc,[ds(" Available in: "),(Ce(!0),Ne(ue,null,mr(s.translations,(i,l)=>(Ce(),Ne(ue,null,[l!==0?(Ce(),Ne("span",Zc," | ")):bl("v-if",!0),ae("a",{href:i.link,style:Kt({color:s.selected===i.link?"red":"#476b8f"})},Wt(i.lang),13,Qc)],64))),256))])}var tf=wn(zc,[["render",ef]]),En={Layout:Yc,NotFound:Jc,enhanceApp({app:e}){e.component("SelectLanguage",tf)}};const xs=new Set,go=()=>document.createElement("link"),nf=e=>{const t=go();t.rel="prefetch",t.href=e,document.head.appendChild(t)},sf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Cn;const rf=et&&(Cn=go())&&Cn.relList&&Cn.relList.supports&&Cn.relList.supports("prefetch")?nf:sf;function of(){if(!et||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:f}=l;if(!xs.has(f)){xs.add(f);const a=oo(f);rf(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{target:i,hostname:l,pathname:f}=o,a=f.match(/\.\w+$/);a&&a[0]!==".html"||i!=="_blank"&&l===location.hostname&&(f!==location.pathname?n.observe(o):xs.add(f))})})};es(s);const r=vn();Ct(()=>r.path,s),ts(()=>{n&&n.disconnect()})}const lf=En.NotFound||(()=>"404 Not Found"),cf={name:"VitePressApp",setup(){return of(),()=>Jr(En.Layout)}};function ff(){const e=af(),t=uf();t.provide(io,e);const n=mc(e.route),s=bc(e.route);return et&&yc(e.route,n),fc(t,xn,n,s),uc(t),En.enhanceApp&&En.enhanceApp({app:t,router:e,siteData:xn}),{app:t,router:e}}function uf(){return tc(cf)}function af(){let e=et,t;return ic(n=>{let s=oo(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),et?(e=!1,import(s)):require(s)},lf)}if(et){const{app:e,router:t}=ff();t.go().then(()=>{e.mount("#app")})}export{ue as F,Nc as H,gf as N,tf as S,df as T,wn as _,ae as a,vi as b,Ne as c,ff as createApp,Tt as d,ee as e,pf as f,mr as g,bl as h,ds as i,$i as j,Tc as k,Dc as l,fn as m,ft as n,Ce as o,yi as p,kr as q,Re as r,Kt as s,Wt as t,xi as w}; diff --git a/docs/assets/app.b9d21ddb.js b/docs/assets/app.b9d21ddb.js deleted file mode 100644 index 0b4980c..0000000 --- a/docs/assets/app.b9d21ddb.js +++ /dev/null @@ -1,28 +0,0 @@ -var Ao=Object.defineProperty,So=Object.defineProperties;var Oo=Object.getOwnPropertyDescriptors;var Rs=Object.getOwnPropertySymbols;var Po=Object.prototype.hasOwnProperty,Mo=Object.prototype.propertyIsEnumerable;var Ls=(e,t,n)=>t in e?Ao(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yt=(e,t)=>{for(var n in t||(t={}))Po.call(t,n)&&Ls(e,n,t[n]);if(Rs)for(var n of Rs(t))Mo.call(t,n)&&Ls(e,n,t[n]);return e},Rn=(e,t)=>So(e,Oo(t));/** -* @vue/shared v3.4.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Ln(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const Z={},it=[],ye=()=>{},Io=()=>!1,bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$n=e=>e.startsWith("onUpdate:"),oe=Object.assign,Fn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ro=Object.prototype.hasOwnProperty,K=(e,t)=>Ro.call(e,t),F=Array.isArray,lt=e=>vt(e)==="[object Map]",kt=e=>vt(e)==="[object Set]",$s=e=>vt(e)==="[object Date]",D=e=>typeof e=="function",te=e=>typeof e=="string",Ne=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",Fs=e=>(X(e)||D(e))&&D(e.then)&&D(e.catch),Hs=Object.prototype.toString,vt=e=>Hs.call(e),Lo=e=>vt(e).slice(8,-1),Ns=e=>vt(e)==="[object Object]",Hn=e=>te(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ct=Ln(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ut=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},$o=/-(\w)/g,Oe=Ut(e=>e.replace($o,(t,n)=>n?n.toUpperCase():"")),Fo=/\B([A-Z])/g,ft=Ut(e=>e.replace(Fo,"-$1").toLowerCase()),Bt=Ut(e=>e.charAt(0).toUpperCase()+e.slice(1)),Nn=Ut(e=>e?`on${Bt(e)}`:""),De=(e,t)=>!Object.is(e,t),Kt=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Dn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ds;const jn=()=>Ds||(Ds=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Vn(e){if(F(e)){const t={};for(let n=0;n{if(n){const s=n.split(No);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ut(e){let t="";if(te(e))t=e;else if(F(e))for(let n=0;nqt(n,t))}const Gt=e=>te(e)?e:e==null?"":F(e)||X(e)&&(e.toString===Hs||!D(e.toString))?JSON.stringify(e,Vs,2):String(e),Vs=(e,t)=>t&&t.__v_isRef?Vs(e,t.value):lt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[kn(s,o)+" =>"]=r,n),{})}:kt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:Ne(t)?kn(t):X(t)&&!F(t)&&!Ns(t)?String(t):t,kn=(e,t="")=>{var n;return Ne(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let xe;class Ko{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=xe,!t&&xe&&(this.index=(xe.scopes||(xe.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=xe;try{return xe=this,t()}finally{xe=n}}}on(){xe=this}off(){xe=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),ke()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=je,n=ze;try{return je=!0,ze=this,this._runnings++,ks(this),this.fn()}finally{Us(this),this._runnings--,ze=n,je=t}}stop(){var t;this.active&&(ks(this),Us(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Go(e){return e.value}function ks(e){e._trackId++,e._depsLength=0}function Us(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Gn=new WeakMap,Xe=Symbol(""),Yn=Symbol("");function de(e,t,n){if(je&&ze){let s=Gn.get(e);s||Gn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Gs(()=>s.delete(n))),Ws(ze,r)}}function $e(e,t,n,s,r,o){const i=Gn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&F(e)){const c=Number(s);i.forEach((a,d)=>{(d==="length"||!Ne(d)&&d>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":F(e)?Hn(n)&&l.push(i.get("length")):(l.push(i.get(Xe)),lt(e)&&l.push(i.get(Yn)));break;case"delete":F(e)||(l.push(i.get(Xe)),lt(e)&&l.push(i.get(Yn)));break;case"set":lt(e)&&l.push(i.get(Xe));break}Kn();for(const c of l)c&&qs(c,4);Wn()}const Yo=Ln("__proto__,__v_isRef,__isVue"),Ys=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne)),Js=Jo();function Jo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=W(this);for(let o=0,i=this.length;o{e[t]=function(...n){Ve(),Kn();const s=W(this)[t].apply(this,n);return Wn(),ke(),s}}),e}function zo(e){const t=W(this);return de(t,"has",e),t.hasOwnProperty(e)}class zs{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?fi:rr:o?sr:nr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=F(t);if(!r){if(i&&K(Js,n))return Reflect.get(Js,n,s);if(n==="hasOwnProperty")return zo}const l=Reflect.get(t,n,s);return(Ne(n)?Ys.has(n):Yo(n))||(r||de(t,"get",n),o)?l:ce(l)?i&&Hn(n)?l:l.value:X(l)?r?tn(l):en(l):l}}class Xs extends zs{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=dt(o);if(!nn(s)&&!dt(s)&&(o=W(o),s=W(s)),!F(t)&&ce(o)&&!ce(s))return c?!1:(o.value=s,!0)}const i=F(t)&&Hn(n)?Number(n)e,Yt=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,s=!1){e=e.__v_raw;const r=W(e),o=W(t);n||(De(t,o)&&de(r,"get",t),de(r,"get",o));const{has:i}=Yt(r),l=s?Jn:n?Zn:xt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function zt(e,t=!1){const n=this.__v_raw,s=W(n),r=W(e);return t||(De(e,r)&&de(s,"has",e),de(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Xt(e,t=!1){return e=e.__v_raw,!t&&de(W(e),"iterate",Xe),Reflect.get(e,"size",e)}function Zs(e){e=W(e);const t=W(this);return Yt(t).has.call(t,e)||(t.add(e),$e(t,"add",e,e)),this}function Qs(e,t){t=W(t);const n=W(this),{has:s,get:r}=Yt(n);let o=s.call(n,e);o||(e=W(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?De(t,i)&&$e(n,"set",e,t):$e(n,"add",e,t),this}function er(e){const t=W(this),{has:n,get:s}=Yt(t);let r=n.call(t,e);r||(e=W(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&$e(t,"delete",e,void 0),o}function tr(){const e=W(this),t=e.size!==0,n=e.clear();return t&&$e(e,"clear",void 0,void 0),n}function Zt(e,t){return function(s,r){const o=this,i=o.__v_raw,l=W(i),c=t?Jn:e?Zn:xt;return!e&&de(l,"iterate",Xe),i.forEach((a,d)=>s.call(r,c(a),c(d),o))}}function Qt(e,t,n){return function(...s){const r=this.__v_raw,o=W(r),i=lt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),d=n?Jn:t?Zn:xt;return!t&&de(o,"iterate",c?Yn:Xe),{next(){const{value:g,done:b}=a.next();return b?{value:g,done:b}:{value:l?[d(g[0]),d(g[1])]:d(g),done:b}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ti(){const e={get(o){return Jt(this,o)},get size(){return Xt(this)},has:zt,add:Zs,set:Qs,delete:er,clear:tr,forEach:Zt(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Xt(this)},has:zt,add:Zs,set:Qs,delete:er,clear:tr,forEach:Zt(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Xt(this,!0)},has(o){return zt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Zt(!0,!1)},s={get(o){return Jt(this,o,!0,!0)},get size(){return Xt(this,!0)},has(o){return zt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Qt(o,!1,!1),n[o]=Qt(o,!0,!1),t[o]=Qt(o,!1,!0),s[o]=Qt(o,!0,!0)}),[e,n,t,s]}const[ni,si,ri,oi]=ti();function zn(e,t){const n=t?e?oi:ri:e?si:ni;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(K(n,r)&&r in s?n:s,r,o)}const ii={get:zn(!1,!1)},li={get:zn(!1,!0)},ci={get:zn(!0,!1)},nr=new WeakMap,sr=new WeakMap,rr=new WeakMap,fi=new WeakMap;function ui(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ai(e){return e.__v_skip||!Object.isExtensible(e)?0:ui(Lo(e))}function en(e){return dt(e)?e:Xn(e,!1,Zo,ii,nr)}function di(e){return Xn(e,!1,ei,li,sr)}function tn(e){return Xn(e,!0,Qo,ci,rr)}function Xn(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=ai(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function at(e){return dt(e)?at(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function nn(e){return!!(e&&e.__v_isShallow)}function or(e){return at(e)||dt(e)}function W(e){const t=e&&e.__v_raw;return t?W(t):e}function sn(e){return Object.isExtensible(e)&&Wt(e,"__v_skip",!0),e}const xt=e=>X(e)?en(e):e,Zn=e=>X(e)?tn(e):e;class ir{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Un(()=>t(this._value),()=>rn(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=W(this);return(!t._cacheable||t.effect.dirty)&&De(t._value,t._value=t.effect.run())&&rn(t,4),lr(t),t.effect._dirtyLevel>=2&&rn(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function hi(e,t,n=!1){let s,r;const o=D(e);return o?(s=e,r=ye):(s=e.get,r=e.set),new ir(s,r,o||!r,n)}function lr(e){var t;je&&ze&&(e=W(e),Ws(ze,(t=e.dep)!=null?t:e.dep=Gs(()=>e.dep=void 0,e instanceof ir?e:void 0)))}function rn(e,t=4,n){e=W(e);const s=e.dep;s&&qs(s,t)}function ce(e){return!!(e&&e.__v_isRef===!0)}function Pe(e){return pi(e,!1)}function pi(e,t){return ce(e)?e:new gi(e,t)}class gi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:W(t),this._value=n?t:xt(t)}get value(){return lr(this),this._value}set value(t){const n=this.__v_isShallow||nn(t)||dt(t);t=n?t:W(t),De(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:xt(t),rn(this,4))}}function _i(e){return ce(e)?e.value:e}const mi={get:(e,t,n)=>_i(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ce(r)&&!ce(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function cr(e){return at(e)?e:new Proxy(e,mi)}/** -* @vue/runtime-core v3.4.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const wt=[];function Ze(e,...t){Ve();const n=wt.length?wt[wt.length-1].component:null,s=n&&n.appContext.config.warnHandler,r=yi();if(s)Fe(s,n,11,[e+t.join(""),n&&n.proxy,r.map(({vnode:o})=>`at <${Qr(n,o.type)}>`).join(` -`),r]);else{const o=[`[Vue warn]: ${e}`,...t];r.length&&o.push(` -`,...bi(r)),console.warn(...o)}ke()}function yi(){let e=wt[wt.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function bi(e){const t=[];return e.forEach((n,s)=>{t.push(...s===0?[]:[` -`],...vi(n))}),t}function vi({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,r=` at <${Qr(e.component,e.type,s)}`,o=">"+n;return e.props?[r,...xi(e.props),o]:[r+o]}function xi(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(s=>{t.push(...fr(s,e[s]))}),n.length>3&&t.push(" ..."),t}function fr(e,t,n){return te(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:ce(t)?(t=fr(e,W(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):D(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=W(t),n?t:[`${e}=`,t])}function Fe(e,t,n,s){try{return s?e(...s):e()}catch(r){Ct(r,t,n)}}function we(e,t,n,s){if(D(e)){const o=Fe(e,t,n,s);return o&&Fs(o)&&o.catch(i=>{Ct(i,t,n)}),o}const r=[];for(let o=0;o>>1,r=le[s],o=Tt(r);oMe&&le.splice(t,1)}function Ti(e){F(e)?ht.push(...e):(!Be||!Be.includes(e,e.allowRecurse?Qe+1:Qe))&&ht.push(e),ar()}function dr(e,t,n=Et?Me+1:0){for(;nTt(n)-Tt(s));if(ht.length=0,Be){Be.push(...t);return}for(Be=t,Qe=0;Qee.id==null?1/0:e.id,Ai=(e,t)=>{const n=Tt(e)-Tt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function hr(e){Qn=!1,Et=!0,le.sort(Ai);const t=ye;try{for(Me=0;Mete(T)?T.trim():T)),g&&(r=n.map(Dn))}let l,c=s[l=Nn(t)]||s[l=Nn(Oe(t))];!c&&o&&(c=s[l=Nn(ft(t))]),c&&we(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,we(a,e,6,r)}}function pr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!D(e)){const c=a=>{const d=pr(a,t,!0);d&&(l=!0,oe(i,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(X(e)&&s.set(e,null),null):(F(o)?o.forEach(c=>i[c]=null):oe(i,o),X(e)&&s.set(e,i),i)}function cn(e,t){return!e||!bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),K(e,t[0].toLowerCase()+t.slice(1))||K(e,ft(t))||K(e,t))}let he=null,fn=null;function un(e){const t=he;return he=e,fn=e&&e.type.__scopeId||null,t}function Oi(e){fn=e}function Pi(){fn=null}function Mi(e,t=he,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Ur(-1);const o=un(t);let i;try{i=e(...r)}finally{un(o),s._d&&Ur(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function ns(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:d,renderCache:g,data:b,setupState:T,ctx:O,inheritAttrs:L}=e;let B,Y;const G=un(e);try{if(n.shapeFlag&4){const v=r||s,R=v;B=Ee(d.call(R,v,g,o,T,b,O)),Y=c}else{const v=t;B=Ee(v.length>1?v(o,{attrs:c,slots:l,emit:a}):v(o,null)),Y=t.props?c:Ii(c)}}catch(v){Ft.length=0,Ct(v,e,1),B=ee(We)}let h=B;if(Y&&L!==!1){const v=Object.keys(Y),{shapeFlag:R}=h;v.length&&R&(1|6)&&(i&&v.some($n)&&(Y=Ri(Y,i)),h=_t(h,Y))}return n.dirs&&(h=_t(h),h.dirs=h.dirs?h.dirs.concat(n.dirs):n.dirs),n.transition&&(h.transition=n.transition),B=h,un(G),B}const Ii=e=>{let t;for(const n in e)(n==="class"||n==="style"||bt(n))&&((t||(t={}))[n]=e[n]);return t},Ri=(e,t)=>{const n={};for(const s in e)(!$n(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Li(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?gr(s,i,a):!!i;if(c&8){const d=t.dynamicProps;for(let g=0;ge.__isSuspense;function yr(e,t){t&&t.pendingBranch?F(e)?t.effects.push(...e):t.effects.push(e):Ti(e)}const Di=Symbol.for("v-scx"),ji=()=>It(Di);function Vi(e,t){return ss(e,null,t)}const dn={};function pt(e,t,n){return ss(e,t,n)}function ss(e,t,{immediate:n,deep:s,flush:r,once:o,onTrack:i,onTrigger:l}=Z){if(t&&o){const S=t;t=(...H)=>{S(...H),R()}}const c=ie,a=S=>s===!0?S:et(S,s===!1?1:void 0);let d,g=!1,b=!1;if(ce(e)?(d=()=>e.value,g=nn(e)):at(e)?(d=()=>a(e),g=!0):F(e)?(b=!0,g=e.some(S=>at(S)||nn(S)),d=()=>e.map(S=>{if(ce(S))return S.value;if(at(S))return a(S);if(D(S))return Fe(S,c,2)})):D(e)?t?d=()=>Fe(e,c,2):d=()=>(T&&T(),we(e,c,3,[O])):d=ye,t&&s){const S=d;d=()=>et(S())}let T,O=S=>{T=h.onStop=()=>{Fe(S,c,4),T=h.onStop=void 0}},L;if(jt)if(O=ye,t?n&&we(t,c,3,[d(),b?[]:void 0,O]):d(),r==="sync"){const S=ji();L=S.__watcherHandles||(S.__watcherHandles=[])}else return ye;let B=b?new Array(e.length).fill(dn):dn;const Y=()=>{if(!(!h.active||!h.dirty))if(t){const S=h.run();(s||g||(b?S.some((H,V)=>De(H,B[V])):De(S,B)))&&(T&&T(),we(t,c,3,[S,B===dn?void 0:b&&B[0]===dn?[]:B,O]),B=S)}else h.run()};Y.allowRecurse=!!t;let G;r==="sync"?G=Y:r==="post"?G=()=>pe(Y,c&&c.suspense):(Y.pre=!0,c&&(Y.id=c.uid),G=()=>on(Y));const h=new Un(d,ye,G),v=qo(),R=()=>{h.stop(),v&&Fn(v.effects,h)};return t?n?Y():B=h.run():r==="post"?pe(h.run.bind(h),c&&c.suspense):h.run(),L&&L.push(R),R}function ki(e,t,n){const s=this.proxy,r=te(e)?e.includes(".")?br(s,e):()=>s[e]:e.bind(s,s);let o;D(t)?o=t:(o=t.handler,n=t);const i=Dt(this),l=ss(r,o.bind(s),n);return i(),l}function br(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),ce(e))et(e.value,t,n,s);else if(F(e))for(let r=0;r{et(r,t,n,s)});else if(Ns(e))for(const r in e)et(e[r],t,n,s);return e}function Ui(e,t){if(he===null)return e;const n=xn(he)||he.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;roe({name:e.name},t,{setup:e}))():e}const St=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Bi(e){D(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,d=0;const g=()=>(d++,c=null,b()),b=()=>{let T;return c||(T=c=t().catch(O=>{if(O=O instanceof Error?O:new Error(String(O)),l)return new Promise((L,B)=>{l(O,()=>L(g()),()=>B(O),d+1)});throw O}).then(O=>T!==c&&c?c:(O&&(O.__esModule||O[Symbol.toStringTag]==="Module")&&(O=O.default),a=O,O)))};return At({name:"AsyncComponentWrapper",__asyncLoader:b,get __asyncResolved(){return a},setup(){const T=ie;if(a)return()=>rs(a,T);const O=G=>{c=null,Ct(G,T,13,!s)};if(i&&T.suspense||jt)return b().then(G=>()=>rs(G,T)).catch(G=>(O(G),()=>s?ee(s,{error:G}):null));const L=Pe(!1),B=Pe(),Y=Pe(!!r);return r&&setTimeout(()=>{Y.value=!1},r),o!=null&&setTimeout(()=>{if(!L.value&&!B.value){const G=new Error(`Async component timed out after ${o}ms.`);O(G),B.value=G}},o),b().then(()=>{L.value=!0,T.parent&&os(T.parent.vnode)&&(T.parent.effect.dirty=!0,on(T.parent.update))}).catch(G=>{O(G),B.value=G}),()=>{if(L.value&&a)return rs(a,T);if(B.value&&s)return ee(s,{error:B.value});if(n&&!Y.value)return ee(n)}}})}function rs(e,t){const{ref:n,props:s,children:r,ce:o}=t.vnode,i=ee(e,s,r);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const os=e=>e.type.__isKeepAlive;function Ki(e,t){vr(e,"a",t)}function Wi(e,t){vr(e,"da",t)}function vr(e,t,n=ie){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(hn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)os(r.parent.vnode)&&qi(s,t,n,r),r=r.parent}}function qi(e,t,n,s){const r=hn(t,e,s,!0);ls(()=>{Fn(s[t],r)},n)}function hn(e,t,n=ie,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Ve();const l=Dt(n),c=we(t,n,e,i);return l(),ke(),c});return s?r.unshift(o):r.push(o),o}}const He=e=>(t,n=ie)=>(!jt||e==="sp")&&hn(e,(...s)=>t(...s),n),Gi=He("bm"),is=He("m"),Yi=He("bu"),Ji=He("u"),zi=He("bum"),ls=He("um"),Xi=He("sp"),Zi=He("rtg"),Qi=He("rtc");function el(e,t=ie){hn("ec",e,t)}function xr(e,t,n,s){let r;const o=n&&n[s];if(F(e)||te(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;le?Yr(e)?xn(e)||e.proxy:cs(e.parent):null,Ot=oe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>cs(e.parent),$root:e=>cs(e.root),$emit:e=>e.emit,$options:e=>as(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,on(e.update)}),$nextTick:e=>e.n||(e.n=ts.bind(e.proxy)),$watch:e=>ki.bind(e)}),fs=(e,t)=>e!==Z&&!e.__isScriptSetup&&K(e,t),tl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const T=i[t];if(T!==void 0)switch(T){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(fs(s,t))return i[t]=1,s[t];if(r!==Z&&K(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&K(a,t))return i[t]=3,o[t];if(n!==Z&&K(n,t))return i[t]=4,n[t];us&&(i[t]=0)}}const d=Ot[t];let g,b;if(d)return t==="$attrs"&&de(e,"get",t),d(e);if((g=l.__cssModules)&&(g=g[t]))return g;if(n!==Z&&K(n,t))return i[t]=4,n[t];if(b=c.config.globalProperties,K(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return fs(r,t)?(r[t]=n,!0):s!==Z&&K(s,t)?(s[t]=n,!0):K(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==Z&&K(e,i)||fs(t,i)||(l=o[0])&&K(l,i)||K(s,i)||K(Ot,i)||K(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:K(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function wr(e){return F(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let us=!0;function nl(e){const t=as(e),n=e.proxy,s=e.ctx;us=!1,t.beforeCreate&&Cr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:d,beforeMount:g,mounted:b,beforeUpdate:T,updated:O,activated:L,deactivated:B,beforeDestroy:Y,beforeUnmount:G,destroyed:h,unmounted:v,render:R,renderTracked:S,renderTriggered:H,errorCaptured:V,serverPrefetch:q,expose:j,inheritAttrs:J,components:re,directives:ne,filters:ue}=t;if(a&&sl(a,s,null),i)for(const U in i){const M=i[U];D(M)&&(s[U]=M.bind(n))}if(r){const U=r.call(n,n);X(U)&&(e.data=en(U))}if(us=!0,o)for(const U in o){const M=o[U],Te=D(M)?M.bind(n,n):D(M.get)?M.get.bind(n,n):ye,st=!D(M)&&D(M.set)?M.set.bind(n):ye,Je=xs({get:Te,set:st});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>Je.value,set:Ae=>Je.value=Ae})}if(l)for(const U in l)Er(l[U],s,n,U);if(c){const U=D(c)?c.call(n):c;Reflect.ownKeys(U).forEach(M=>{fl(M,U[M])})}d&&Cr(d,e,"c");function $(U,M){F(M)?M.forEach(Te=>U(Te.bind(n))):M&&U(M.bind(n))}if($(Gi,g),$(is,b),$(Yi,T),$(Ji,O),$(Ki,L),$(Wi,B),$(el,V),$(Qi,S),$(Zi,H),$(zi,G),$(ls,v),$(Xi,q),F(j))if(j.length){const U=e.exposed||(e.exposed={});j.forEach(M=>{Object.defineProperty(U,M,{get:()=>n[M],set:Te=>n[M]=Te})})}else e.exposed||(e.exposed={});R&&e.render===ye&&(e.render=R),J!=null&&(e.inheritAttrs=J),re&&(e.components=re),ne&&(e.directives=ne)}function sl(e,t,n=ye){F(e)&&(e=ds(e));for(const s in e){const r=e[s];let o;X(r)?"default"in r?o=It(r.from||s,r.default,!0):o=It(r.from||s):o=It(r),ce(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Cr(e,t,n){we(F(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Er(e,t,n,s){const r=s.includes(".")?br(n,s):()=>n[s];if(te(e)){const o=t[e];D(o)&&pt(r,o)}else if(D(e))pt(r,e.bind(n));else if(X(e))if(F(e))e.forEach(o=>Er(o,t,n,s));else{const o=D(e.handler)?e.handler.bind(n):t[e.handler];D(o)&&pt(r,o,e)}}function as(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>pn(c,a,i,!0)),pn(c,t,i)),X(t)&&o.set(t,c),c}function pn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&pn(e,o,n,!0),r&&r.forEach(i=>pn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=rl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const rl={data:Tr,props:Ar,emits:Ar,methods:Pt,computed:Pt,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Pt,directives:Pt,watch:il,provide:Tr,inject:ol};function Tr(e,t){return t?e?function(){return oe(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function ol(e,t){return Pt(ds(e),ds(t))}function ds(e){if(F(e)){const t={};for(let n=0;n1)return n&&D(t)?t.call(s&&s.proxy):t}}function ul(e,t,n,s=!1){const r={},o={};Wt(o,yn,1),e.propsDefaults=Object.create(null),Or(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:di(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function al(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=W(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const d=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[b,T]=Pr(g,t,!0);oe(i,b),T&&l.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!c)return X(e)&&s.set(e,it),it;if(F(o))for(let d=0;d-1,T[1]=L<0||O-1||K(T,"default"))&&l.push(g)}}}const a=[i,l];return X(e)&&s.set(e,a),a}function Mr(e){return e[0]!=="$"&&!ct(e)}function Ir(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Rr(e,t){return Ir(e)===Ir(t)}function Lr(e,t){return F(t)?t.findIndex(n=>Rr(n,e)):D(t)&&Rr(t,e)?0:-1}const $r=e=>e[0]==="_"||e==="$stable",ps=e=>F(e)?e.map(Ee):[Ee(e)],dl=(e,t,n)=>{if(t._n)return t;const s=Mi((...r)=>ps(t(...r)),n);return s._c=!1,s},Fr=(e,t,n)=>{const s=e._ctx;for(const r in e){if($r(r))continue;const o=e[r];if(D(o))t[r]=dl(r,o,s);else if(o!=null){const i=ps(o);t[r]=()=>i}}},Hr=(e,t)=>{const n=ps(t);e.slots.default=()=>n},hl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=W(t),Wt(t,"_",n)):Fr(t,e.slots={})}else e.slots={},t&&Hr(e,t);Wt(e.slots,yn,1)},pl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(oe(r,t),!n&&l===1&&delete r._):(o=!t.$stable,Fr(t,r)),i=t}else t&&(Hr(e,t),i={default:1});if(o)for(const l in r)!$r(l)&&i[l]==null&&delete r[l]};function gn(e,t,n,s,r=!1){if(F(e)){e.forEach((b,T)=>gn(b,t&&(F(t)?t[T]:t),n,s,r));return}if(St(s)&&!r)return;const o=s.shapeFlag&4?xn(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,d=l.refs===Z?l.refs={}:l.refs,g=l.setupState;if(a!=null&&a!==c&&(te(a)?(d[a]=null,K(g,a)&&(g[a]=null)):ce(a)&&(a.value=null)),D(c))Fe(c,l,12,[i,d]);else{const b=te(c),T=ce(c);if(b||T){const O=()=>{if(e.f){const L=b?K(g,c)?g[c]:d[c]:c.value;r?F(L)&&Fn(L,o):F(L)?L.includes(o)||L.push(o):b?(d[c]=[o],K(g,c)&&(g[c]=d[c])):(c.value=[o],e.k&&(d[e.k]=c.value))}else b?(d[c]=i,K(g,c)&&(g[c]=i)):T&&(c.value=i,e.k&&(d[e.k]=i))};i?(O.id=-1,pe(O,n)):O()}}}let Ke=!1;const gl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",_l=e=>e.namespaceURI.includes("MathML"),_n=e=>{if(gl(e))return"svg";if(_l(e))return"mathml"},Rt=e=>e.nodeType===8;function ml(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,d=(h,v)=>{if(!v.hasChildNodes()){__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Ze("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,h,v),ln(),v._vnode=h;return}Ke=!1,g(v.firstChild,h,null,null,null),ln(),v._vnode=h,Ke&&console.error("Hydration completed but contains mismatches.")},g=(h,v,R,S,H,V=!1)=>{const q=Rt(h)&&h.data==="[",j=()=>L(h,v,R,S,H,q),{type:J,ref:re,shapeFlag:ne,patchFlag:ue}=v;let ae=h.nodeType;v.el=h,ue===-2&&(V=!1,v.dynamicChildren=null);let $=null;switch(J){case gt:ae!==3?v.children===""?(c(v.el=r(""),i(h),h),$=h):$=j():(h.data!==v.children&&(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Ze("Hydration text mismatch in",h.parentNode,` - - rendered on server: ${JSON.stringify(h.data)} - - expected on client: ${JSON.stringify(v.children)}`),h.data=v.children),$=o(h));break;case We:G(h)?($=o(h),Y(v.el=h.content.firstChild,h,R)):ae!==8||q?$=j():$=o(h);break;case $t:if(q&&(h=o(h),ae=h.nodeType),ae===1||ae===3){$=h;const U=!v.children.length;for(let M=0;M{V=V||!!v.dynamicChildren;const{type:q,props:j,patchFlag:J,shapeFlag:re,dirs:ne,transition:ue}=v,ae=q==="input"||q==="option";if(ae||J!==-1){ne&&Ie(v,null,R,"created");let $=!1;if(G(h)){$=Nr(S,ue)&&R&&R.vnode.props&&R.vnode.props.appear;const M=h.content.firstChild;$&&ue.beforeEnter(M),Y(M,h,R),v.el=h=M}if(re&16&&!(j&&(j.innerHTML||j.textContent))){let M=T(h.firstChild,v,h,R,S,H,V),Te=!1;for(;M;){Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&!Te&&(Ze("Hydration children mismatch on",h,` -Server rendered element contains more child nodes than client vdom.`),Te=!0);const st=M;M=M.nextSibling,l(st)}}else re&8&&h.textContent!==v.children&&(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Ze("Hydration text content mismatch on",h,` - - rendered on server: ${h.textContent} - - expected on client: ${v.children}`),h.textContent=v.children);if(j)if(ae||!V||J&(16|32))for(const M in j)(ae&&(M.endsWith("value")||M==="indeterminate")||bt(M)&&!ct(M)||M[0]===".")&&s(h,M,null,j[M],void 0,void 0,R);else j.onClick&&s(h,"onClick",null,j.onClick,void 0,void 0,R);let U;(U=j&&j.onVnodeBeforeMount)&&be(U,R,v),ne&&Ie(v,null,R,"beforeMount"),((U=j&&j.onVnodeMounted)||ne||$)&&yr(()=>{U&&be(U,R,v),$&&ue.enter(h),ne&&Ie(v,null,R,"mounted")},S)}return h.nextSibling},T=(h,v,R,S,H,V,q)=>{q=q||!!v.dynamicChildren;const j=v.children,J=j.length;let re=!1;for(let ne=0;ne{const{slotScopeIds:q}=v;q&&(H=H?H.concat(q):q);const j=i(h),J=T(o(h),v,j,R,S,H,V);return J&&Rt(J)&&J.data==="]"?o(v.anchor=J):(Ke=!0,c(v.anchor=a("]"),j,J),J)},L=(h,v,R,S,H,V)=>{if(Ke=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&Ze(`Hydration node mismatch: -- rendered on server:`,h,h.nodeType===3?"(text)":Rt(h)&&h.data==="["?"(start of fragment)":"",` -- expected on client:`,v.type),v.el=null,V){const J=B(h);for(;;){const re=o(h);if(re&&re!==J)l(re);else break}}const q=o(h),j=i(h);return l(h),n(null,v,j,q,R,S,_n(j),H),q},B=(h,v="[",R="]")=>{let S=0;for(;h;)if(h=o(h),h&&Rt(h)&&(h.data===v&&S++,h.data===R)){if(S===0)return o(h);S--}return h},Y=(h,v,R)=>{const S=v.parentNode;S&&S.replaceChild(h,v);let H=R;for(;H;)H.vnode.el===v&&(H.vnode.el=H.subTree.el=h),H=H.parent},G=h=>h.nodeType===1&&h.tagName.toLowerCase()==="template";return[d,g]}function yl(){typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__!="boolean"&&(jn().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const pe=yr;function bl(e){return vl(e,ml)}function vl(e,t){yl();const n=jn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:d,parentNode:g,nextSibling:b,setScopeId:T=ye,insertStaticContent:O}=e,L=(f,u,p,_=null,m=null,w=null,E=void 0,x=null,C=!!u.dynamicChildren)=>{if(f===u)return;f&&!Nt(f,u)&&(_=Vt(f),Ae(f,m,w,!0),f=null),u.patchFlag===-2&&(C=!1,u.dynamicChildren=null);const{type:y,ref:A,shapeFlag:I}=u;switch(y){case gt:B(f,u,p,_);break;case We:Y(f,u,p,_);break;case $t:f==null&&G(u,p,_,E);break;case ge:re(f,u,p,_,m,w,E,x,C);break;default:I&1?R(f,u,p,_,m,w,E,x,C):I&6?ne(f,u,p,_,m,w,E,x,C):(I&64||I&128)&&y.process(f,u,p,_,m,w,E,x,C,rt)}A!=null&&m&&gn(A,f&&f.ref,w,u||f,!u)},B=(f,u,p,_)=>{if(f==null)s(u.el=l(u.children),p,_);else{const m=u.el=f.el;u.children!==f.children&&a(m,u.children)}},Y=(f,u,p,_)=>{f==null?s(u.el=c(u.children||""),p,_):u.el=f.el},G=(f,u,p,_)=>{[f.el,f.anchor]=O(f.children,u,p,_,f.el,f.anchor)},h=({el:f,anchor:u},p,_)=>{let m;for(;f&&f!==u;)m=b(f),s(f,p,_),f=m;s(u,p,_)},v=({el:f,anchor:u})=>{let p;for(;f&&f!==u;)p=b(f),r(f),f=p;r(u)},R=(f,u,p,_,m,w,E,x,C)=>{u.type==="svg"?E="svg":u.type==="math"&&(E="mathml"),f==null?S(u,p,_,m,w,E,x,C):q(f,u,m,w,E,x,C)},S=(f,u,p,_,m,w,E,x)=>{let C,y;const{props:A,shapeFlag:I,transition:P,dirs:N}=f;if(C=f.el=i(f.type,w,A&&A.is,A),I&8?d(C,f.children):I&16&&V(f.children,C,null,_,m,gs(f,w),E,x),N&&Ie(f,null,_,"created"),H(C,f,f.scopeId,E,_),A){for(const z in A)z!=="value"&&!ct(z)&&o(C,z,null,A[z],w,f.children,_,m,Le);"value"in A&&o(C,"value",null,A.value,w),(y=A.onVnodeBeforeMount)&&be(y,_,f)}N&&Ie(f,null,_,"beforeMount");const k=Nr(m,P);k&&P.beforeEnter(C),s(C,u,p),((y=A&&A.onVnodeMounted)||k||N)&&pe(()=>{y&&be(y,_,f),k&&P.enter(C),N&&Ie(f,null,_,"mounted")},m)},H=(f,u,p,_,m)=>{if(p&&T(f,p),_)for(let w=0;w<_.length;w++)T(f,_[w]);if(m){let w=m.subTree;if(u===w){const E=m.vnode;H(f,E,E.scopeId,E.slotScopeIds,m.parent)}}},V=(f,u,p,_,m,w,E,x,C=0)=>{for(let y=C;y{const x=u.el=f.el;let{patchFlag:C,dynamicChildren:y,dirs:A}=u;C|=f.patchFlag&16;const I=f.props||Z,P=u.props||Z;let N;if(p&&tt(p,!1),(N=P.onVnodeBeforeUpdate)&&be(N,p,u,f),A&&Ie(u,f,p,"beforeUpdate"),p&&tt(p,!0),y?j(f.dynamicChildren,y,x,p,_,gs(u,m),w):E||M(f,u,x,null,p,_,gs(u,m),w,!1),C>0){if(C&16)J(x,u,I,P,p,_,m);else if(C&2&&I.class!==P.class&&o(x,"class",null,P.class,m),C&4&&o(x,"style",I.style,P.style,m),C&8){const k=u.dynamicProps;for(let z=0;z{N&&be(N,p,u,f),A&&Ie(u,f,p,"updated")},_)},j=(f,u,p,_,m,w,E)=>{for(let x=0;x{if(p!==_){if(p!==Z)for(const x in p)!ct(x)&&!(x in _)&&o(f,x,p[x],null,E,u.children,m,w,Le);for(const x in _){if(ct(x))continue;const C=_[x],y=p[x];C!==y&&x!=="value"&&o(f,x,y,C,E,u.children,m,w,Le)}"value"in _&&o(f,"value",p.value,_.value,E)}},re=(f,u,p,_,m,w,E,x,C)=>{const y=u.el=f?f.el:l(""),A=u.anchor=f?f.anchor:l("");let{patchFlag:I,dynamicChildren:P,slotScopeIds:N}=u;N&&(x=x?x.concat(N):N),f==null?(s(y,p,_),s(A,p,_),V(u.children||[],p,A,m,w,E,x,C)):I>0&&I&64&&P&&f.dynamicChildren?(j(f.dynamicChildren,P,p,m,w,E,x),(u.key!=null||m&&u===m.subTree)&&_s(f,u,!0)):M(f,u,p,A,m,w,E,x,C)},ne=(f,u,p,_,m,w,E,x,C)=>{u.slotScopeIds=x,f==null?u.shapeFlag&512?m.ctx.activate(u,p,_,E,C):ue(u,p,_,m,w,E,C):ae(f,u,C)},ue=(f,u,p,_,m,w,E)=>{const x=f.component=Il(f,_,m);if(os(f)&&(x.ctx.renderer=rt),Rl(x),x.asyncDep){if(m&&m.registerDep(x,$),!f.el){const C=x.subTree=ee(We);Y(null,C,u,p)}}else $(x,f,u,p,m,w,E)},ae=(f,u,p)=>{const _=u.component=f.component;if(Li(f,u,p))if(_.asyncDep&&!_.asyncResolved){U(_,u,p);return}else _.next=u,Ei(_.update),_.effect.dirty=!0,_.update();else u.el=f.el,_.vnode=u},$=(f,u,p,_,m,w,E)=>{const x=()=>{if(f.isMounted){let{next:A,bu:I,u:P,parent:N,vnode:k}=f;{const ot=Dr(f);if(ot){A&&(A.el=k.el,U(f,A,E)),ot.asyncDep.then(()=>{f.isUnmounted||x()});return}}let z=A,Q;tt(f,!1),A?(A.el=k.el,U(f,A,E)):A=k,I&&Kt(I),(Q=A.props&&A.props.onVnodeBeforeUpdate)&&be(Q,N,A,k),tt(f,!0);const se=ns(f),ve=f.subTree;f.subTree=se,L(ve,se,g(ve.el),Vt(ve),f,m,w),A.el=se.el,z===null&&$i(f,se.el),P&&pe(P,m),(Q=A.props&&A.props.onVnodeUpdated)&&pe(()=>be(Q,N,A,k),m)}else{let A;const{el:I,props:P}=u,{bm:N,m:k,parent:z}=f,Q=St(u);if(tt(f,!1),N&&Kt(N),!Q&&(A=P&&P.onVnodeBeforeMount)&&be(A,z,u),tt(f,!0),I&&In){const se=()=>{f.subTree=ns(f),In(I,f.subTree,f,m,null)};Q?u.type.__asyncLoader().then(()=>!f.isUnmounted&&se()):se()}else{const se=f.subTree=ns(f);L(null,se,p,_,f,m,w),u.el=se.el}if(k&&pe(k,m),!Q&&(A=P&&P.onVnodeMounted)){const se=u;pe(()=>be(A,z,se),m)}(u.shapeFlag&256||z&&St(z.vnode)&&z.vnode.shapeFlag&256)&&f.a&&pe(f.a,m),f.isMounted=!0,u=p=_=null}},C=f.effect=new Un(x,ye,()=>on(y),f.scope),y=f.update=()=>{C.dirty&&C.run()};y.id=f.uid,tt(f,!0),y()},U=(f,u,p)=>{u.component=f;const _=f.vnode.props;f.vnode=u,f.next=null,al(f,u.props,_,p),pl(f,u.children,p),Ve(),dr(f),ke()},M=(f,u,p,_,m,w,E,x,C=!1)=>{const y=f&&f.children,A=f?f.shapeFlag:0,I=u.children,{patchFlag:P,shapeFlag:N}=u;if(P>0){if(P&128){st(y,I,p,_,m,w,E,x,C);return}else if(P&256){Te(y,I,p,_,m,w,E,x,C);return}}N&8?(A&16&&Le(y,m,w),I!==y&&d(p,I)):A&16?N&16?st(y,I,p,_,m,w,E,x,C):Le(y,m,w,!0):(A&8&&d(p,""),N&16&&V(I,p,_,m,w,E,x,C))},Te=(f,u,p,_,m,w,E,x,C)=>{f=f||it,u=u||it;const y=f.length,A=u.length,I=Math.min(y,A);let P;for(P=0;PA?Le(f,m,w,!0,!1,I):V(u,p,_,m,w,E,x,C,I)},st=(f,u,p,_,m,w,E,x,C)=>{let y=0;const A=u.length;let I=f.length-1,P=A-1;for(;y<=I&&y<=P;){const N=f[y],k=u[y]=C?Ge(u[y]):Ee(u[y]);if(Nt(N,k))L(N,k,p,null,m,w,E,x,C);else break;y++}for(;y<=I&&y<=P;){const N=f[I],k=u[P]=C?Ge(u[P]):Ee(u[P]);if(Nt(N,k))L(N,k,p,null,m,w,E,x,C);else break;I--,P--}if(y>I){if(y<=P){const N=P+1,k=NP)for(;y<=I;)Ae(f[y],m,w,!0),y++;else{const N=y,k=y,z=new Map;for(y=k;y<=P;y++){const me=u[y]=C?Ge(u[y]):Ee(u[y]);me.key!=null&&z.set(me.key,y)}let Q,se=0;const ve=P-k+1;let ot=!1,Ps=0;const mt=new Array(ve);for(y=0;y=ve){Ae(me,m,w,!0);continue}let Se;if(me.key!=null)Se=z.get(me.key);else for(Q=k;Q<=P;Q++)if(mt[Q-k]===0&&Nt(me,u[Q])){Se=Q;break}Se===void 0?Ae(me,m,w,!0):(mt[Se-k]=y+1,Se>=Ps?Ps=Se:ot=!0,L(me,u[Se],p,null,m,w,E,x,C),se++)}const Ms=ot?xl(mt):it;for(Q=Ms.length-1,y=ve-1;y>=0;y--){const me=k+y,Se=u[me],Is=me+1{const{el:w,type:E,transition:x,children:C,shapeFlag:y}=f;if(y&6){Je(f.component.subTree,u,p,_);return}if(y&128){f.suspense.move(u,p,_);return}if(y&64){E.move(f,u,p,rt);return}if(E===ge){s(w,u,p);for(let I=0;Ix.enter(w),m);else{const{leave:I,delayLeave:P,afterLeave:N}=x,k=()=>s(w,u,p),z=()=>{I(w,()=>{k(),N&&N()})};P?P(w,k,z):z()}else s(w,u,p)},Ae=(f,u,p,_=!1,m=!1)=>{const{type:w,props:E,ref:x,children:C,dynamicChildren:y,shapeFlag:A,patchFlag:I,dirs:P}=f;if(x!=null&&gn(x,null,p,f,!0),A&256){u.ctx.deactivate(f);return}const N=A&1&&P,k=!St(f);let z;if(k&&(z=E&&E.onVnodeBeforeUnmount)&&be(z,u,f),A&6)To(f.component,p,_);else{if(A&128){f.suspense.unmount(p,_);return}N&&Ie(f,null,u,"beforeUnmount"),A&64?f.type.remove(f,u,p,m,rt,_):y&&(w!==ge||I>0&&I&64)?Le(y,u,p,!1,!0):(w===ge&&I&(128|256)||!m&&A&16)&&Le(C,u,p),_&&Ss(f)}(k&&(z=E&&E.onVnodeUnmounted)||N)&&pe(()=>{z&&be(z,u,f),N&&Ie(f,null,u,"unmounted")},p)},Ss=f=>{const{type:u,el:p,anchor:_,transition:m}=f;if(u===ge){Eo(p,_);return}if(u===$t){v(f);return}const w=()=>{r(p),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(f.shapeFlag&1&&m&&!m.persisted){const{leave:E,delayLeave:x}=m,C=()=>E(p,w);x?x(f.el,w,C):C()}else w()},Eo=(f,u)=>{let p;for(;f!==u;)p=b(f),r(f),f=p;r(u)},To=(f,u,p)=>{const{bum:_,scope:m,update:w,subTree:E,um:x}=f;_&&Kt(_),m.stop(),w&&(w.active=!1,Ae(E,f,u,p)),x&&pe(x,u),pe(()=>{f.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Le=(f,u,p,_=!1,m=!1,w=0)=>{for(let E=w;Ef.shapeFlag&6?Vt(f.component.subTree):f.shapeFlag&128?f.suspense.next():b(f.anchor||f.el);let Pn=!1;const Os=(f,u,p)=>{f==null?u._vnode&&Ae(u._vnode,null,null,!0):L(u._vnode||null,f,u,null,null,null,p),Pn||(Pn=!0,dr(),ln(),Pn=!1),u._vnode=f},rt={p:L,um:Ae,m:Je,r:Ss,mt:ue,mc:V,pc:M,pbc:j,n:Vt,o:e};let Mn,In;return t&&([Mn,In]=t(rt)),{render:Os,hydrate:Mn,createApp:cl(Os,Mn)}}function gs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Nr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function _s(e,t,n=!1){const s=e.children,r=t.children;if(F(s)&&F(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Dr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Dr(t)}const wl=e=>e.__isTeleport,Lt=e=>e&&(e.disabled||e.disabled===""),jr=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,Vr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,ms=(e,t)=>{const n=e&&e.to;return te(n)?t?t(n):null:n},Cl={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,c,a){const{mc:d,pc:g,pbc:b,o:{insert:T,querySelector:O,createText:L,createComment:B}}=a,Y=Lt(t.props);let{shapeFlag:G,children:h,dynamicChildren:v}=t;if(e==null){const R=t.el=L(""),S=t.anchor=L("");T(R,n,s),T(S,n,s);const H=t.target=ms(t.props,O),V=t.targetAnchor=L("");H&&(T(V,H),i==="svg"||jr(H)?i="svg":(i==="mathml"||Vr(H))&&(i="mathml"));const q=(j,J)=>{G&16&&d(h,j,J,r,o,i,l,c)};Y?q(n,S):H&&q(H,V)}else{t.el=e.el;const R=t.anchor=e.anchor,S=t.target=e.target,H=t.targetAnchor=e.targetAnchor,V=Lt(e.props),q=V?n:S,j=V?R:H;if(i==="svg"||jr(S)?i="svg":(i==="mathml"||Vr(S))&&(i="mathml"),v?(b(e.dynamicChildren,v,q,r,o,i,l),_s(e,t,!0)):c||g(e,t,q,j,r,o,i,l,!1),Y)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):mn(t,n,R,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const J=t.target=ms(t.props,O);J&&mn(t,J,null,a,0)}else V&&mn(t,S,H,a,1)}kr(t)},remove(e,t,n,s,{um:r,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:d,target:g,props:b}=e;if(g&&o(d),i&&o(a),l&16){const T=i||!Lt(b);for(let O=0;O0?Ce||it:null,Tl(),Ht>0&&Ce&&Ce.push(e),e}function qe(e,t,n,s,r,o){return Br(_e(e,t,n,s,r,o,!0))}function Kr(e,t,n,s,r){return Br(ee(e,t,n,s,r,!0))}function ys(e){return e?e.__v_isVNode===!0:!1}function Nt(e,t){return e.type===t.type&&e.key===t.key}const yn="__vInternal",Wr=({key:e})=>e!=null?e:null,bn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?te(e)||ce(e)||D(e)?{i:he,r:e,k:t,f:!!n}:e:null);function _e(e,t=null,n=null,s=0,r=null,o=e===ge?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wr(t),ref:t&&bn(t),scopeId:fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(bs(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=te(n)?8:16),Ht>0&&!i&&Ce&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ce.push(c),c}const ee=Al;function Al(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Fi)&&(e=We),ys(e)){const l=_t(e,t,!0);return n&&bs(l,n),Ht>0&&!o&&Ce&&(l.shapeFlag&6?Ce[Ce.indexOf(e)]=l:Ce.push(l)),l.patchFlag|=-2,l}if(Dl(e)&&(e=e.__vccOpts),t){t=Sl(t);let{class:l,style:c}=t;l&&!te(l)&&(t.class=ut(l)),X(c)&&(or(c)&&!F(c)&&(c=oe({},c)),t.style=Vn(c))}const i=te(e)?1:Ni(e)?128:wl(e)?64:X(e)?4:D(e)?2:0;return _e(e,t,n,s,r,i,o,!0)}function Sl(e){return e?or(e)||yn in e?oe({},e):e:null}function _t(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?Ol(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Wr(l),ref:t&&t.ref?n&&r?F(r)?r.concat(bn(t)):[r,bn(t)]:bn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_t(e.ssContent),ssFallback:e.ssFallback&&_t(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function qr(e=" ",t=0){return ee(gt,null,e,t)}function xf(e,t){const n=ee($t,null,e);return n.staticCount=t,n}function wf(e="",t=!1){return t?(Re(),Kr(We,null,e)):ee(We,null,e)}function Ee(e){return e==null||typeof e=="boolean"?ee(We):F(e)?ee(ge,null,e.slice()):typeof e=="object"?Ge(e):ee(gt,null,String(e))}function Ge(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_t(e)}function bs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(F(t))n=16;else if(typeof t=="object")if(s&(1|64)){const r=t.default;r&&(r._c&&(r._d=!1),bs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(yn in t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else D(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[qr(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ol(...e){const t={};for(let n=0;n{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};vn=t("__VUE_INSTANCE_SETTERS__",n=>ie=n),vs=t("__VUE_SSR_SETTERS__",n=>jt=n)}const Dt=e=>{const t=ie;return vn(e),e.scope.on(),()=>{e.scope.off(),vn(t)}},Gr=()=>{ie&&ie.scope.off(),vn(null)};function Yr(e){return e.vnode.shapeFlag&4}let jt=!1;function Rl(e,t=!1){t&&vs(t);const{props:n,children:s}=e.vnode,r=Yr(e);ul(e,n,r,t),hl(e,s);const o=r?Ll(e,t):void 0;return t&&vs(!1),o}function Ll(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=sn(new Proxy(e.ctx,tl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Fl(e):null,o=Dt(e);Ve();const i=Fe(s,e,0,[e.props,r]);if(ke(),o(),Fs(i)){if(i.then(Gr,Gr),t)return i.then(l=>{Jr(e,l,t)}).catch(l=>{Ct(l,e,0)});e.asyncDep=i}else Jr(e,i,t)}else Xr(e,t)}function Jr(e,t,n){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=cr(t)),Xr(e,n)}let zr;function Xr(e,t,n){const s=e.type;if(!e.render){if(!t&&zr&&!s.render){const r=s.template||as(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=oe(oe({isCustomElement:o,delimiters:l},i),c);s.render=zr(r,a)}}e.render=s.render||ye}{const r=Dt(e);Ve();try{nl(e)}finally{ke(),r()}}}function $l(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return de(e,"get","$attrs"),t[n]}}))}function Fl(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return $l(e)},slots:e.slots,emit:e.emit,expose:t}}function xn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(cr(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ot)return Ot[n](e)},has(t,n){return n in t||n in Ot}}))}const Hl=/(?:^|[-_])(\w)/g,Nl=e=>e.replace(Hl,t=>t.toUpperCase()).replace(/[-_]/g,"");function Zr(e,t=!0){return D(e)?e.displayName||e.name:e.name||t&&e.__name}function Qr(e,t,n=!1){let s=Zr(t);if(!s&&t.__file){const r=t.__file.match(/([^/\\]+)\.\w+$/);r&&(s=r[1])}if(!s&&e&&e.parent){const r=o=>{for(const i in o)if(o[i]===t)return i};s=r(e.components||e.parent.type.components)||r(e.appContext.components)}return s?Nl(s):n?"App":"Anonymous"}function Dl(e){return D(e)&&"__vccOpts"in e}const xs=(e,t)=>hi(e,t,jt);function eo(e,t,n){const s=arguments.length;return s===2?X(t)&&!F(t)?ys(t)?ee(e,null,[t]):ee(e,t):ee(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&ys(n)&&(n=[n]),ee(e,t,n))}const jl="3.4.20";/** -* @vue/runtime-dom v3.4.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Vl="http://www.w3.org/2000/svg",kl="http://www.w3.org/1998/Math/MathML",Ye=typeof document!="undefined"?document:null,to=Ye&&Ye.createElement("template"),Ul={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ye.createElementNS(Vl,e):t==="mathml"?Ye.createElementNS(kl,e):Ye.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ye.createTextNode(e),createComment:e=>Ye.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ye.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{to.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=to.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Bl=Symbol("_vtc");function Kl(e,t,n){const s=e[Bl];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const no=Symbol("_vod"),Wl=Symbol("_vsh"),ql=Symbol(""),Gl=/(^|;)\s*display\s*:/;function Yl(e,t,n){const s=e.style,r=te(n);let o=!1;if(n&&!r){if(t)if(te(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&wn(s,l,"")}else for(const i in t)n[i]==null&&wn(s,i,"");for(const i in n)i==="display"&&(o=!0),wn(s,i,n[i])}else if(r){if(t!==n){const i=s[ql];i&&(n+=";"+i),s.cssText=n,o=Gl.test(n)}}else t&&e.removeAttribute("style");no in e&&(e[no]=o?s.display:"",e[Wl]&&(s.display="none"))}const so=/\s*!important$/;function wn(e,t,n){if(F(n))n.forEach(s=>wn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Jl(e,t);so.test(n)?e.setProperty(ft(s),n.replace(so,""),"important"):e[s]=n}}const ro=["Webkit","Moz","ms"],ws={};function Jl(e,t){const n=ws[t];if(n)return n;let s=Oe(t);if(s!=="filter"&&s in e)return ws[t]=s;s=Bt(s);for(let r=0;rCs||(tc.then(()=>Cs=0),Cs=Date.now());function sc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;we(rc(s,n.value),t,5,[s])};return n.value=e,n.attached=nc(),n}function rc(e,t){if(F(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const fo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,oc=(e,t,n,s,r,o,i,l,c)=>{const a=r==="svg";t==="class"?Kl(e,s,a):t==="style"?Yl(e,n,s):bt(t)?$n(t)||Ql(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ic(e,t,s,a))?Xl(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),zl(e,t,s,a))};function ic(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&fo(t)&&D(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return fo(t)&&te(n)?!1:t in e}const uo=e=>{const t=e.props["onUpdate:modelValue"]||!1;return F(t)?n=>Kt(t,n):t},Es=Symbol("_assign"),lc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=kt(t);io(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Dn(Cn(i)):Cn(i));e[Es](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,ts(()=>{e._assigning=!1})}),e[Es]=uo(s)},mounted(e,{value:t,modifiers:{number:n}}){ao(e,t,n)},beforeUpdate(e,t,n){e[Es]=uo(n)},updated(e,{value:t,modifiers:{number:n}}){e._assigning||ao(e,t,n)}};function ao(e,t,n){const s=e.multiple,r=F(t);if(!(s&&!r&&!kt(t))){for(let o=0,i=e.options.length;o-1}else l.selected=t.has(c);else if(qt(Cn(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Cn(e){return"_value"in e?e._value:e.value}const cc=oe({patchProp:oc},Ul);let Ts,ho=!1;function fc(){return Ts=ho?Ts:bl(cc),ho=!0,Ts}const uc=(...e)=>{const t=fc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=dc(s);if(r)return n(r,!0,ac(r))},t};function ac(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function dc(e){return te(e)?document.querySelector(e):e}const nt=typeof window!="undefined";function hc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function po(e){let t=e.replace(/\.html$/,"");if(t.endsWith("/")&&(t+="index"),nt){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const go=Symbol(),_o="http://a.com",pc=()=>({path:"/",component:null,data:null});function gc(e,t){const n=en(pc()),s=typeof window!="undefined";function r(l=s?location.href:"/"){const c=new URL(l,_o);return!c.pathname.endsWith("/")&&!c.pathname.endsWith(".html")&&(c.pathname+=".html",l=c.pathname+c.search+c.hash),s&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l)),i(l)}let o=null;async function i(l,c=0){const a=new URL(l,_o),d=o=a.pathname;try{let g=e(d);if("then"in g&&typeof g.then=="function"&&(g=await g),o===d){o=null;const{default:b,__pageData:T}=g;if(!b)throw new Error(`Invalid route component: ${b}`);n.path=d,n.component=sn(b),n.data=tn(JSON.parse(T)),s&&ts(()=>{if(a.hash&&!c){const O=document.querySelector(decodeURIComponent(a.hash));if(O){yo(O,a.hash);return}}window.scrollTo(0,c)})}}catch(g){g.message.match(/fetch/)||console.error(g),o===d&&(o=null,n.path=d,n.component=t?sn(t):null)}}return s&&(window.addEventListener("click",l=>{const c=l.target.closest("a");if(c){const{href:a,protocol:d,hostname:g,pathname:b,hash:T,target:O}=c,L=window.location,B=b.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&O!=="_blank"&&d===L.protocol&&g===L.hostname&&!(B&&B[0]!==".html")&&(l.preventDefault(),b===L.pathname?T&&T!==L.hash&&(history.pushState(null,"",T),yo(c,T,c.classList.contains("header-anchor"))):r(a))}},{capture:!0}),window.addEventListener("popstate",l=>{i(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),{route:n,go:r}}function mo(){const e=It(go);if(!e)throw new Error("useRouter() is called without provider.");return e}function En(){return mo().route}function yo(e,t,n=!1){const s=document.querySelector(".nav-bar").offsetHeight,r=e.classList.contains(".header-anchor")?e:document.querySelector(decodeURIComponent(t));if(r){const o=r.offsetTop-s-15;!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})}}const _c=At({name:"VitePressContent",setup(){const e=En();return()=>e.component?eo(e.component):null}}),mc=At({setup(e,{slots:t}){const n=Pe(!1);return is(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function yc(e,t,n,s){Object.defineProperties(e.config.globalProperties,{$site:{get(){return t.value}},$siteByRoute:{get(){return n.value}},$themeConfig:{get(){return n.value.themeConfig}},$page:{get(){return s.value}},$frontmatter:{get(){return s.value.frontmatter}},$lang:{get(){return n.value.lang}},$localePath:{get(){const{locales:r}=t.value,{lang:o}=n.value,i=Object.keys(r).find(l=>r[l].lang===o);return r&&i||"/"}},$title:{get(){return s.value.title?s.value.title+" | "+n.value.title:n.value.title}},$description:{get(){return s.value.description||n.value.description}},$withBase:{value(r){return hc(t.value.base,r)}}})}function bc(e){e.component("Content",_c),e.component("ClientOnly",mc),e.component("Debug",()=>null)}var vc='{"lang":"en-US","title":"canicjusz in English","description":"A VitePress site","base":"/","head":[],"themeConfig":{},"locales":{"/pages/Esperanto/":{"lang":"eo","title":"canicjusz Esperante"},"/pages/Polski/":{"lang":"pl","title":"canicjusz po polsku"}},"customData":{"pages":[{"type":"file","name":"Home","href":"/"},{"type":"dir","name":"English","content":[{"type":"file","name":"Portfolio - Jan Michalak","href":"/pages/English/portfolio"}]},{"type":"dir","name":"Esperanto","content":[{"type":"dir","name":"Teknologio","content":[{"type":"file","name":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","href":"/pages/Esperanto/Teknologio/create-esperanto-layout-windows"}]},{"type":"dir","name":"Tradukoj","content":[{"type":"file","name":"Sole en Lvivo","href":"/pages/Esperanto/Tradukoj/sole-en-lvivo"},{"type":"file","name":"Teda tempo por legiano","href":"/pages/Esperanto/Tradukoj/teda-tempo-por-legiano"}]}]},{"type":"dir","name":"Polski","content":[{"type":"file","name":"Portfolio - Jan Michalak","href":"/pages/Polski/portfolio"}]}],"links":{"portfolio":["/pages/English/portfolio","/pages/Polski/portfolio"],"create-esperanto-layout-windows":["/pages/Esperanto/Teknologio/create-esperanto-layout-windows"],"sole-en-lvivo":["/pages/Esperanto/Tradukoj/sole-en-lvivo"],"teda-tempo-por-legiano":["/pages/Esperanto/Tradukoj/teda-tempo-por-legiano"]}}}';const Tn=Pe(xc(vc));function bo(){return Tn}function xc(e){return tn(JSON.parse(e))}const wc=typeof window!="undefined";function Cc(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function vo(e,t){const n=Cc(t,Object.keys(e));return n?e[n]:void 0}function Ec(e,t){t=Tc(e,t);const n=vo(e.locales||{},t)||{},s=vo(e.themeConfig&&e.themeConfig.locales||{},t)||{};return Rn(yt(yt({},e),n),{themeConfig:Rn(yt(yt({},e.themeConfig),s),{locales:{}}),locales:{}})}function Tc(e,t){if(!wc)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}function Ac(e){const t=e||En();return xs(()=>Ec(Tn.value,t.path))}function Sc(e){const t=e||En();return xs(()=>t.data)}function Oc(e,t){const n=Array.from(document.querySelectorAll("meta"));let s=!0;const r=o=>{if(s){s=!1;return}n.forEach(i=>document.head.removeChild(i)),n.length=0,o&&o.length&&o.forEach(i=>{const l=Pc(i);document.head.appendChild(l),n.push(l)})};Vi(()=>{const o=e.data,i=t.value,l=o&&o.title,c=o&&o.description,a=o&&o.frontmatter.head;document.title=(l?l+" | ":"")+i.title,r([["meta",{charset:"utf-8"}],["meta",{name:"viewport",content:"width=device-width,initial-scale=1"}],["meta",{name:"description",content:c||i.description}],...i.head,...a&&Ic(a)||[]])})}function Pc([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function Mc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ic(e){return e.filter(t=>!Mc(t))}const Rc="modulepreload",xo={},Lc="/",$c=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Lc}${s}`,s in xo)return;xo[s]=!0;const r=s.endsWith(".css"),o=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${o}`))return;const i=document.createElement("link");if(i.rel=r?"stylesheet":Rc,r||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),r)return new Promise((l,c)=>{i.addEventListener("load",l),i.addEventListener("error",c)})})).then(()=>t())};var An=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const Fc=Bi(()=>$c(()=>import("./Element.e72f51e6.js"),[])),Hc={components:{Element:Fc},props:{list:Array,level:{type:Number,default:2}},setup(){return{isClicked:Pe(!1)}}},Nc={class:"navbar__list"};function Dc(e,t,n,s,r,o){const i=an("Element");return Re(),qe("ul",Nc,[(Re(!0),qe(ge,null,xr(n.list,l=>(Re(),Kr(i,{key:l.type+l.name,page:l,level:n.level},null,8,["page","level"]))),128))])}var wo=An(Hc,[["render",Dc]]),Cf=Object.freeze(Object.defineProperty({__proto__:null,default:wo},Symbol.toStringTag,{value:"Module"}));const jc={},Vc={class:"hamburger"},kc=_e("div",{class:"hamburger__cheese"},null,-1),Uc=_e("div",{class:"hamburger__meat"},null,-1),Bc=_e("div",{class:"hamburger__bun"},null,-1),Kc=[kc,Uc,Bc];function Wc(e,t){return Re(),qe("div",Vc,Kc)}var qc=An(jc,[["render",Wc]]);function Gc(){document.querySelectorAll(".hamburger--clicked").forEach(t=>t.click())}const Yc=e=>(Oi("data-v-6e0ba27d"),e=e(),Pi(),e),Jc=Yc(()=>_e("p",{class:"title"},"Debug",-1)),zc={class:"block"},Xc={class:"block"},Zc={class:"block"};At({__name:"Debug",setup(e){const t=Pe(null),n=Pe(!1);return pt(n,s=>{s===!1&&(t.value.scrollTop=0)}),(s,r)=>(Re(),qe("div",{class:ut(["debug",{open:n.value}]),ref_key:"el",ref:t,onClick:r[0]||(r[0]=o=>n.value=!n.value)},[Jc,_e("pre",zc,"$page "+Gt(s.$page),1),_e("pre",Xc,"$siteByRoute "+Gt(s.$siteByRoute),1),_e("pre",Zc,"$site "+Gt(s.$site),1)],2))}});const Qc={components:{Navbar:wo,Hamburger:qc},setup(){const e=bo(),{pages:t}=e.value.customData,n=Pe(!1);return{pages:t,isClicked:n,hideNavbars:Gc}}},ef={class:"navbar-container"},tf={class:"content-container"};function nf(e,t,n,s,r,o){const i=an("Hamburger"),l=an("Navbar"),c=an("Content");return Re(),qe(ge,null,[_e("nav",null,[_e("div",ef,[ee(i,{class:ut({"hamburger--clicked":s.isClicked}),onClick:t[0]||(t[0]=a=>s.isClicked=!s.isClicked)},null,8,["class"]),_e("div",{class:ut(["navbar navbar-first",{"navbar--show":s.isClicked,"navbar--unclickable":!s.isClicked}])},[ee(l,{list:s.pages},null,8,["list"])],2)])]),_e("main",{onClick:t[1]||(t[1]=(...a)=>s.hideNavbars&&s.hideNavbars(...a))},[_e("div",tf,[ee(c)])])],64)}var sf=An(Qc,[["render",nf]]);const rf=At({__name:"404",setup(e){return window.location.replace("https://canicjusz.github.io/404.html"),()=>{}}}),of={setup(){const e=bo(),{links:t}=e.value.customData,n=mo(),r=n.route.data.relativePath.slice(0,-3),o=Pe("/"+r),i=r.split("/").pop(),c=t[i].map(a=>({lang:a.split("/")[2],link:a}));return pt(o,a=>{n.go(a)}),{translations:c,selected:o}}},lf=["value"];function cf(e,t,n,s,r,o){return Ui((Re(),qe("select",{"onUpdate:modelValue":t[0]||(t[0]=i=>s.selected=i)},[(Re(!0),qe(ge,null,xr(s.translations,i=>(Re(),qe("option",{key:i.lang,value:i.link},Gt(i.lang),9,lf))),128))],512)),[[lc,s.selected]])}var ff=An(of,[["render",cf]]),Sn={Layout:sf,NotFound:rf,enhanceApp({app:e}){e.component("SelectLanguage",ff)}};const As=new Set,Co=()=>document.createElement("link"),uf=e=>{const t=Co();t.rel="prefetch",t.href=e,document.head.appendChild(t)},af=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let On;const df=nt&&(On=Co())&&On.relList&&On.relList.supports&&On.relList.supports("prefetch")?uf:af;function hf(){if(!nt||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!As.has(c)){As.add(c);const a=po(c);df(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{target:i,hostname:l,pathname:c}=o,a=c.match(/\.\w+$/);a&&a[0]!==".html"||i!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(o):As.add(c))})})};is(s);const r=En();pt(()=>r.path,s),ls(()=>{n&&n.disconnect()})}const pf=Sn.NotFound||(()=>"404 Not Found"),gf={name:"VitePressApp",setup(){return hf(),()=>eo(Sn.Layout)}};function _f(){const e=yf(),t=mf();t.provide(go,e);const n=Ac(e.route),s=Sc(e.route);return nt&&Oc(e.route,n),yc(t,Tn,n,s),bc(t),Sn.enhanceApp&&Sn.enhanceApp({app:t,router:e,siteData:Tn}),{app:t,router:e}}function mf(){return uc(gf)}function yf(){let e=nt,t;return gc(n=>{let s=po(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),nt?(e=!1,import(s)):require(s)},pf)}if(nt){const{app:e,router:t}=_f();t.go().then(()=>{e.mount("#app")})}export{ge as F,qc as H,Cf as N,vf as T,An as _,_e as a,Pi as b,qe as c,_f as createApp,At as d,ee as e,xf as f,xr as g,wf as h,qr as i,Bi as j,$c as k,Gc as l,an as m,ut as n,Re as o,Oi as p,Kr as q,Pe as r,Vn as s,Gt as t,Mi as w}; diff --git a/docs/assets/index.md.8e680bc5.js b/docs/assets/index.md.e53be222.js similarity index 96% rename from docs/assets/index.md.8e680bc5.js rename to docs/assets/index.md.e53be222.js index 04cec37..1fd332a 100644 --- a/docs/assets/index.md.8e680bc5.js +++ b/docs/assets/index.md.e53be222.js @@ -1 +1 @@ -import{d as r,r as d,o as c,c as n,a as o,n as u,_ as p,p as h,b as f,e as m,f as v}from"./app.b9d21ddb.js";const s=a=>(h("data-v-30443e48"),a=a(),f(),a),b={class:"scene"},g=s(()=>o("div",{class:"cube__face cube__face--right"},"Welcome",-1)),w=s(()=>o("div",{class:"cube__face cube__face--left"},"Witam",-1)),y=s(()=>o("div",{class:"cube__face cube__face--top"},"Bonvenon",-1)),k=[g,w,y],x=r({__name:"Cube",setup(a){const e=d([!0,!1,!1]);function*l(){let t=1;for(;t=0?t-1:e.value.length-1;e.value[i]=!1,e.value[t]=!0,t===e.value.length-1?yield t=0:yield t++}}const _=l();return setInterval(()=>_.next().value,2e3),(t,i)=>(c(),n("div",b,[o("div",{class:u(["cube",{"show-top":e.value[2],"show-left":e.value[1],"show-right":e.value[0]}])},k,2)]))}});var C=p(x,[["__scopeId","data-v-30443e48"]]);const I=v('

Jan Michalak \u2013 web-dev hobbyist

Contact me:

My profiles on:

',5),T='{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio.","frontmatter":{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio."},"headers":[{"level":2,"title":"Contact me:","slug":"contact-me"},{"level":2,"title":"My profiles on:","slug":"my-profiles-on"}],"relativePath":"index.md","lastUpdated":1716128736357}',S={},V=Object.assign(S,{__name:"index",setup(a){return(e,l)=>(c(),n("div",null,[m(C),I]))}});export{T as __pageData,V as default}; +import{d as r,r as d,o as c,c as n,a as o,n as u,_ as p,p as h,b as f,e as m,f as v}from"./app.09bea5ba.js";const s=a=>(h("data-v-30443e48"),a=a(),f(),a),b={class:"scene"},g=s(()=>o("div",{class:"cube__face cube__face--right"},"Welcome",-1)),w=s(()=>o("div",{class:"cube__face cube__face--left"},"Witam",-1)),y=s(()=>o("div",{class:"cube__face cube__face--top"},"Bonvenon",-1)),k=[g,w,y],x=r({__name:"Cube",setup(a){const e=d([!0,!1,!1]);function*l(){let t=1;for(;t=0?t-1:e.value.length-1;e.value[i]=!1,e.value[t]=!0,t===e.value.length-1?yield t=0:yield t++}}const _=l();return setInterval(()=>_.next().value,2e3),(t,i)=>(c(),n("div",b,[o("div",{class:u(["cube",{"show-top":e.value[2],"show-left":e.value[1],"show-right":e.value[0]}])},k,2)]))}});var C=p(x,[["__scopeId","data-v-30443e48"]]);const I=v('

Jan Michalak \u2013 web-dev hobbyist

Contact me:

My profiles on:

',5),T='{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio.","frontmatter":{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio."},"headers":[{"level":2,"title":"Contact me:","slug":"contact-me"},{"level":2,"title":"My profiles on:","slug":"my-profiles-on"}],"relativePath":"index.md","lastUpdated":1716128736357}',S={},V=Object.assign(S,{__name:"index",setup(a){return(e,l)=>(c(),n("div",null,[m(C),I]))}});export{T as __pageData,V as default}; diff --git a/docs/assets/index.md.8e680bc5.lean.js b/docs/assets/index.md.e53be222.lean.js similarity index 95% rename from docs/assets/index.md.8e680bc5.lean.js rename to docs/assets/index.md.e53be222.lean.js index 7e4026b..cd73583 100644 --- a/docs/assets/index.md.8e680bc5.lean.js +++ b/docs/assets/index.md.e53be222.lean.js @@ -1 +1 @@ -import{d as r,r as d,o as c,c as n,a as o,n as u,_ as p,p as h,b as f,e as m,f as v}from"./app.b9d21ddb.js";const s=a=>(h("data-v-30443e48"),a=a(),f(),a),b={class:"scene"},g=s(()=>o("div",{class:"cube__face cube__face--right"},"Welcome",-1)),w=s(()=>o("div",{class:"cube__face cube__face--left"},"Witam",-1)),y=s(()=>o("div",{class:"cube__face cube__face--top"},"Bonvenon",-1)),k=[g,w,y],x=r({__name:"Cube",setup(a){const e=d([!0,!1,!1]);function*l(){let t=1;for(;t=0?t-1:e.value.length-1;e.value[i]=!1,e.value[t]=!0,t===e.value.length-1?yield t=0:yield t++}}const _=l();return setInterval(()=>_.next().value,2e3),(t,i)=>(c(),n("div",b,[o("div",{class:u(["cube",{"show-top":e.value[2],"show-left":e.value[1],"show-right":e.value[0]}])},k,2)]))}});var C=p(x,[["__scopeId","data-v-30443e48"]]);const I=v('',5),T='{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio.","frontmatter":{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio."},"headers":[{"level":2,"title":"Contact me:","slug":"contact-me"},{"level":2,"title":"My profiles on:","slug":"my-profiles-on"}],"relativePath":"index.md","lastUpdated":1716128736357}',S={},V=Object.assign(S,{__name:"index",setup(a){return(e,l)=>(c(),n("div",null,[m(C),I]))}});export{T as __pageData,V as default}; +import{d as r,r as d,o as c,c as n,a as o,n as u,_ as p,p as h,b as f,e as m,f as v}from"./app.09bea5ba.js";const s=a=>(h("data-v-30443e48"),a=a(),f(),a),b={class:"scene"},g=s(()=>o("div",{class:"cube__face cube__face--right"},"Welcome",-1)),w=s(()=>o("div",{class:"cube__face cube__face--left"},"Witam",-1)),y=s(()=>o("div",{class:"cube__face cube__face--top"},"Bonvenon",-1)),k=[g,w,y],x=r({__name:"Cube",setup(a){const e=d([!0,!1,!1]);function*l(){let t=1;for(;t=0?t-1:e.value.length-1;e.value[i]=!1,e.value[t]=!0,t===e.value.length-1?yield t=0:yield t++}}const _=l();return setInterval(()=>_.next().value,2e3),(t,i)=>(c(),n("div",b,[o("div",{class:u(["cube",{"show-top":e.value[2],"show-left":e.value[1],"show-right":e.value[0]}])},k,2)]))}});var C=p(x,[["__scopeId","data-v-30443e48"]]);const I=v('',5),T='{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio.","frontmatter":{"title":"Home","description":"Welcome to my website, it will serve as my blog and portfolio."},"headers":[{"level":2,"title":"Contact me:","slug":"contact-me"},{"level":2,"title":"My profiles on:","slug":"my-profiles-on"}],"relativePath":"index.md","lastUpdated":1716128736357}',S={},V=Object.assign(S,{__name:"index",setup(a){return(e,l)=>(c(),n("div",null,[m(C),I]))}});export{T as __pageData,V as default}; diff --git a/docs/assets/pages_English_portfolio.md.4f37d1b7.js b/docs/assets/pages_English_portfolio.md.4f37d1b7.js new file mode 100644 index 0000000..824bafc --- /dev/null +++ b/docs/assets/pages_English_portfolio.md.4f37d1b7.js @@ -0,0 +1 @@ +import{o as r,c as o,e,f as t,a,S as s}from"./app.09bea5ba.js";import{G as i,_ as n}from"./Grid.0285a3ac.js";const l=t('

Simple framework

Tech stack: PHP, MySQL

Repo

I started this project to delve into PHP and to understand how frameworks work. Despite it not being complete I already use it in my own projects. I gradually implement features that I need. For the moment it offers:

  • static and dynamic routing
  • enforcement of the MVC paradigm
  • support for environmental variables
  • support for databases and a built-in Query Builder
  • possibility to modify the contents of <head> from every view component.

School radio through PA system (team project)

Tech stack: Express.js, MySQL, Sass

Repo

It is a web app, in which students can vote for their favourite songs, that will play the next day during breaks. The Algorythm orders the queue in such a way that songs with the most votes are played during lunch breaks. The app is fully automated. The state of the queue and the currently played track are displayed on a screen in a hall.

alt text

Employment website

Tech stack: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)

Repo

A job posting service for esperantists inspired by the design and functionality of other such websites. There wasn't any decentralized place for job searching for esperantists. That's the primary reason why I created the app, besides I wanted to make the language more attractive and increase its status.

The service helped employers and esperanto organisations alike to create a personalized company profile and post job offerings. Potential employees could've edit their profiles and share their resumes. Access to job listings and all profiles was simplified by vertical searches.

Since the interest plummeted and because of lack of funding I decided to close the website after a year. Despite that you can see the project in its full glory on the presentation I gave below.

',16),p=a("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),c=t('

Component library for KaiOS mobile apps

Technologie: CSS, JS

Repozytorium

There wasn't any framework agnostic component library for creating native-looking apps on KaiOS system, so I had to create on myself. It precisely applies design guidelines provided in the official documentation of KaiOS.

You can easily customize the library to your liking by modifying the CSS variables found on the top of the file. The documentation and visual presentation can be found in the repository.

Dictionary as an addon

Tech stack: TypeScript, Svelte.js, Sass

Repo | Try it out on Chrome | Try it out on Firefox

An addon which searches for a definition through a thrird-partry API and displays it in a window below the selected text.

The thicness of the border, the size and the color of the text as well as the background color are fully customizable to improve accessibility.

alt text

Apps for KaiOS

Tech stack: Vue.js, Sass

  • Zipper (pics below) - a file archivizer. It is my most popular app for this system, it helped almost 2000 users
  • Flashcards - flashcards app with a simple spaced repetition system, which maximizes the rate of learning.
  • 10000h - a progress tracking app. Inspired by the 10000h rule.
',14),y='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/English/portfolio.md","lastUpdated":1716503851679}',h={},b=Object.assign(h,{__name:"portfolio",setup(d){return(m,g)=>(r(),o("div",null,[e(s),l,p,c,e(i,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{y as __pageData,b as default}; diff --git a/docs/assets/pages_English_portfolio.md.4f37d1b7.lean.js b/docs/assets/pages_English_portfolio.md.4f37d1b7.lean.js new file mode 100644 index 0000000..16b29cd --- /dev/null +++ b/docs/assets/pages_English_portfolio.md.4f37d1b7.lean.js @@ -0,0 +1 @@ +import{o as r,c as o,e,f as t,a,S as s}from"./app.09bea5ba.js";import{G as i,_ as n}from"./Grid.0285a3ac.js";const l=t('',16),p=a("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),c=t('',14),y='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/English/portfolio.md","lastUpdated":1716503851679}',h={},b=Object.assign(h,{__name:"portfolio",setup(d){return(m,g)=>(r(),o("div",null,[e(s),l,p,c,e(i,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{y as __pageData,b as default}; diff --git a/docs/assets/pages_English_portfolio.md.da74d676.js b/docs/assets/pages_English_portfolio.md.da74d676.js deleted file mode 100644 index 3f17b01..0000000 --- a/docs/assets/pages_English_portfolio.md.da74d676.js +++ /dev/null @@ -1 +0,0 @@ -import{o as t,c as r,e as o,f as e,a}from"./app.b9d21ddb.js";import{G as s,_ as i}from"./Grid.5ca7e5a0.js";const n=e('

A simple framework

Tech stack: PHP, MySQL

Repo

I started this project to delve into PHP and to understand how frameworks work. Despite it not being complete I already use it in my own projects. I gradually implement features that I need. For the moment it offers:

  • static and dynamic routing
  • enforcement of the MVC paradigm
  • support for environmental variables
  • support for databases and a built-in Query Builder
  • possibility to modify the contents of <head> from every view component.

School radio through PA system (team project)

Tech stack: Express.js, MySQL, Sass

Repo

It is a web app, in which students can vote for their favourite songs, that will play the next day during breaks. The Algorythm orders the queue in such a way that songs with the most votes are played during lunch breaks. The app is fully automated. The state of the queue and the currently played track are displayed on a screen in a hall.

alt text

Employment website

Tech stack: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)

Repo

A job posting service for esperantists inspired by the design and functionality of other such websites. There wasn't any decentralized place for job searching for esperantists. That's the primary reason why I created the app, besides I wanted to make the language more attractive and increase its status.

The service helped employers and esperanto organisations alike to create a personalized company profile and post job offerings. Potential employees could've edit their profiles and share their resumes. Access to job listings and all profiles was simplified by vertical searches.

Since the interest plummeted and because of lack of funding I decided to close the website after a year. Despite that you can see the project in its full glory on the presentation I gave below.

',16),l=a("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),p=e('

Component library for KaiOS mobile apps

Technologie: CSS, JS

Repozytorium

There wasn't any framework agnostic component library for creating native-looking apps on KaiOS system, so I had to create on myself. It precisely applies design guidelines provided in the official documentation of KaiOS.

You can easily customize the library to your liking by modifying the CSS variables found on the top of the file. The documentation and visual presentation can be found in the repository.

Dictionary as an addon

Tech stack: TypeScript, Svelte.js, Sass

Repo | Try it out on Chrome | Try it out on Firefox

An addon which searches for a definition through a thrird-partry API and displays it in a window below the selected text.

The thicness of the border, the size and the color of the text as well as the background color are fully customizable to improve accessibility.

alt text

Apps for KaiOS

Tech stack: Vue.js, Sass

  • Zipper (pics below) - a file archivizer. It is my most popular app for this system, it helped almost 2000 users
  • Flashcards - flashcards app with a simple spaced repetition system, which maximizes the rate of learning.
  • 10000h - a progress tracking app. Inspired by the 10000h rule.
',14),u='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/English/portfolio.md","lastUpdated":1716222218946}',c={},y=Object.assign(c,{__name:"portfolio",setup(h){return(d,m)=>(t(),r("div",null,[n,l,p,o(s,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{u as __pageData,y as default}; diff --git a/docs/assets/pages_English_portfolio.md.da74d676.lean.js b/docs/assets/pages_English_portfolio.md.da74d676.lean.js deleted file mode 100644 index 9db79fb..0000000 --- a/docs/assets/pages_English_portfolio.md.da74d676.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{o as t,c as r,e as o,f as e,a}from"./app.b9d21ddb.js";import{G as s,_ as i}from"./Grid.5ca7e5a0.js";const n=e('',16),l=a("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),p=e('',14),u='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/English/portfolio.md","lastUpdated":1716222218946}',c={},y=Object.assign(c,{__name:"portfolio",setup(h){return(d,m)=>(t(),r("div",null,[n,l,p,o(s,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{u as __pageData,y as default}; diff --git a/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.js b/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.js similarity index 98% rename from docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.js rename to docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.js index 213732c..ede9e6f 100644 --- a/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.js +++ b/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.js @@ -1 +1 @@ -import{_ as a,o as e,c as o,f as r}from"./app.b9d21ddb.js";var l="/create-keyboard/1.png",n="/create-keyboard/2.png",i="/create-keyboard/3.png",t="/create-keyboard/4.png",s="/create-keyboard/5.png",p="/create-keyboard/6.png",k="/create-keyboard/7.png",m="/create-keyboard/8.png",u="/create-keyboard/9.png",v="/create-keyboard/10.png",c="/create-keyboard/11.png";const P='{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!","frontmatter":{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!"},"headers":[{"level":2,"title":"Kiel krei la klavararan\u011Don","slug":"kiel-krei-la-klavararangon"},{"level":2,"title":"Kiel forigi la klavararan\u011Don","slug":"kiel-forigi-la-klavararangon"},{"level":2,"title":"Problemoj","slug":"problemoj"}],"relativePath":"pages/Esperanto/Teknologio/create-esperanto-layout-windows.md","lastUpdated":1709057980554}',d={},j=r('

Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo

En \u0109i tiu instruilo mi montros al vi kiel krei Esperantan klavararan\u011Don, per kiu oni povas skribi \u0109apelliterojn premante klavon AltGr.

Kiel krei la klavararan\u011Don

Unue, vi devas el\u015Duti programon, kiu ebligas krei proprajn klavararan\u011Dojn. Vi el\u015Dutos la programon el la oficiala retejo de Microsoft. Do ne zorgu, \u011Di ne enhavas komputilan viruson.

El\u015Dutoligilo

Poste malfermu la instalitan dosieron kaj se vi volas, \u015Dan\u011Du dosierujon, en kiun vi volas eltiri instalilon. Poste alklaku butonon Extract.

alt text

Navigu al la dosierujo kaj malfermu dosieron nomatan setup.

Alklaku Next. Elektu I Agree por akcepti la interkonsento pri uzado. Poste da\u016Dre alklakadu la butonon next. Je la fino, alklaku la butonon Close.

alt text

Entajpu msklc en la ser\u0109breton de Vindozo kaj malfermu la programon Microsoft Keyboard Layout Creator 1.4.

Kiam la programo lan\u0109os, alklaku la opcion File kaj elektu Load Existing Keyboard...

alt text

Tie vi elektu pretan klavararan\u011Don, mi elektis la usonanan internacian sed vi povas alian.

La klavaro i\u011Du plena. Nun vi redaktos minusklojn, elektu staton Alt+Ctrl (AltGr) kaj alklaku la klavojn por \u015Dan\u011Di ilian signon. Kiam vi \u015Dan\u011Das la signojn, memoru alklaki butonon All... kaj elekti la suban elektobutonon caps = shift, por ke CapsLock estu same traktata kiel Shift.

alt textalt text

Faru same por aliaj klavoj, la rezulto tiel aspektu:

alt text

Por redakti majusklojn, elektu staton Shift kaj denove alklaku la klavojn por \u015Dan\u011Di ilian signon. \u0108i-foje ne alklau la butonon All... La rezulto tiel aspektu:

alt text

Nun alklaku opcion Project kaj elektu Properties... por \u015Dan\u011Di la nomon, la priskribon, la kopirajton kaj aliajn ecojn de la klavararan\u011Do.

alt text

Se vi volas kontroli, \u0109u la klavararan\u011Do funkcias \u011Duste, alklaku opcion Project kaj elektu Test Keyboard Layout...

Se \u0109io bonas, denove alklaku opcion Project kaj elektu Build DLL and Setup Package...

Aperos fenestroj, sur la unua alklaku butonon Ne kaj Jes sur la dua, aperos dosierujo kun programo setup, malfermu \u011Din.

alt text

Se vi tion vidas, vi povas fermi \u0109iujn fenestrojn kaj restartigi vian komputilon.

Gratulon! Nun vi povas \u015Dan\u011Di klavararan\u011Dojn uzante fulmoklavon Win + Spacostango.

Kiel forigi la klavararan\u011Don

Se vi volas forigi la klavararan\u011Don, renavigu al la dosierujo kun la programo setup kaj malfermu \u011Din. Alklaku butonon Finish kaj akceptu atingokontrolon. Kiu aperos sur taskopleto, kiel sur la bildo:

alt text

Se vi tion vidas, vi sukcese forigis la klavararan\u011Don. Vi povas fermi \u0109iujn fenestrojn.

alt text

Problemoj

Se vi havis iujn ajn problemojn, sendu mesa\u011Don al mi per diskordo: janomi\u0125alako#9984, a\u016D per retpo\u015Dto: janmichalak@int.pl

',35),g=[j];function _(f,b,h,x,y,S){return e(),o("div",null,g)}var K=a(d,[["render",_]]);export{P as __pageData,K as default}; +import{_ as a,o as e,c as o,f as r}from"./app.09bea5ba.js";var l="/create-keyboard/1.png",n="/create-keyboard/2.png",i="/create-keyboard/3.png",t="/create-keyboard/4.png",s="/create-keyboard/5.png",p="/create-keyboard/6.png",k="/create-keyboard/7.png",m="/create-keyboard/8.png",u="/create-keyboard/9.png",v="/create-keyboard/10.png",c="/create-keyboard/11.png";const P='{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!","frontmatter":{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!"},"headers":[{"level":2,"title":"Kiel krei la klavararan\u011Don","slug":"kiel-krei-la-klavararangon"},{"level":2,"title":"Kiel forigi la klavararan\u011Don","slug":"kiel-forigi-la-klavararangon"},{"level":2,"title":"Problemoj","slug":"problemoj"}],"relativePath":"pages/Esperanto/Teknologio/create-esperanto-layout-windows.md","lastUpdated":1709057980554}',d={},j=r('

Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo

En \u0109i tiu instruilo mi montros al vi kiel krei Esperantan klavararan\u011Don, per kiu oni povas skribi \u0109apelliterojn premante klavon AltGr.

Kiel krei la klavararan\u011Don

Unue, vi devas el\u015Duti programon, kiu ebligas krei proprajn klavararan\u011Dojn. Vi el\u015Dutos la programon el la oficiala retejo de Microsoft. Do ne zorgu, \u011Di ne enhavas komputilan viruson.

El\u015Dutoligilo

Poste malfermu la instalitan dosieron kaj se vi volas, \u015Dan\u011Du dosierujon, en kiun vi volas eltiri instalilon. Poste alklaku butonon Extract.

alt text

Navigu al la dosierujo kaj malfermu dosieron nomatan setup.

Alklaku Next. Elektu I Agree por akcepti la interkonsento pri uzado. Poste da\u016Dre alklakadu la butonon next. Je la fino, alklaku la butonon Close.

alt text

Entajpu msklc en la ser\u0109breton de Vindozo kaj malfermu la programon Microsoft Keyboard Layout Creator 1.4.

Kiam la programo lan\u0109os, alklaku la opcion File kaj elektu Load Existing Keyboard...

alt text

Tie vi elektu pretan klavararan\u011Don, mi elektis la usonanan internacian sed vi povas alian.

La klavaro i\u011Du plena. Nun vi redaktos minusklojn, elektu staton Alt+Ctrl (AltGr) kaj alklaku la klavojn por \u015Dan\u011Di ilian signon. Kiam vi \u015Dan\u011Das la signojn, memoru alklaki butonon All... kaj elekti la suban elektobutonon caps = shift, por ke CapsLock estu same traktata kiel Shift.

alt textalt text

Faru same por aliaj klavoj, la rezulto tiel aspektu:

alt text

Por redakti majusklojn, elektu staton Shift kaj denove alklaku la klavojn por \u015Dan\u011Di ilian signon. \u0108i-foje ne alklau la butonon All... La rezulto tiel aspektu:

alt text

Nun alklaku opcion Project kaj elektu Properties... por \u015Dan\u011Di la nomon, la priskribon, la kopirajton kaj aliajn ecojn de la klavararan\u011Do.

alt text

Se vi volas kontroli, \u0109u la klavararan\u011Do funkcias \u011Duste, alklaku opcion Project kaj elektu Test Keyboard Layout...

Se \u0109io bonas, denove alklaku opcion Project kaj elektu Build DLL and Setup Package...

Aperos fenestroj, sur la unua alklaku butonon Ne kaj Jes sur la dua, aperos dosierujo kun programo setup, malfermu \u011Din.

alt text

Se vi tion vidas, vi povas fermi \u0109iujn fenestrojn kaj restartigi vian komputilon.

Gratulon! Nun vi povas \u015Dan\u011Di klavararan\u011Dojn uzante fulmoklavon Win + Spacostango.

Kiel forigi la klavararan\u011Don

Se vi volas forigi la klavararan\u011Don, renavigu al la dosierujo kun la programo setup kaj malfermu \u011Din. Alklaku butonon Finish kaj akceptu atingokontrolon. Kiu aperos sur taskopleto, kiel sur la bildo:

alt text

Se vi tion vidas, vi sukcese forigis la klavararan\u011Don. Vi povas fermi \u0109iujn fenestrojn.

alt text

Problemoj

Se vi havis iujn ajn problemojn, sendu mesa\u011Don al mi per diskordo: janomi\u0125alako#9984, a\u016D per retpo\u015Dto: janmichalak@int.pl

',35),g=[j];function _(f,b,h,x,y,S){return e(),o("div",null,g)}var K=a(d,[["render",_]]);export{P as __pageData,K as default}; diff --git a/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.lean.js b/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.lean.js similarity index 95% rename from docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.lean.js rename to docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.lean.js index e3c2cb8..c82a66b 100644 --- a/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.0b82bb24.lean.js +++ b/docs/assets/pages_Esperanto_Teknologio_create-esperanto-layout-windows.md.8a160d4d.lean.js @@ -1 +1 @@ -import{_ as a,o as e,c as o,f as r}from"./app.b9d21ddb.js";var l="/create-keyboard/1.png",n="/create-keyboard/2.png",i="/create-keyboard/3.png",t="/create-keyboard/4.png",s="/create-keyboard/5.png",p="/create-keyboard/6.png",k="/create-keyboard/7.png",m="/create-keyboard/8.png",u="/create-keyboard/9.png",v="/create-keyboard/10.png",c="/create-keyboard/11.png";const P='{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!","frontmatter":{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!"},"headers":[{"level":2,"title":"Kiel krei la klavararan\u011Don","slug":"kiel-krei-la-klavararangon"},{"level":2,"title":"Kiel forigi la klavararan\u011Don","slug":"kiel-forigi-la-klavararangon"},{"level":2,"title":"Problemoj","slug":"problemoj"}],"relativePath":"pages/Esperanto/Teknologio/create-esperanto-layout-windows.md","lastUpdated":1709057980554}',d={},j=r('',35),g=[j];function _(f,b,h,x,y,S){return e(),o("div",null,g)}var K=a(d,[["render",_]]);export{P as __pageData,K as default}; +import{_ as a,o as e,c as o,f as r}from"./app.09bea5ba.js";var l="/create-keyboard/1.png",n="/create-keyboard/2.png",i="/create-keyboard/3.png",t="/create-keyboard/4.png",s="/create-keyboard/5.png",p="/create-keyboard/6.png",k="/create-keyboard/7.png",m="/create-keyboard/8.png",u="/create-keyboard/9.png",v="/create-keyboard/10.png",c="/create-keyboard/11.png";const P='{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!","frontmatter":{"title":"Kiel krei Esperantan klavararan\u011Don \u0109e Vindozo","description":"\u0108u vi ne plu volas uzi programojn de ekstera liveranto por skribi \u0109apelliterojn a\u016D vi simple volas lerni kiel fari siajn proprajn klavararan\u011Dojn? Se jes, tiu \u0109i instrulilo estas por vi!"},"headers":[{"level":2,"title":"Kiel krei la klavararan\u011Don","slug":"kiel-krei-la-klavararangon"},{"level":2,"title":"Kiel forigi la klavararan\u011Don","slug":"kiel-forigi-la-klavararangon"},{"level":2,"title":"Problemoj","slug":"problemoj"}],"relativePath":"pages/Esperanto/Teknologio/create-esperanto-layout-windows.md","lastUpdated":1709057980554}',d={},j=r('',35),g=[j];function _(f,b,h,x,y,S){return e(),o("div",null,g)}var K=a(d,[["render",_]]);export{P as __pageData,K as default}; diff --git a/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.js b/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.js similarity index 96% rename from docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.js rename to docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.js index 19ed8fb..603a14c 100644 --- a/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.js +++ b/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.js @@ -1,4 +1,4 @@ -import{_ as o,o as n,c as a,a as e}from"./app.b9d21ddb.js";const L='{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars.","frontmatter":{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars."},"relativePath":"pages/Esperanto/Tradukoj/sole-en-lvivo.md","lastUpdated":1709057980554}',i={},t=e("h1",{id:"sole-en-lvivo-tylko-we-lwowie"},"Sole en Lvivo (Tylko we Lwowie)",-1),l=e("p",null,'Pola folklora kanto pri Lvivo el 1939 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas Henryk Wars. Sube estas pole kantita versio el filmo "La vagabondoj" (W\u0142\xF3cz\u0119gi).',-1),s=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/lHBiAhiddJ8",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),r=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Aliaj volas voja\u011Di eksteren +import{_ as o,o as n,c as a,a as e}from"./app.09bea5ba.js";const L='{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars.","frontmatter":{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars."},"relativePath":"pages/Esperanto/Tradukoj/sole-en-lvivo.md","lastUpdated":1709057980554}',i={},t=e("h1",{id:"sole-en-lvivo-tylko-we-lwowie"},"Sole en Lvivo (Tylko we Lwowie)",-1),l=e("p",null,'Pola folklora kanto pri Lvivo el 1939 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas Henryk Wars. Sube estas pole kantita versio el filmo "La vagabondoj" (W\u0142\xF3cz\u0119gi).',-1),s=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/lHBiAhiddJ8",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),r=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Aliaj volas voja\u011Di eksteren Vienen, Parizen, Londonen Sed mi el Lvivo neniam movi\u011Dos! Se ne, Dio punon donu! diff --git a/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.lean.js b/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.lean.js similarity index 96% rename from docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.lean.js rename to docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.lean.js index 19ed8fb..603a14c 100644 --- a/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.ca5ec4dc.lean.js +++ b/docs/assets/pages_Esperanto_Tradukoj_sole-en-lvivo.md.2979757a.lean.js @@ -1,4 +1,4 @@ -import{_ as o,o as n,c as a,a as e}from"./app.b9d21ddb.js";const L='{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars.","frontmatter":{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars."},"relativePath":"pages/Esperanto/Tradukoj/sole-en-lvivo.md","lastUpdated":1709057980554}',i={},t=e("h1",{id:"sole-en-lvivo-tylko-we-lwowie"},"Sole en Lvivo (Tylko we Lwowie)",-1),l=e("p",null,'Pola folklora kanto pri Lvivo el 1939 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas Henryk Wars. Sube estas pole kantita versio el filmo "La vagabondoj" (W\u0142\xF3cz\u0119gi).',-1),s=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/lHBiAhiddJ8",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),r=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Aliaj volas voja\u011Di eksteren +import{_ as o,o as n,c as a,a as e}from"./app.09bea5ba.js";const L='{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars.","frontmatter":{"title":"Sole en Lvivo","description":"Poezia traduko de pola folklora kanto pri Lvivo el 1939 titolita \\"Tylko we Lwowie\\", la originan tekston kreis Henryk Wars."},"relativePath":"pages/Esperanto/Tradukoj/sole-en-lvivo.md","lastUpdated":1709057980554}',i={},t=e("h1",{id:"sole-en-lvivo-tylko-we-lwowie"},"Sole en Lvivo (Tylko we Lwowie)",-1),l=e("p",null,'Pola folklora kanto pri Lvivo el 1939 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas Henryk Wars. Sube estas pole kantita versio el filmo "La vagabondoj" (W\u0142\xF3cz\u0119gi).',-1),s=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/lHBiAhiddJ8",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),r=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Aliaj volas voja\u011Di eksteren Vienen, Parizen, Londonen Sed mi el Lvivo neniam movi\u011Dos! Se ne, Dio punon donu! diff --git a/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.js b/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.js similarity index 89% rename from docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.js rename to docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.js index 5be30e2..f12f198 100644 --- a/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.js +++ b/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.js @@ -1,4 +1,4 @@ -import{_ as n,o as a,c as t,a as e}from"./app.b9d21ddb.js";const f='{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\".","frontmatter":{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\"."},"relativePath":"pages/Esperanto/Tradukoj/teda-tempo-por-legiano.md","lastUpdated":1709057980554}',i={},o=e("h1",{id:"teda-tempo-por-legiano-ciezkie-czasy-legionera"},"Teda tempo por legiano (Ci\u0119\u017Ckie czasy legionera)",-1),u=e("p",null,"Pola legia kanto el 1917 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas nekonata. Sube estas pole kantita versio, beda\u016Drinde ne plene, mankas la lasta strofo.",-1),r=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/D90AjwmQlag",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),d=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Teda tempo por legiano, un', du, tri, +import{_ as n,o as a,c as t,a as e}from"./app.09bea5ba.js";const f='{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\".","frontmatter":{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\"."},"relativePath":"pages/Esperanto/Tradukoj/teda-tempo-por-legiano.md","lastUpdated":1709057980554}',i={},o=e("h1",{id:"teda-tempo-por-legiano-ciezkie-czasy-legionera"},"Teda tempo por legiano (Ci\u0119\u017Ckie czasy legionera)",-1),u=e("p",null,"Pola legia kanto el 1917 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas nekonata. Sube estas pole kantita versio, beda\u016Drinde ne plene, mankas la lasta strofo.",-1),r=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/D90AjwmQlag",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),l=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Teda tempo por legiano, un', du, tri, Turmento - lia kompano, un', du, tri, Fari multe, man\u011Di poke, Neplendante mar\u015Di longe, un', du, un', du, tri! @@ -37,4 +37,4 @@ Nia kara le\u016Dtenanto, un', du, tri, Frue veki\u011Dis pro kanto, un', du, tri, A\u016D ne man\u011Dis \u011Denerale, \u0108ar aspektas li tre pale, un', du, un', du, tri! -`)])],-1),l=[o,u,r,d];function s(p,m,c,k,g,v){return a(),t("div",null,l)}var b=n(i,[["render",s]]);export{f as __pageData,b as default}; +`)])],-1),d=[o,u,r,l];function s(p,m,c,k,g,v){return a(),t("div",null,d)}var b=n(i,[["render",s]]);export{f as __pageData,b as default}; diff --git a/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.lean.js b/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.lean.js similarity index 89% rename from docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.lean.js rename to docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.lean.js index 5be30e2..f12f198 100644 --- a/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.94b4c6f3.lean.js +++ b/docs/assets/pages_Esperanto_Tradukoj_teda-tempo-por-legiano.md.cebd761a.lean.js @@ -1,4 +1,4 @@ -import{_ as n,o as a,c as t,a as e}from"./app.b9d21ddb.js";const f='{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\".","frontmatter":{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\"."},"relativePath":"pages/Esperanto/Tradukoj/teda-tempo-por-legiano.md","lastUpdated":1709057980554}',i={},o=e("h1",{id:"teda-tempo-por-legiano-ciezkie-czasy-legionera"},"Teda tempo por legiano (Ci\u0119\u017Ckie czasy legionera)",-1),u=e("p",null,"Pola legia kanto el 1917 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas nekonata. Sube estas pole kantita versio, beda\u016Drinde ne plene, mankas la lasta strofo.",-1),r=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/D90AjwmQlag",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),d=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Teda tempo por legiano, un', du, tri, +import{_ as n,o as a,c as t,a as e}from"./app.09bea5ba.js";const f='{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\".","frontmatter":{"title":"Teda tempo por legiano","description":"Poezia traduko de pola legia kanto el 1917 titolita \\"Ci\u0119\u017Ckie czasy legionera\\"."},"relativePath":"pages/Esperanto/Tradukoj/teda-tempo-por-legiano.md","lastUpdated":1709057980554}',i={},o=e("h1",{id:"teda-tempo-por-legiano-ciezkie-czasy-legionera"},"Teda tempo por legiano (Ci\u0119\u017Ckie czasy legionera)",-1),u=e("p",null,"Pola legia kanto el 1917 tradukita (poezie) de mi, \u011Dia a\u016Dtoro estas nekonata. Sube estas pole kantita versio, beda\u016Drinde ne plene, mankas la lasta strofo.",-1),r=e("div",{class:"block-embed block-embed-service-youtube"},[e("iframe",{type:"text/html",src:"//www.youtube.com/embed/D90AjwmQlag",frameborder:"0",width:"auto",height:"auto",webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:""})],-1),l=e("div",{class:"language-"},[e("pre",null,[e("code",null,`Teda tempo por legiano, un', du, tri, Turmento - lia kompano, un', du, tri, Fari multe, man\u011Di poke, Neplendante mar\u015Di longe, un', du, un', du, tri! @@ -37,4 +37,4 @@ Nia kara le\u016Dtenanto, un', du, tri, Frue veki\u011Dis pro kanto, un', du, tri, A\u016D ne man\u011Dis \u011Denerale, \u0108ar aspektas li tre pale, un', du, un', du, tri! -`)])],-1),l=[o,u,r,d];function s(p,m,c,k,g,v){return a(),t("div",null,l)}var b=n(i,[["render",s]]);export{f as __pageData,b as default}; +`)])],-1),d=[o,u,r,l];function s(p,m,c,k,g,v){return a(),t("div",null,d)}var b=n(i,[["render",s]]);export{f as __pageData,b as default}; diff --git a/docs/assets/pages_Polski_portfolio.md.312e9e7d.js b/docs/assets/pages_Polski_portfolio.md.312e9e7d.js deleted file mode 100644 index f58a296..0000000 --- a/docs/assets/pages_Polski_portfolio.md.312e9e7d.js +++ /dev/null @@ -1,22 +0,0 @@ -import{o as n,c as r,h as o,e as t,a as e,f as i,i as a}from"./app.b9d21ddb.js";import{_ as s,G as l}from"./Grid.5ca7e5a0.js";const c=e("h1",{id:"prosty-framework"},"Prosty framework",-1),z=e("p",null,[e("strong",null,[e("small",null,"Technologie: PHP, MySQL")])],-1),p=e("p",null,[e("a",{href:"https://github.com/canicjusz/framework",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),w=i('

Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP. Mimo \u017Ce jeszcze nie jest kompletny, to ju\u017C go u\u017Cywam go do tworzenia w\u0142asnych aplikacji w PHP. Stopniowo implementuj\u0119 t\u0119 funkcjonalno\u015B\u0107, kt\xF3ra jest mi potrzebna. Na t\u0119 chwil\u0119 framework oferuje:

  • statyczny i dynamiczny routing,
  • narzucanie wzorca MVC,
  • obs\u0142uga zmiennych \u015Brodowiskowych,
  • obs\u0142uga baz danych oraz wzbudowany Query Builder,
  • mo\u017Cliwo\u015B\u0107 modyfikowania zawarto\u015Bci <head> z poziomu ka\u017Cdego komponentu wizualnego strony.

Szkolne radio poprzez radiow\u0119ze\u0142 (projekt zespo\u0142owy)

Technologie: Express.js, MySQL, Sass

Repozytorium

',5),k=e("p",null,"Stworzenie aplikacji web'owej, w kt\xF3rej uczniowie mog\u0105 zg\u0142asza\u0107 piosenki, kt\xF3re maj\u0105 gra\u0107 w trakcie przerw w nast\u0119pnym dniu. Algorytm ustawia kolejk\u0119 w taki spos\xF3b, \u017Ce piosenki z najwi\u0119ksz\u0105 liczb\u0105 g\u0142os\xF3w lec\u0105 w trakcie przerw obiadowych. Program w pe\u0142ni zautomatyzowany. Status kolejki i grany utw\xF3r s\u0105 wy\u015Bwietlane na telewizorze w szkolnym holu.",-1),y=e("p",null,[e("img",{src:s,alt:"alt text",class:"center"})],-1),u=e("h1",{id:"serwis-rekrutacyjny"},"Serwis rekrutacyjny",-1),d=e("p",null,[e("strong",null,[e("small",null,"Technologie: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)")])],-1),m=e("p",null,[e("a",{href:"https://github.com/canicjusz/laborperejo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),j=e("p",null,"Serwis rekrutacyjnego dla esperantyst\xF3w zainspirowany funkcjonalno\u015Bci\u0105 i wygl\u0105dem innych du\u017Cych serwis\xF3w. Powsta\u0142 ze wzgl\u0119du na brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w. Poza tym chcia\u0142em zwi\u0119kszy\u0107 atrakcyjno\u015B\u0107 i presti\u017C j\u0119zyka.",-1),g=e("p",null,"Aplikacja pozwala\u0142a przedsi\u0119biorcom i przede wszystkim organizacjom esperanckim stworzenie profilu firmy i dodawanie ofert pracy. U\u017Cytkownicy mogli edytowa\u0107 swoje profile oraz udost\u0119pnia\u0107 swoje CV. Profile u\u017Cytkownik\xF3w i firm oraz oferty pracy mo\u017Cna by\u0142o filtrowa\u0107 poprzez przegl\u0105dark\u0119.",-1),h=e("p",null,"Z powodu zaniku zainteresowania i braku funduszy zdecydowa\u0142em si\u0119 zamkn\u0105\u0107 stron\u0119 po roku. Mimo to mo\u017Cna zobaczy\u0107 pe\u0142n\u0105 funkcjonalno\u015B\u0107 strony w prezentacji poni\u017Cej:",-1),_=e("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),b=e("h1",{id:"biblioteka-komponentow-ui-dla-aplikacji-mobilnych-na-system-kaios"},"Biblioteka komponent\xF3w UI dla aplikacji mobilnych na system KaiOS",-1),f=e("p",null,[e("strong",null,[e("small",null,"Technologie: CSS, JS")])],-1),S=e("p",null,[e("a",{href:"https://github.com/canicjusz/KaiOS-native-UI",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),P=e("p",null,[a("Brak framework agnostic biblioteki UI zmusi\u0142 mnie do stworzenia niewielkiej biblioteki, kt\xF3ra wiernie odwzorowuje design'owe wytyczne zawarte w oficjalnej dokumentacji KaiOS. "),o(" Biblioteka stosuje metodologi\u0119 nazewnictwa BEM. ")],-1),T=e("p",null,"Bibliotek\u0119 mo\u017Cna w bardzo \u0142atwy spos\xF3b dostosowa\u0107 do w\u0142asnych potrzeb zmieniaj\u0105c jedynie zmienne CSS na pocz\u0105tku pliku. Dokumentacja i prezentacja wygl\u0105du znajduje si\u0119 na repozytorium.",-1),v=e("h1",{id:"slownik-jako-wtyczka"},"S\u0142ownik jako wtyczka",-1),C=e("p",null,[e("strong",null,[e("small",null,"Technologie: TypeScript, Svelte.js, Sass")])],-1),A=e("p",null,[e("a",{href:"https://github.com/canicjusz/plena-vortaro",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")]),a(" | "),e("a",{href:"https://chromewebstore.google.com/detail/plena-vortaro/kfnageeffnimnlohcgpnplfdgdnmolpo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Chrome")]),a(" | "),e("a",{href:"https://addons.mozilla.org/en-US/firefox/addon/plenavortaro/",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Firefox")])],-1),M=e("p",null,"Wtyczka, kt\xF3ra po zaznaczeniu s\u0142owa wyszukuje definicj\u0119 poprzez API jednego ze s\u0142ownik\xF3w i wy\u015Bwietla definicj\u0119 w okienku pod zaznaczonym tekstem.",-1),R=e("p",null,"Grubo\u015B\u0107 obw\xF3dki okienka, wielko\u015B\u0107 oraz kolor tekstu, jak i kolor t\u0142a s\u0105 w pe\u0142ni modyfikowalne w celach u\u0142atwienia dost\u0119pu dla os\xF3b z niepe\u0142nosprawno\u015Bciami.",-1),V=e("p",{class:"center"},[e("img",{src:"https://raw.githubusercontent.com/canicjusz/plena-vortaro/master/showcase.gif",alt:"alt text"})],-1),B=i('

Aplikacje na system KaiOS

Technologie: Vue.js, Sass

  • Zipper (zdj\u0119cia poni\u017Cej) - Kompresor plik\xF3w - pozwala kompresowa\u0107 i dekompresowa\u0107 pliki. Moja najpopularniejsza aplikacja, pomog\u0142a prawie 2000 u\u017Cytkownik\xF3w
  • Flashcards - Fiszki wykorzystuj\u0105ce prosty system powtarzania w odst\u0119pach czasu, aby zmaksymalizowa\u0107 wyniki
  • 10000h - Program do \u015Bledzenia w\u0142asnych post\u0119p\xF3w na system KaiOS, zainspirowana zasad\u0105 10000 godzin
',3),E='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/Polski/portfolio.md","lastUpdated":1716218851642}',K={},D=Object.assign(K,{__name:"portfolio",setup(I){return(x,N)=>(n(),r("div",null,[c,z,p,o(" Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP, lepiej zrozumie\u0107 dzia\u0142anie framework'\xF3w oraz pozna\u0107 wyzwania, z jakimi autorzy takiego oprogramowania musz\u0105 si\u0119 zmaga\u0107. "),w,o(` -## Problem -Szkolny radiow\u0119ze\u0142 jest praktycznie nieu\u017Cywany, nale\u017Ca\u0142oby wykorzysta\u0107 t\u0119 infrastruktur\u0119 i przy okazji zaanga\u017Cowa\u0107 w projekt uczni\xF3w. -## Rozwi\u0105zanie `),k,o(" Jedna cz\u0119\u015B\u0107 aplikacji jest dost\u0119pna dla uczni\xF3w. Mog\u0105 dodawa\u0107 piosenki do listy wpisuj\u0105c link lub g\u0142osowa\u0107 na piosenki z listy poprzez wci\u015Bni\u0119cie przycisku. Ka\u017Cdy ucze\u0144 ma po jednym g\u0142osie dziennie. "),o(` -Oczywi\u015Bcie istnieje panel admina na has\u0142o, gdzie mo\u017Cna blokowa\u0107 piosenki r\u0119cznie (piosenki z przekle\u0144stwami s\u0105 banowane automatycznie). `),o(" Druga cz\u0119\u015B\u0107 jest dost\u0119pna w sieci lokalnej szko\u0142y. Zawiera stron\u0119, kt\xF3ra \u0142\u0105czy si\u0119 z SDK Spotify i puszcza muzyk\u0119 oraz stron\u0119, kt\xF3ra wy\u015Bwietla stan kolejki i aktualnie grany utw\xF3r. Strona ta jest wy\u015Bwietlana na telewizorze w szkolnym holu, co wida\u0107 na za\u0142\u0105czonym zdj\u0119ciu. "),o(" Panel admina dla tej cz\u0119\u015Bci aplikacji pozwala tworzy\u0107 szablony zawieraj\u0105ce czas rozpocz\u0119cia i zako\u0144czenia przerw oraz kalendarz, w kt\xF3rym mo\u017Cna zaznaczy\u0107 dni wolne (nie s\u0105 wtedy zliczane g\u0142osy, ani nie leci muzyka). "),y,o(` ## Czego nowego si\u0119 nauczy\u0142em -- Pracowanie z API i SDK Spotify -- identyfikacja anonimowych u\u017Cytkownik\xF3w -- Aktualizowanie danych na stronie "na \u017Cywo" przy u\u017Cyciu server sent events (SSE) `),u,d,m,o(` ## Problem -- marginalizacja os\xF3b m\xF3wi\u0105cych w esperanto na serwisach rekrutacyjnych; -- brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w, co utrudnia\u0142o znalezienie pracy jak i pracownik\xF3w; -- zwi\u0119kszenie atrakcyjno\u015Bci j\u0119zyka i przedstawienie j\u0119zyka jako sprawne narz\u0119dzie komercyjne. -## Rozwi\u0105zanie `),j,g,o(" Strona by\u0142a wyposa\u017Cona w ca\u0142kiem zaawansowan\u0105 przegl\u0105dark\u0119 do przegl\u0105dania profili u\u017Cytkownik\xF3w, firm oraz ofert pracy. "),h,o(" na dalsze utrzymywanie serwera, po roku "),_,o(" ## Czego nowego si\u0119 nauczy\u0142em "),o(" - Korzystanie z frameworka SvelteKit "),o(` - tworzenie aplikacji Back-end'owej przy u\u017Cyciu Node.js (dok\u0142adniej Express.js), -- tworzenie systemu rejestracji i logowania przy u\u017Cyciu ciasteczek, -- implementacja potwierdzania rejestracji i resetowanie has\u0142a poprzez jednorazowy link, `),o(" - cykliczne wysy\u0142anie e-mail'i, "),o(" - podstaw MySQL, "),o(" - tworzenie zaawansowanej wyszukiwarki, implementowanie paginacji "),o(" - automatyzowanie proces\xF3w przy u\u017Cyciu programu `cron`. "),o(" - Obs\u0142uga b\u0142\u0119d\xF3w z komunikatami dla u\u017Cytkownika "),b,f,S,o(` ## Problem -Brak framework agnostic biblioteki UI dla aplikacji mobilnych, kt\xF3ra wiernie na\u015Bladowa\u0142aby wygl\u0105d komponent\xF3w natywnych. -## Rozwi\u0105zanie `),P,T,o(` ## Czego nowego si\u0119 nauczy\u0142em -- popracowa\u0142em nad tworzeniem przejrzystego i czytelnego kodu, -- tworzenie dokumentacji. `),v,C,A,o(` ## Problem -Czytanie tekstu w drugim j\u0119zyku bywa trudne. Przeskakiwanie z tekstu do s\u0142ownika internetowego i wklejanie nieznanej frazy jest bardzo uci\u0105\u017Cliwe i czasoch\u0142onne, nale\u017Cy to upro\u015Bci\u0107. -## Rozwi\u0105zanie `),M,R,V,o(` ## Czego nowego si\u0119 nauczy\u0142em -- tworzenie wtyczek przegl\u0105darkowych, -- framework'a Svelte.js, `),o(" - korzystanie z ShadowRoot i Selection API, "),o(" - podstawy j\u0119zyka TypeScript. "),B,t(l,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{E as __pageData,D as default}; diff --git a/docs/assets/pages_Polski_portfolio.md.312e9e7d.lean.js b/docs/assets/pages_Polski_portfolio.md.312e9e7d.lean.js deleted file mode 100644 index c5569af..0000000 --- a/docs/assets/pages_Polski_portfolio.md.312e9e7d.lean.js +++ /dev/null @@ -1,22 +0,0 @@ -import{o as n,c as r,h as o,e as t,a as e,f as i,i as a}from"./app.b9d21ddb.js";import{_ as s,G as l}from"./Grid.5ca7e5a0.js";const c=e("h1",{id:"prosty-framework"},"Prosty framework",-1),z=e("p",null,[e("strong",null,[e("small",null,"Technologie: PHP, MySQL")])],-1),p=e("p",null,[e("a",{href:"https://github.com/canicjusz/framework",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),w=i('',5),k=e("p",null,"Stworzenie aplikacji web'owej, w kt\xF3rej uczniowie mog\u0105 zg\u0142asza\u0107 piosenki, kt\xF3re maj\u0105 gra\u0107 w trakcie przerw w nast\u0119pnym dniu. Algorytm ustawia kolejk\u0119 w taki spos\xF3b, \u017Ce piosenki z najwi\u0119ksz\u0105 liczb\u0105 g\u0142os\xF3w lec\u0105 w trakcie przerw obiadowych. Program w pe\u0142ni zautomatyzowany. Status kolejki i grany utw\xF3r s\u0105 wy\u015Bwietlane na telewizorze w szkolnym holu.",-1),y=e("p",null,[e("img",{src:s,alt:"alt text",class:"center"})],-1),u=e("h1",{id:"serwis-rekrutacyjny"},"Serwis rekrutacyjny",-1),d=e("p",null,[e("strong",null,[e("small",null,"Technologie: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)")])],-1),m=e("p",null,[e("a",{href:"https://github.com/canicjusz/laborperejo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),j=e("p",null,"Serwis rekrutacyjnego dla esperantyst\xF3w zainspirowany funkcjonalno\u015Bci\u0105 i wygl\u0105dem innych du\u017Cych serwis\xF3w. Powsta\u0142 ze wzgl\u0119du na brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w. Poza tym chcia\u0142em zwi\u0119kszy\u0107 atrakcyjno\u015B\u0107 i presti\u017C j\u0119zyka.",-1),g=e("p",null,"Aplikacja pozwala\u0142a przedsi\u0119biorcom i przede wszystkim organizacjom esperanckim stworzenie profilu firmy i dodawanie ofert pracy. U\u017Cytkownicy mogli edytowa\u0107 swoje profile oraz udost\u0119pnia\u0107 swoje CV. Profile u\u017Cytkownik\xF3w i firm oraz oferty pracy mo\u017Cna by\u0142o filtrowa\u0107 poprzez przegl\u0105dark\u0119.",-1),h=e("p",null,"Z powodu zaniku zainteresowania i braku funduszy zdecydowa\u0142em si\u0119 zamkn\u0105\u0107 stron\u0119 po roku. Mimo to mo\u017Cna zobaczy\u0107 pe\u0142n\u0105 funkcjonalno\u015B\u0107 strony w prezentacji poni\u017Cej:",-1),_=e("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),b=e("h1",{id:"biblioteka-komponentow-ui-dla-aplikacji-mobilnych-na-system-kaios"},"Biblioteka komponent\xF3w UI dla aplikacji mobilnych na system KaiOS",-1),f=e("p",null,[e("strong",null,[e("small",null,"Technologie: CSS, JS")])],-1),S=e("p",null,[e("a",{href:"https://github.com/canicjusz/KaiOS-native-UI",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),P=e("p",null,[a("Brak framework agnostic biblioteki UI zmusi\u0142 mnie do stworzenia niewielkiej biblioteki, kt\xF3ra wiernie odwzorowuje design'owe wytyczne zawarte w oficjalnej dokumentacji KaiOS. "),o(" Biblioteka stosuje metodologi\u0119 nazewnictwa BEM. ")],-1),T=e("p",null,"Bibliotek\u0119 mo\u017Cna w bardzo \u0142atwy spos\xF3b dostosowa\u0107 do w\u0142asnych potrzeb zmieniaj\u0105c jedynie zmienne CSS na pocz\u0105tku pliku. Dokumentacja i prezentacja wygl\u0105du znajduje si\u0119 na repozytorium.",-1),v=e("h1",{id:"slownik-jako-wtyczka"},"S\u0142ownik jako wtyczka",-1),C=e("p",null,[e("strong",null,[e("small",null,"Technologie: TypeScript, Svelte.js, Sass")])],-1),A=e("p",null,[e("a",{href:"https://github.com/canicjusz/plena-vortaro",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")]),a(" | "),e("a",{href:"https://chromewebstore.google.com/detail/plena-vortaro/kfnageeffnimnlohcgpnplfdgdnmolpo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Chrome")]),a(" | "),e("a",{href:"https://addons.mozilla.org/en-US/firefox/addon/plenavortaro/",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Firefox")])],-1),M=e("p",null,"Wtyczka, kt\xF3ra po zaznaczeniu s\u0142owa wyszukuje definicj\u0119 poprzez API jednego ze s\u0142ownik\xF3w i wy\u015Bwietla definicj\u0119 w okienku pod zaznaczonym tekstem.",-1),R=e("p",null,"Grubo\u015B\u0107 obw\xF3dki okienka, wielko\u015B\u0107 oraz kolor tekstu, jak i kolor t\u0142a s\u0105 w pe\u0142ni modyfikowalne w celach u\u0142atwienia dost\u0119pu dla os\xF3b z niepe\u0142nosprawno\u015Bciami.",-1),V=e("p",{class:"center"},[e("img",{src:"https://raw.githubusercontent.com/canicjusz/plena-vortaro/master/showcase.gif",alt:"alt text"})],-1),B=i('',3),E='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/Polski/portfolio.md","lastUpdated":1716218851642}',K={},D=Object.assign(K,{__name:"portfolio",setup(I){return(x,N)=>(n(),r("div",null,[c,z,p,o(" Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP, lepiej zrozumie\u0107 dzia\u0142anie framework'\xF3w oraz pozna\u0107 wyzwania, z jakimi autorzy takiego oprogramowania musz\u0105 si\u0119 zmaga\u0107. "),w,o(` -## Problem -Szkolny radiow\u0119ze\u0142 jest praktycznie nieu\u017Cywany, nale\u017Ca\u0142oby wykorzysta\u0107 t\u0119 infrastruktur\u0119 i przy okazji zaanga\u017Cowa\u0107 w projekt uczni\xF3w. -## Rozwi\u0105zanie `),k,o(" Jedna cz\u0119\u015B\u0107 aplikacji jest dost\u0119pna dla uczni\xF3w. Mog\u0105 dodawa\u0107 piosenki do listy wpisuj\u0105c link lub g\u0142osowa\u0107 na piosenki z listy poprzez wci\u015Bni\u0119cie przycisku. Ka\u017Cdy ucze\u0144 ma po jednym g\u0142osie dziennie. "),o(` -Oczywi\u015Bcie istnieje panel admina na has\u0142o, gdzie mo\u017Cna blokowa\u0107 piosenki r\u0119cznie (piosenki z przekle\u0144stwami s\u0105 banowane automatycznie). `),o(" Druga cz\u0119\u015B\u0107 jest dost\u0119pna w sieci lokalnej szko\u0142y. Zawiera stron\u0119, kt\xF3ra \u0142\u0105czy si\u0119 z SDK Spotify i puszcza muzyk\u0119 oraz stron\u0119, kt\xF3ra wy\u015Bwietla stan kolejki i aktualnie grany utw\xF3r. Strona ta jest wy\u015Bwietlana na telewizorze w szkolnym holu, co wida\u0107 na za\u0142\u0105czonym zdj\u0119ciu. "),o(" Panel admina dla tej cz\u0119\u015Bci aplikacji pozwala tworzy\u0107 szablony zawieraj\u0105ce czas rozpocz\u0119cia i zako\u0144czenia przerw oraz kalendarz, w kt\xF3rym mo\u017Cna zaznaczy\u0107 dni wolne (nie s\u0105 wtedy zliczane g\u0142osy, ani nie leci muzyka). "),y,o(` ## Czego nowego si\u0119 nauczy\u0142em -- Pracowanie z API i SDK Spotify -- identyfikacja anonimowych u\u017Cytkownik\xF3w -- Aktualizowanie danych na stronie "na \u017Cywo" przy u\u017Cyciu server sent events (SSE) `),u,d,m,o(` ## Problem -- marginalizacja os\xF3b m\xF3wi\u0105cych w esperanto na serwisach rekrutacyjnych; -- brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w, co utrudnia\u0142o znalezienie pracy jak i pracownik\xF3w; -- zwi\u0119kszenie atrakcyjno\u015Bci j\u0119zyka i przedstawienie j\u0119zyka jako sprawne narz\u0119dzie komercyjne. -## Rozwi\u0105zanie `),j,g,o(" Strona by\u0142a wyposa\u017Cona w ca\u0142kiem zaawansowan\u0105 przegl\u0105dark\u0119 do przegl\u0105dania profili u\u017Cytkownik\xF3w, firm oraz ofert pracy. "),h,o(" na dalsze utrzymywanie serwera, po roku "),_,o(" ## Czego nowego si\u0119 nauczy\u0142em "),o(" - Korzystanie z frameworka SvelteKit "),o(` - tworzenie aplikacji Back-end'owej przy u\u017Cyciu Node.js (dok\u0142adniej Express.js), -- tworzenie systemu rejestracji i logowania przy u\u017Cyciu ciasteczek, -- implementacja potwierdzania rejestracji i resetowanie has\u0142a poprzez jednorazowy link, `),o(" - cykliczne wysy\u0142anie e-mail'i, "),o(" - podstaw MySQL, "),o(" - tworzenie zaawansowanej wyszukiwarki, implementowanie paginacji "),o(" - automatyzowanie proces\xF3w przy u\u017Cyciu programu `cron`. "),o(" - Obs\u0142uga b\u0142\u0119d\xF3w z komunikatami dla u\u017Cytkownika "),b,f,S,o(` ## Problem -Brak framework agnostic biblioteki UI dla aplikacji mobilnych, kt\xF3ra wiernie na\u015Bladowa\u0142aby wygl\u0105d komponent\xF3w natywnych. -## Rozwi\u0105zanie `),P,T,o(` ## Czego nowego si\u0119 nauczy\u0142em -- popracowa\u0142em nad tworzeniem przejrzystego i czytelnego kodu, -- tworzenie dokumentacji. `),v,C,A,o(` ## Problem -Czytanie tekstu w drugim j\u0119zyku bywa trudne. Przeskakiwanie z tekstu do s\u0142ownika internetowego i wklejanie nieznanej frazy jest bardzo uci\u0105\u017Cliwe i czasoch\u0142onne, nale\u017Cy to upro\u015Bci\u0107. -## Rozwi\u0105zanie `),M,R,V,o(` ## Czego nowego si\u0119 nauczy\u0142em -- tworzenie wtyczek przegl\u0105darkowych, -- framework'a Svelte.js, `),o(" - korzystanie z ShadowRoot i Selection API, "),o(" - podstawy j\u0119zyka TypeScript. "),B,t(l,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{E as __pageData,D as default}; diff --git a/docs/assets/pages_Polski_portfolio.md.54ed9dcc.js b/docs/assets/pages_Polski_portfolio.md.54ed9dcc.js new file mode 100644 index 0000000..e7d9d70 --- /dev/null +++ b/docs/assets/pages_Polski_portfolio.md.54ed9dcc.js @@ -0,0 +1,22 @@ +import{o as r,c as t,e as i,h as o,a as e,f as n,i as a,S as s}from"./app.09bea5ba.js";import{_ as l,G as c}from"./Grid.0285a3ac.js";const z=e("h1",{id:"prosty-framework"},"Prosty framework",-1),p=e("p",null,[e("strong",null,[e("small",null,"Technologie: PHP, MySQL")])],-1),w=e("p",null,[e("a",{href:"https://github.com/canicjusz/framework",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),k=n('

Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP. Mimo \u017Ce jeszcze nie jest kompletny, to ju\u017C go u\u017Cywam go do tworzenia w\u0142asnych aplikacji w PHP. Stopniowo implementuj\u0119 t\u0119 funkcjonalno\u015B\u0107, kt\xF3ra jest mi potrzebna. Na t\u0119 chwil\u0119 framework oferuje:

  • statyczny i dynamiczny routing,
  • narzucanie wzorca MVC,
  • obs\u0142uga zmiennych \u015Brodowiskowych,
  • obs\u0142uga baz danych oraz wzbudowany Query Builder,
  • mo\u017Cliwo\u015B\u0107 modyfikowania zawarto\u015Bci <head> z poziomu ka\u017Cdego komponentu wizualnego strony.

Szkolne radio poprzez radiow\u0119ze\u0142 (projekt zespo\u0142owy)

Technologie: Express.js, MySQL, Sass

Repozytorium

',5),y=e("p",null,"Stworzenie aplikacji web'owej, w kt\xF3rej uczniowie mog\u0105 zg\u0142asza\u0107 piosenki, kt\xF3re maj\u0105 gra\u0107 w trakcie przerw w nast\u0119pnym dniu. Algorytm ustawia kolejk\u0119 w taki spos\xF3b, \u017Ce piosenki z najwi\u0119ksz\u0105 liczb\u0105 g\u0142os\xF3w lec\u0105 w trakcie przerw obiadowych. Program w pe\u0142ni zautomatyzowany. Status kolejki i grany utw\xF3r s\u0105 wy\u015Bwietlane na telewizorze w szkolnym holu.",-1),u=e("p",null,[e("img",{src:l,alt:"alt text",class:"center"})],-1),m=e("h1",{id:"serwis-rekrutacyjny"},"Serwis rekrutacyjny",-1),d=e("p",null,[e("strong",null,[e("small",null,"Technologie: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)")])],-1),j=e("p",null,[e("a",{href:"https://github.com/canicjusz/laborperejo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),g=e("p",null,"Serwis rekrutacyjnego dla esperantyst\xF3w zainspirowany funkcjonalno\u015Bci\u0105 i wygl\u0105dem innych du\u017Cych serwis\xF3w. Powsta\u0142 ze wzgl\u0119du na brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w. Poza tym chcia\u0142em zwi\u0119kszy\u0107 atrakcyjno\u015B\u0107 i presti\u017C j\u0119zyka.",-1),h=e("p",null,"Aplikacja pozwala\u0142a przedsi\u0119biorcom i przede wszystkim organizacjom esperanckim stworzenie profilu firmy i dodawanie ofert pracy. U\u017Cytkownicy mogli edytowa\u0107 swoje profile oraz udost\u0119pnia\u0107 swoje CV. Profile u\u017Cytkownik\xF3w i firm oraz oferty pracy mo\u017Cna by\u0142o filtrowa\u0107 poprzez przegl\u0105dark\u0119.",-1),_=e("p",null,"Z powodu zaniku zainteresowania i braku funduszy zdecydowa\u0142em si\u0119 zamkn\u0105\u0107 stron\u0119 po roku. Mimo to mo\u017Cna zobaczy\u0107 pe\u0142n\u0105 funkcjonalno\u015B\u0107 strony w prezentacji poni\u017Cej:",-1),b=e("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),f=e("h1",{id:"biblioteka-komponentow-ui-dla-aplikacji-mobilnych-na-system-kaios"},"Biblioteka komponent\xF3w UI dla aplikacji mobilnych na system KaiOS",-1),S=e("p",null,[e("strong",null,[e("small",null,"Technologie: CSS, JS")])],-1),P=e("p",null,[e("a",{href:"https://github.com/canicjusz/KaiOS-native-UI",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),T=e("p",null,[a("Brak framework agnostic biblioteki UI zmusi\u0142 mnie do stworzenia niewielkiej biblioteki, kt\xF3ra wiernie odwzorowuje design'owe wytyczne zawarte w oficjalnej dokumentacji KaiOS. "),o(" Biblioteka stosuje metodologi\u0119 nazewnictwa BEM. ")],-1),v=e("p",null,"Bibliotek\u0119 mo\u017Cna w bardzo \u0142atwy spos\xF3b dostosowa\u0107 do w\u0142asnych potrzeb zmieniaj\u0105c jedynie zmienne CSS na pocz\u0105tku pliku. Dokumentacja i prezentacja wygl\u0105du znajduje si\u0119 na repozytorium.",-1),C=e("h1",{id:"slownik-jako-wtyczka"},"S\u0142ownik jako wtyczka",-1),A=e("p",null,[e("strong",null,[e("small",null,"Technologie: TypeScript, Svelte.js, Sass")])],-1),M=e("p",null,[e("a",{href:"https://github.com/canicjusz/plena-vortaro",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")]),a(" | "),e("a",{href:"https://chromewebstore.google.com/detail/plena-vortaro/kfnageeffnimnlohcgpnplfdgdnmolpo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Chrome")]),a(" | "),e("a",{href:"https://addons.mozilla.org/en-US/firefox/addon/plenavortaro/",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Firefox")])],-1),R=e("p",null,"Wtyczka, kt\xF3ra po zaznaczeniu s\u0142owa wyszukuje definicj\u0119 poprzez API jednego ze s\u0142ownik\xF3w i wy\u015Bwietla definicj\u0119 w okienku pod zaznaczonym tekstem.",-1),V=e("p",null,"Grubo\u015B\u0107 obw\xF3dki okienka, wielko\u015B\u0107 oraz kolor tekstu, jak i kolor t\u0142a s\u0105 w pe\u0142ni modyfikowalne w celach u\u0142atwienia dost\u0119pu dla os\xF3b z niepe\u0142nosprawno\u015Bciami.",-1),B=e("p",{class:"center"},[e("img",{src:"https://raw.githubusercontent.com/canicjusz/plena-vortaro/master/showcase.gif",alt:"alt text"})],-1),K=n('

Aplikacje na system KaiOS

Technologie: Vue.js, Sass

  • Zipper (zdj\u0119cia poni\u017Cej) - Kompresor plik\xF3w - pozwala kompresowa\u0107 i dekompresowa\u0107 pliki. Moja najpopularniejsza aplikacja, pomog\u0142a prawie 2000 u\u017Cytkownik\xF3w
  • Flashcards - Fiszki wykorzystuj\u0105ce prosty system powtarzania w odst\u0119pach czasu, aby zmaksymalizowa\u0107 wyniki
  • 10000h - Program do \u015Bledzenia w\u0142asnych post\u0119p\xF3w na system KaiOS, zainspirowana zasad\u0105 10000 godzin
',3),D='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/Polski/portfolio.md","lastUpdated":1716503853707}',I={},Q=Object.assign(I,{__name:"portfolio",setup(x){return(N,O)=>(r(),t("div",null,[i(s),z,p,w,o(" Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP, lepiej zrozumie\u0107 dzia\u0142anie framework'\xF3w oraz pozna\u0107 wyzwania, z jakimi autorzy takiego oprogramowania musz\u0105 si\u0119 zmaga\u0107. "),k,o(` +## Problem +Szkolny radiow\u0119ze\u0142 jest praktycznie nieu\u017Cywany, nale\u017Ca\u0142oby wykorzysta\u0107 t\u0119 infrastruktur\u0119 i przy okazji zaanga\u017Cowa\u0107 w projekt uczni\xF3w. +## Rozwi\u0105zanie `),y,o(" Jedna cz\u0119\u015B\u0107 aplikacji jest dost\u0119pna dla uczni\xF3w. Mog\u0105 dodawa\u0107 piosenki do listy wpisuj\u0105c link lub g\u0142osowa\u0107 na piosenki z listy poprzez wci\u015Bni\u0119cie przycisku. Ka\u017Cdy ucze\u0144 ma po jednym g\u0142osie dziennie. "),o(` +Oczywi\u015Bcie istnieje panel admina na has\u0142o, gdzie mo\u017Cna blokowa\u0107 piosenki r\u0119cznie (piosenki z przekle\u0144stwami s\u0105 banowane automatycznie). `),o(" Druga cz\u0119\u015B\u0107 jest dost\u0119pna w sieci lokalnej szko\u0142y. Zawiera stron\u0119, kt\xF3ra \u0142\u0105czy si\u0119 z SDK Spotify i puszcza muzyk\u0119 oraz stron\u0119, kt\xF3ra wy\u015Bwietla stan kolejki i aktualnie grany utw\xF3r. Strona ta jest wy\u015Bwietlana na telewizorze w szkolnym holu, co wida\u0107 na za\u0142\u0105czonym zdj\u0119ciu. "),o(" Panel admina dla tej cz\u0119\u015Bci aplikacji pozwala tworzy\u0107 szablony zawieraj\u0105ce czas rozpocz\u0119cia i zako\u0144czenia przerw oraz kalendarz, w kt\xF3rym mo\u017Cna zaznaczy\u0107 dni wolne (nie s\u0105 wtedy zliczane g\u0142osy, ani nie leci muzyka). "),u,o(` ## Czego nowego si\u0119 nauczy\u0142em +- Pracowanie z API i SDK Spotify +- identyfikacja anonimowych u\u017Cytkownik\xF3w +- Aktualizowanie danych na stronie "na \u017Cywo" przy u\u017Cyciu server sent events (SSE) `),m,d,j,o(` ## Problem +- marginalizacja os\xF3b m\xF3wi\u0105cych w esperanto na serwisach rekrutacyjnych; +- brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w, co utrudnia\u0142o znalezienie pracy jak i pracownik\xF3w; +- zwi\u0119kszenie atrakcyjno\u015Bci j\u0119zyka i przedstawienie j\u0119zyka jako sprawne narz\u0119dzie komercyjne. +## Rozwi\u0105zanie `),g,h,o(" Strona by\u0142a wyposa\u017Cona w ca\u0142kiem zaawansowan\u0105 przegl\u0105dark\u0119 do przegl\u0105dania profili u\u017Cytkownik\xF3w, firm oraz ofert pracy. "),_,o(" na dalsze utrzymywanie serwera, po roku "),b,o(" ## Czego nowego si\u0119 nauczy\u0142em "),o(" - Korzystanie z frameworka SvelteKit "),o(` - tworzenie aplikacji Back-end'owej przy u\u017Cyciu Node.js (dok\u0142adniej Express.js), +- tworzenie systemu rejestracji i logowania przy u\u017Cyciu ciasteczek, +- implementacja potwierdzania rejestracji i resetowanie has\u0142a poprzez jednorazowy link, `),o(" - cykliczne wysy\u0142anie e-mail'i, "),o(" - podstaw MySQL, "),o(" - tworzenie zaawansowanej wyszukiwarki, implementowanie paginacji "),o(" - automatyzowanie proces\xF3w przy u\u017Cyciu programu `cron`. "),o(" - Obs\u0142uga b\u0142\u0119d\xF3w z komunikatami dla u\u017Cytkownika "),f,S,P,o(` ## Problem +Brak framework agnostic biblioteki UI dla aplikacji mobilnych, kt\xF3ra wiernie na\u015Bladowa\u0142aby wygl\u0105d komponent\xF3w natywnych. +## Rozwi\u0105zanie `),T,v,o(` ## Czego nowego si\u0119 nauczy\u0142em +- popracowa\u0142em nad tworzeniem przejrzystego i czytelnego kodu, +- tworzenie dokumentacji. `),C,A,M,o(` ## Problem +Czytanie tekstu w drugim j\u0119zyku bywa trudne. Przeskakiwanie z tekstu do s\u0142ownika internetowego i wklejanie nieznanej frazy jest bardzo uci\u0105\u017Cliwe i czasoch\u0142onne, nale\u017Cy to upro\u015Bci\u0107. +## Rozwi\u0105zanie `),R,V,B,o(` ## Czego nowego si\u0119 nauczy\u0142em +- tworzenie wtyczek przegl\u0105darkowych, +- framework'a Svelte.js, `),o(" - korzystanie z ShadowRoot i Selection API, "),o(" - podstawy j\u0119zyka TypeScript. "),K,i(c,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{D as __pageData,Q as default}; diff --git a/docs/assets/pages_Polski_portfolio.md.54ed9dcc.lean.js b/docs/assets/pages_Polski_portfolio.md.54ed9dcc.lean.js new file mode 100644 index 0000000..efa29d6 --- /dev/null +++ b/docs/assets/pages_Polski_portfolio.md.54ed9dcc.lean.js @@ -0,0 +1,22 @@ +import{o as r,c as t,e as i,h as o,a as e,f as n,i as a,S as s}from"./app.09bea5ba.js";import{_ as l,G as c}from"./Grid.0285a3ac.js";const z=e("h1",{id:"prosty-framework"},"Prosty framework",-1),p=e("p",null,[e("strong",null,[e("small",null,"Technologie: PHP, MySQL")])],-1),w=e("p",null,[e("a",{href:"https://github.com/canicjusz/framework",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),k=n('',5),y=e("p",null,"Stworzenie aplikacji web'owej, w kt\xF3rej uczniowie mog\u0105 zg\u0142asza\u0107 piosenki, kt\xF3re maj\u0105 gra\u0107 w trakcie przerw w nast\u0119pnym dniu. Algorytm ustawia kolejk\u0119 w taki spos\xF3b, \u017Ce piosenki z najwi\u0119ksz\u0105 liczb\u0105 g\u0142os\xF3w lec\u0105 w trakcie przerw obiadowych. Program w pe\u0142ni zautomatyzowany. Status kolejki i grany utw\xF3r s\u0105 wy\u015Bwietlane na telewizorze w szkolnym holu.",-1),u=e("p",null,[e("img",{src:l,alt:"alt text",class:"center"})],-1),m=e("h1",{id:"serwis-rekrutacyjny"},"Serwis rekrutacyjny",-1),d=e("p",null,[e("strong",null,[e("small",null,"Technologie: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)")])],-1),j=e("p",null,[e("a",{href:"https://github.com/canicjusz/laborperejo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),g=e("p",null,"Serwis rekrutacyjnego dla esperantyst\xF3w zainspirowany funkcjonalno\u015Bci\u0105 i wygl\u0105dem innych du\u017Cych serwis\xF3w. Powsta\u0142 ze wzgl\u0119du na brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w. Poza tym chcia\u0142em zwi\u0119kszy\u0107 atrakcyjno\u015B\u0107 i presti\u017C j\u0119zyka.",-1),h=e("p",null,"Aplikacja pozwala\u0142a przedsi\u0119biorcom i przede wszystkim organizacjom esperanckim stworzenie profilu firmy i dodawanie ofert pracy. U\u017Cytkownicy mogli edytowa\u0107 swoje profile oraz udost\u0119pnia\u0107 swoje CV. Profile u\u017Cytkownik\xF3w i firm oraz oferty pracy mo\u017Cna by\u0142o filtrowa\u0107 poprzez przegl\u0105dark\u0119.",-1),_=e("p",null,"Z powodu zaniku zainteresowania i braku funduszy zdecydowa\u0142em si\u0119 zamkn\u0105\u0107 stron\u0119 po roku. Mimo to mo\u017Cna zobaczy\u0107 pe\u0142n\u0105 funkcjonalno\u015B\u0107 strony w prezentacji poni\u017Cej:",-1),b=e("iframe",{class:"center",width:"560",height:"315",src:"https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485&start=176",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:""},null,-1),f=e("h1",{id:"biblioteka-komponentow-ui-dla-aplikacji-mobilnych-na-system-kaios"},"Biblioteka komponent\xF3w UI dla aplikacji mobilnych na system KaiOS",-1),S=e("p",null,[e("strong",null,[e("small",null,"Technologie: CSS, JS")])],-1),P=e("p",null,[e("a",{href:"https://github.com/canicjusz/KaiOS-native-UI",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")])],-1),T=e("p",null,[a("Brak framework agnostic biblioteki UI zmusi\u0142 mnie do stworzenia niewielkiej biblioteki, kt\xF3ra wiernie odwzorowuje design'owe wytyczne zawarte w oficjalnej dokumentacji KaiOS. "),o(" Biblioteka stosuje metodologi\u0119 nazewnictwa BEM. ")],-1),v=e("p",null,"Bibliotek\u0119 mo\u017Cna w bardzo \u0142atwy spos\xF3b dostosowa\u0107 do w\u0142asnych potrzeb zmieniaj\u0105c jedynie zmienne CSS na pocz\u0105tku pliku. Dokumentacja i prezentacja wygl\u0105du znajduje si\u0119 na repozytorium.",-1),C=e("h1",{id:"slownik-jako-wtyczka"},"S\u0142ownik jako wtyczka",-1),A=e("p",null,[e("strong",null,[e("small",null,"Technologie: TypeScript, Svelte.js, Sass")])],-1),M=e("p",null,[e("a",{href:"https://github.com/canicjusz/plena-vortaro",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Repozytorium")]),a(" | "),e("a",{href:"https://chromewebstore.google.com/detail/plena-vortaro/kfnageeffnimnlohcgpnplfdgdnmolpo",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Chrome")]),a(" | "),e("a",{href:"https://addons.mozilla.org/en-US/firefox/addon/plenavortaro/",target:"_blank",rel:"noopener noreferrer"},[e("strong",null,"Wypr\xF3buj na Firefox")])],-1),R=e("p",null,"Wtyczka, kt\xF3ra po zaznaczeniu s\u0142owa wyszukuje definicj\u0119 poprzez API jednego ze s\u0142ownik\xF3w i wy\u015Bwietla definicj\u0119 w okienku pod zaznaczonym tekstem.",-1),V=e("p",null,"Grubo\u015B\u0107 obw\xF3dki okienka, wielko\u015B\u0107 oraz kolor tekstu, jak i kolor t\u0142a s\u0105 w pe\u0142ni modyfikowalne w celach u\u0142atwienia dost\u0119pu dla os\xF3b z niepe\u0142nosprawno\u015Bciami.",-1),B=e("p",{class:"center"},[e("img",{src:"https://raw.githubusercontent.com/canicjusz/plena-vortaro/master/showcase.gif",alt:"alt text"})],-1),K=n('',3),D='{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w.","frontmatter":{"title":"Portfolio - Jan Michalak","description":"Prezentacja cz\u0119\u015Bci moich hobbistycznych projekt\xF3w."},"relativePath":"pages/Polski/portfolio.md","lastUpdated":1716503853707}',I={},Q=Object.assign(I,{__name:"portfolio",setup(x){return(N,O)=>(r(),t("div",null,[i(s),z,p,w,o(" Zacz\u0105\u0142em tworzy\u0107 ten projekt, aby zag\u0142\u0119bi\u0107\xA0si\u0119 w j\u0119zyk PHP, lepiej zrozumie\u0107 dzia\u0142anie framework'\xF3w oraz pozna\u0107 wyzwania, z jakimi autorzy takiego oprogramowania musz\u0105 si\u0119 zmaga\u0107. "),k,o(` +## Problem +Szkolny radiow\u0119ze\u0142 jest praktycznie nieu\u017Cywany, nale\u017Ca\u0142oby wykorzysta\u0107 t\u0119 infrastruktur\u0119 i przy okazji zaanga\u017Cowa\u0107 w projekt uczni\xF3w. +## Rozwi\u0105zanie `),y,o(" Jedna cz\u0119\u015B\u0107 aplikacji jest dost\u0119pna dla uczni\xF3w. Mog\u0105 dodawa\u0107 piosenki do listy wpisuj\u0105c link lub g\u0142osowa\u0107 na piosenki z listy poprzez wci\u015Bni\u0119cie przycisku. Ka\u017Cdy ucze\u0144 ma po jednym g\u0142osie dziennie. "),o(` +Oczywi\u015Bcie istnieje panel admina na has\u0142o, gdzie mo\u017Cna blokowa\u0107 piosenki r\u0119cznie (piosenki z przekle\u0144stwami s\u0105 banowane automatycznie). `),o(" Druga cz\u0119\u015B\u0107 jest dost\u0119pna w sieci lokalnej szko\u0142y. Zawiera stron\u0119, kt\xF3ra \u0142\u0105czy si\u0119 z SDK Spotify i puszcza muzyk\u0119 oraz stron\u0119, kt\xF3ra wy\u015Bwietla stan kolejki i aktualnie grany utw\xF3r. Strona ta jest wy\u015Bwietlana na telewizorze w szkolnym holu, co wida\u0107 na za\u0142\u0105czonym zdj\u0119ciu. "),o(" Panel admina dla tej cz\u0119\u015Bci aplikacji pozwala tworzy\u0107 szablony zawieraj\u0105ce czas rozpocz\u0119cia i zako\u0144czenia przerw oraz kalendarz, w kt\xF3rym mo\u017Cna zaznaczy\u0107 dni wolne (nie s\u0105 wtedy zliczane g\u0142osy, ani nie leci muzyka). "),u,o(` ## Czego nowego si\u0119 nauczy\u0142em +- Pracowanie z API i SDK Spotify +- identyfikacja anonimowych u\u017Cytkownik\xF3w +- Aktualizowanie danych na stronie "na \u017Cywo" przy u\u017Cyciu server sent events (SSE) `),m,d,j,o(` ## Problem +- marginalizacja os\xF3b m\xF3wi\u0105cych w esperanto na serwisach rekrutacyjnych; +- brak scentralizowanego miejsca na wakaty dla esperantyst\xF3w, co utrudnia\u0142o znalezienie pracy jak i pracownik\xF3w; +- zwi\u0119kszenie atrakcyjno\u015Bci j\u0119zyka i przedstawienie j\u0119zyka jako sprawne narz\u0119dzie komercyjne. +## Rozwi\u0105zanie `),g,h,o(" Strona by\u0142a wyposa\u017Cona w ca\u0142kiem zaawansowan\u0105 przegl\u0105dark\u0119 do przegl\u0105dania profili u\u017Cytkownik\xF3w, firm oraz ofert pracy. "),_,o(" na dalsze utrzymywanie serwera, po roku "),b,o(" ## Czego nowego si\u0119 nauczy\u0142em "),o(" - Korzystanie z frameworka SvelteKit "),o(` - tworzenie aplikacji Back-end'owej przy u\u017Cyciu Node.js (dok\u0142adniej Express.js), +- tworzenie systemu rejestracji i logowania przy u\u017Cyciu ciasteczek, +- implementacja potwierdzania rejestracji i resetowanie has\u0142a poprzez jednorazowy link, `),o(" - cykliczne wysy\u0142anie e-mail'i, "),o(" - podstaw MySQL, "),o(" - tworzenie zaawansowanej wyszukiwarki, implementowanie paginacji "),o(" - automatyzowanie proces\xF3w przy u\u017Cyciu programu `cron`. "),o(" - Obs\u0142uga b\u0142\u0119d\xF3w z komunikatami dla u\u017Cytkownika "),f,S,P,o(` ## Problem +Brak framework agnostic biblioteki UI dla aplikacji mobilnych, kt\xF3ra wiernie na\u015Bladowa\u0142aby wygl\u0105d komponent\xF3w natywnych. +## Rozwi\u0105zanie `),T,v,o(` ## Czego nowego si\u0119 nauczy\u0142em +- popracowa\u0142em nad tworzeniem przejrzystego i czytelnego kodu, +- tworzenie dokumentacji. `),C,A,M,o(` ## Problem +Czytanie tekstu w drugim j\u0119zyku bywa trudne. Przeskakiwanie z tekstu do s\u0142ownika internetowego i wklejanie nieznanej frazy jest bardzo uci\u0105\u017Cliwe i czasoch\u0142onne, nale\u017Cy to upro\u015Bci\u0107. +## Rozwi\u0105zanie `),R,V,B,o(` ## Czego nowego si\u0119 nauczy\u0142em +- tworzenie wtyczek przegl\u0105darkowych, +- framework'a Svelte.js, `),o(" - korzystanie z ShadowRoot i Selection API, "),o(" - podstawy j\u0119zyka TypeScript. "),K,i(c,{files:[{path:"/portfolio/zipper1.png"},{path:"/portfolio/zipper2.png"}]},null,8,["files"])]))}});export{D as __pageData,Q as default}; diff --git a/docs/assets/style.b6f43584.css b/docs/assets/style.8dde9333.css similarity index 98% rename from docs/assets/style.b6f43584.css rename to docs/assets/style.8dde9333.css index e30e479..7f1b88f 100644 --- a/docs/assets/style.b6f43584.css +++ b/docs/assets/style.8dde9333.css @@ -1 +1 @@ -@import"https://fonts.googleapis.com/css2?family=Lora&family=Roboto&display=swap";.scene[data-v-30443e48]{perspective:375px;display:flex;justify-content:center;align-items:center;width:100%;height:400px}.cube[data-v-30443e48]{width:300px;height:300px;position:relative;transform-style:preserve-3d;transform:translateZ(-150px);transition:transform 1s}.cube.show-right[data-v-30443e48]{transform:translateZ(-150px) rotateY(0)}.cube.show-left[data-v-30443e48]{transform:translateZ(-150px) rotateY(90deg)}.cube.show-top[data-v-30443e48]{transform:translateZ(-150px) rotateX(-90deg)}.cube__face[data-v-30443e48]{display:flex;justify-content:center;align-items:center;position:absolute;width:310px;height:310px;box-sizing:border-box;border:5px solid #ECECEC;font-size:3.5rem;font-weight:700;color:#ececec;background:#222831;text-align:center}.cube__face--right[data-v-30443e48]{transform:rotateY(0) translateZ(150px)}.cube__face--left[data-v-30443e48]{transform:rotateY(-90deg) translateZ(150px)}.cube__face--top[data-v-30443e48]{transform:rotateX(90deg) translateZ(150px)}@media only screen and (max-width: 500px){.scene[data-v-30443e48]{height:275px;perspective:250px}.cube[data-v-30443e48]{width:200px;height:200px;transform:translateZ(-100px)}.cube.show-right[data-v-30443e48]{transform:translateZ(-100px) rotateY(0)}.cube.show-left[data-v-30443e48]{transform:translateZ(-100px) rotateY(90deg)}.cube.show-top[data-v-30443e48]{transform:translateZ(-100px) rotateX(-90deg)}.cube__face[data-v-30443e48]{width:206px;height:206px;border:3px solid #ECECEC;font-size:2.5rem}.cube__face--right[data-v-30443e48]{transform:rotateY(0) translateZ(100px)}.cube__face--left[data-v-30443e48]{transform:rotateY(-90deg) translateZ(100px)}.cube__face--top[data-v-30443e48]{transform:rotateX(90deg) translateZ(100px)}}.grid[data-v-10a29b93]{display:flex;flex-direction:row;align-items:center;justify-content:center;margin:20px 0}.grid__img[data-v-10a29b93]{max-width:100%;object-fit:contain;margin:0 20px 0 0}.debug[data-v-6e0ba27d]{box-sizing:border-box;position:fixed;right:8px;bottom:8px;z-index:9999;border-radius:4px;width:74px;height:32px;color:#eee;overflow:hidden;cursor:pointer;background-color:#000000d9;transition:all .15s ease}.debug[data-v-6e0ba27d]:hover{background-color:#000000bf}.debug.open[data-v-6e0ba27d]{right:0;bottom:0;width:100%;height:100%;margin-top:0;border-radius:0;padding:0;overflow:scroll}@media (min-width: 512px){.debug.open[data-v-6e0ba27d]{width:512px}}.debug.open[data-v-6e0ba27d]:hover{background-color:#000000d9}.title[data-v-6e0ba27d]{margin:0;padding:6px 16px;line-height:20px;font-size:13px}.block[data-v-6e0ba27d]{margin:2px 0 0;border-top:1px solid rgba(255,255,255,.16);padding:8px 16px;font-family:Hack,monospace;font-size:13px}.block+.block[data-v-6e0ba27d]{margin-top:8px}html,body{overflow-x:hidden;background:#ECECEC;margin:0;padding:0;width:100%;height:100%}#app{display:grid;grid-template-columns:60px auto}.hamburger{z-index:2;display:flex;cursor:pointer;padding:10px;position:fixed;width:40px;box-sizing:content-box;height:40px;justify-content:space-around;flex-direction:column}.hamburger__cheese,.hamburger__meat,.hamburger__bun{pointer-events:none;height:5px;width:40px;background:#222831;transition:transform .3s ease-in-out}.hamburger--clicked .hamburger__cheese{transform:translateY(14px) rotate(45deg)}.hamburger--clicked .hamburger__meat{transform:rotate(-45deg)}.hamburger--clicked .hamburger__bun{transform:translate(-50px)}.navbar{z-index:1;border-right:1px solid #222831;font: 1.4rem Roboto,serif;display:flex;flex-direction:column;box-sizing:border-box;width:240px;height:100vh;position:fixed;transition:transform .6s ease-in-out;background:#ECECEC;left:-240px}.navbar--unclickable{pointer-events:none}.navbar-first{left:-180px}.navbar-first.navbar--show{transform:translate(180px)}.navbar__list{padding:60px 0 0;margin:0}.navbar__element{cursor:pointer;user-select:none;text-transform:capitalize;border-top:1px solid #222831;box-sizing:border-box;min-height:50px}.navbar__element:last-child{border-bottom:1px solid #222831}.navbar__file,.navbar__folder{box-sizing:border-box;padding:10px;width:100%;height:100%;display:flex;align-items:center}.navbar__triangle{display:inline-block;background:#222831;margin:0;height:12px;width:12px;clip-path:polygon(100% 0,0 0,50% 100%);transition:.4s transform ease-in-out}.navbar__triangle--opened{transform:rotate(-90deg)}.navbar--show{transform:translate(240px)}.content-container{width:100%;max-width:960px}.index__title{margin:10px;padding-bottom:10px;border-bottom:1px solid #222831}a{color:#476b8f}a:visited{color:purple}main{box-sizing:border-box;display:flex;justify-content:center;min-height:100vh;font:400 1.4rem Roboto,sans-serif;padding:20px}main h1{font:300 3rem Lora,serif}main h2{font:300 2rem Lora,serif}main li,main p{margin:10px 0}main ul{margin:0}main h1,main h2{margin:20px 0}.center{width:100%;display:grid;justify-content:center;text-align:center}.center img{max-width:100%}table{min-width:700px;border-collapse:collapse;border:1px solid #222831;border-bottom:none}table td,table th{border-left:1px solid #222831;padding:5px}table td:first-child,table th:first-child{border-left:none}table tr{border-bottom:1px solid #222831}table img{width:100%}.table-container{width:100%;overflow:auto}iframe{width:640px;height:390px;max-width:100%}code{white-space:pre-wrap;line-height:1.4}@media only screen and (max-width: 1000px){main{width:calc(100vw - 61px);padding:10px}main .grid{flex-direction:column}main .grid__img{margin:20px 0 0}main .grid__img:first-child{margin:0}}@media only screen and (max-width: 640px){iframe{height:250px}}@media only screen and (max-width: 500px){main{font:400 1.2rem Roboto,sans-serif}main h1{font:300 2.5rem Lora,serif}main h2{font:300 1.8rem Lora,serif}}@media only screen and (max-width: 280px){main p,main a,main li{word-break:break-all}} +@import"https://fonts.googleapis.com/css2?family=Lora&family=Roboto&display=swap";.scene[data-v-30443e48]{perspective:375px;display:flex;justify-content:center;align-items:center;width:100%;height:400px}.cube[data-v-30443e48]{width:300px;height:300px;position:relative;transform-style:preserve-3d;transform:translateZ(-150px);transition:transform 1s}.cube.show-right[data-v-30443e48]{transform:translateZ(-150px) rotateY(0)}.cube.show-left[data-v-30443e48]{transform:translateZ(-150px) rotateY(90deg)}.cube.show-top[data-v-30443e48]{transform:translateZ(-150px) rotateX(-90deg)}.cube__face[data-v-30443e48]{display:flex;justify-content:center;align-items:center;position:absolute;width:310px;height:310px;box-sizing:border-box;border:5px solid #ECECEC;font-size:3.5rem;font-weight:700;color:#ececec;background:#222831;text-align:center}.cube__face--right[data-v-30443e48]{transform:rotateY(0) translateZ(150px)}.cube__face--left[data-v-30443e48]{transform:rotateY(-90deg) translateZ(150px)}.cube__face--top[data-v-30443e48]{transform:rotateX(90deg) translateZ(150px)}@media only screen and (max-width: 500px){.scene[data-v-30443e48]{height:275px;perspective:250px}.cube[data-v-30443e48]{width:200px;height:200px;transform:translateZ(-100px)}.cube.show-right[data-v-30443e48]{transform:translateZ(-100px) rotateY(0)}.cube.show-left[data-v-30443e48]{transform:translateZ(-100px) rotateY(90deg)}.cube.show-top[data-v-30443e48]{transform:translateZ(-100px) rotateX(-90deg)}.cube__face[data-v-30443e48]{width:206px;height:206px;border:3px solid #ECECEC;font-size:2.5rem}.cube__face--right[data-v-30443e48]{transform:rotateY(0) translateZ(100px)}.cube__face--left[data-v-30443e48]{transform:rotateY(-90deg) translateZ(100px)}.cube__face--top[data-v-30443e48]{transform:rotateX(90deg) translateZ(100px)}}.grid[data-v-10a29b93]{display:flex;flex-direction:row;align-items:center;justify-content:center;margin:20px 0}.grid__img[data-v-10a29b93]{max-width:100%;object-fit:contain;margin:0 20px 0 0}.debug[data-v-6e0ba27d]{box-sizing:border-box;position:fixed;right:8px;bottom:8px;z-index:9999;border-radius:4px;width:74px;height:32px;color:#eee;overflow:hidden;cursor:pointer;background-color:#000000d9;transition:all .15s ease}.debug[data-v-6e0ba27d]:hover{background-color:#000000bf}.debug.open[data-v-6e0ba27d]{right:0;bottom:0;width:100%;height:100%;margin-top:0;border-radius:0;padding:0;overflow:scroll}@media (min-width: 512px){.debug.open[data-v-6e0ba27d]{width:512px}}.debug.open[data-v-6e0ba27d]:hover{background-color:#000000d9}.title[data-v-6e0ba27d]{margin:0;padding:6px 16px;line-height:20px;font-size:13px}.block[data-v-6e0ba27d]{margin:2px 0 0;border-top:1px solid rgba(255,255,255,.16);padding:8px 16px;font-family:Hack,monospace;font-size:13px}.block+.block[data-v-6e0ba27d]{margin-top:8px}html,body{overflow-x:hidden;background:#ECECEC;margin:0;padding:0;width:100%;height:100%}#app{display:grid;grid-template-columns:60px auto}.hamburger{z-index:2;display:flex;cursor:pointer;padding:10px;position:fixed;width:40px;box-sizing:content-box;height:40px;justify-content:space-around;flex-direction:column}.hamburger__cheese,.hamburger__meat,.hamburger__bun{pointer-events:none;height:5px;width:40px;background:#222831;transition:transform .3s ease-in-out}.hamburger--clicked .hamburger__cheese{transform:translateY(14px) rotate(45deg)}.hamburger--clicked .hamburger__meat{transform:rotate(-45deg)}.hamburger--clicked .hamburger__bun{transform:translate(-50px)}.navbar{z-index:1;border-right:1px solid #222831;font: 1.4rem Roboto,serif;display:flex;flex-direction:column;box-sizing:border-box;width:240px;height:100vh;position:fixed;transition:transform .6s ease-in-out;background:#ECECEC;left:-240px}.navbar--unclickable{pointer-events:none}.navbar-first{left:-180px}.navbar-first.navbar--show{transform:translate(180px)}.navbar__list{padding:60px 0 0;margin:0}.navbar__element{cursor:pointer;user-select:none;text-transform:capitalize;border-top:1px solid #222831;box-sizing:border-box;min-height:50px}.navbar__element:last-child{border-bottom:1px solid #222831}.navbar__file,.navbar__folder{box-sizing:border-box;padding:10px;width:100%;height:100%;display:flex;align-items:center}.navbar__triangle{display:inline-block;background:#222831;margin:0;height:12px;width:12px;clip-path:polygon(100% 0,0 0,50% 100%);transition:.4s transform ease-in-out}.navbar__triangle--opened{transform:rotate(-90deg)}.navbar--show{transform:translate(240px)}.content-container{width:100%;max-width:960px}.index__title{margin:10px;padding-bottom:10px;border-bottom:1px solid #222831}a{color:#476b8f}a:visited{color:purple}main{box-sizing:border-box;display:flex;justify-content:center;min-height:100vh;font:400 1.4rem Roboto,sans-serif;padding:20px}main h1{font:300 3rem Lora,serif}main h2{font:300 2rem Lora,serif}main li,main p{margin:10px 0}main ul{margin:0}main h1,main h2{margin:20px 0}.center{width:100%;display:grid;justify-content:center;text-align:center}.center img{max-width:100%}table{min-width:700px;border-collapse:collapse;border:1px solid #222831;border-bottom:none}table td,table th{border-left:1px solid #222831;padding:5px}table td:first-child,table th:first-child{border-left:none}table tr{border-bottom:1px solid #222831}table img{width:100%}.table-container{width:100%;overflow:auto}iframe{width:640px;height:390px;max-width:100%}code{white-space:pre-wrap;line-height:1.4}@media only screen and (max-width: 1000px){main{width:calc(100vw - 61px);padding:10px}main .grid{flex-direction:column}main .grid__img{margin:20px 0 0}main .grid__img:first-child{margin:0}}@media only screen and (max-width: 640px){iframe{height:250px}}@media only screen and (max-width: 500px){main{font:400 1.2rem Roboto,sans-serif}main h1{font:300 2.5rem Lora,serif}main h2{font:300 1.8rem Lora,serif}}@media only screen and (max-width: 280px){main p,main a,main li{word-break:break-all}}.language__selection{padding:0 0 5px;border-bottom:2px solid #222831} diff --git a/docs/index.html b/docs/index.html index 9dd336b..188c2fa 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,17 +7,17 @@ Home | canicjusz in English - - - - - + + + + +
Welcome
Witam
Bonvenon

Jan Michalak – web-dev hobbyist

Contact me:

My profiles on:

- - + + \ No newline at end of file diff --git a/docs/pages/English/portfolio.html b/docs/pages/English/portfolio.html index eebc529..3be15b8 100644 --- a/docs/pages/English/portfolio.html +++ b/docs/pages/English/portfolio.html @@ -7,18 +7,18 @@ Portfolio - Jan Michalak | canicjusz in English - - - - - - + + + + + + -

A simple framework

Tech stack: PHP, MySQL

Repo

I started this project to delve into PHP and to understand how frameworks work. Despite it not being complete I already use it in my own projects. I gradually implement features that I need. For the moment it offers:

  • static and dynamic routing
  • enforcement of the MVC paradigm
  • support for environmental variables
  • support for databases and a built-in Query Builder
  • possibility to modify the contents of <head> from every view component.

School radio through PA system (team project)

Tech stack: Express.js, MySQL, Sass

Repo

It is a web app, in which students can vote for their favourite songs, that will play the next day during breaks. The Algorythm orders the queue in such a way that songs with the most votes are played during lunch breaks. The app is fully automated. The state of the queue and the currently played track are displayed on a screen in a hall.

alt text

Employment website

Tech stack: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)

Repo

A job posting service for esperantists inspired by the design and functionality of other such websites. There wasn't any decentralized place for job searching for esperantists. That's the primary reason why I created the app, besides I wanted to make the language more attractive and increase its status.

The service helped employers and esperanto organisations alike to create a personalized company profile and post job offerings. Potential employees could've edit their profiles and share their resumes. Access to job listings and all profiles was simplified by vertical searches.

Since the interest plummeted and because of lack of funding I decided to close the website after a year. Despite that you can see the project in its full glory on the presentation I gave below.

Component library for KaiOS mobile apps

Technologie: CSS, JS

Repozytorium

There wasn't any framework agnostic component library for creating native-looking apps on KaiOS system, so I had to create on myself. It precisely applies design guidelines provided in the official documentation of KaiOS.

You can easily customize the library to your liking by modifying the CSS variables found on the top of the file. The documentation and visual presentation can be found in the repository.

Dictionary as an addon

Tech stack: TypeScript, Svelte.js, Sass

Repo | Try it out on Chrome | Try it out on Firefox

An addon which searches for a definition through a thrird-partry API and displays it in a window below the selected text.

The thicness of the border, the size and the color of the text as well as the background color are fully customizable to improve accessibility.

alt text

Apps for KaiOS

Tech stack: Vue.js, Sass

  • Zipper (pics below) - a file archivizer. It is my most popular app for this system, it helped almost 2000 users
  • Flashcards - flashcards app with a simple spaced repetition system, which maximizes the rate of learning.
  • 10000h - a progress tracking app. Inspired by the 10000h rule.
- - +
Available in: English | Polski

Simple framework

Tech stack: PHP, MySQL

Repo

I started this project to delve into PHP and to understand how frameworks work. Despite it not being complete I already use it in my own projects. I gradually implement features that I need. For the moment it offers:

  • static and dynamic routing
  • enforcement of the MVC paradigm
  • support for environmental variables
  • support for databases and a built-in Query Builder
  • possibility to modify the contents of <head> from every view component.

School radio through PA system (team project)

Tech stack: Express.js, MySQL, Sass

Repo

It is a web app, in which students can vote for their favourite songs, that will play the next day during breaks. The Algorythm orders the queue in such a way that songs with the most votes are played during lunch breaks. The app is fully automated. The state of the queue and the currently played track are displayed on a screen in a hall.

alt text

Employment website

Tech stack: Express.js, Prisma ORM (MySQL), Sass, SvelteKit (Svelte.js)

Repo

A job posting service for esperantists inspired by the design and functionality of other such websites. There wasn't any decentralized place for job searching for esperantists. That's the primary reason why I created the app, besides I wanted to make the language more attractive and increase its status.

The service helped employers and esperanto organisations alike to create a personalized company profile and post job offerings. Potential employees could've edit their profiles and share their resumes. Access to job listings and all profiles was simplified by vertical searches.

Since the interest plummeted and because of lack of funding I decided to close the website after a year. Despite that you can see the project in its full glory on the presentation I gave below.

Component library for KaiOS mobile apps

Technologie: CSS, JS

Repozytorium

There wasn't any framework agnostic component library for creating native-looking apps on KaiOS system, so I had to create on myself. It precisely applies design guidelines provided in the official documentation of KaiOS.

You can easily customize the library to your liking by modifying the CSS variables found on the top of the file. The documentation and visual presentation can be found in the repository.

Dictionary as an addon

Tech stack: TypeScript, Svelte.js, Sass

Repo | Try it out on Chrome | Try it out on Firefox

An addon which searches for a definition through a thrird-partry API and displays it in a window below the selected text.

The thicness of the border, the size and the color of the text as well as the background color are fully customizable to improve accessibility.

alt text

Apps for KaiOS

Tech stack: Vue.js, Sass

  • Zipper (pics below) - a file archivizer. It is my most popular app for this system, it helped almost 2000 users
  • Flashcards - flashcards app with a simple spaced repetition system, which maximizes the rate of learning.
  • 10000h - a progress tracking app. Inspired by the 10000h rule.
+ + \ No newline at end of file diff --git a/docs/pages/Esperanto/Teknologio/create-esperanto-layout-windows.html b/docs/pages/Esperanto/Teknologio/create-esperanto-layout-windows.html index 5f71ec2..f854c85 100644 --- a/docs/pages/Esperanto/Teknologio/create-esperanto-layout-windows.html +++ b/docs/pages/Esperanto/Teknologio/create-esperanto-layout-windows.html @@ -7,17 +7,17 @@ Kiel krei Esperantan klavararanĝon ĉe Vindozo | canicjusz Esperante - - - - - + + + + +

Kiel krei Esperantan klavararanĝon ĉe Vindozo

En ĉi tiu instruilo mi montros al vi kiel krei Esperantan klavararanĝon, per kiu oni povas skribi ĉapelliterojn premante klavon AltGr.

Kiel krei la klavararanĝon

Unue, vi devas elŝuti programon, kiu ebligas krei proprajn klavararanĝojn. Vi elŝutos la programon el la oficiala retejo de Microsoft. Do ne zorgu, ĝi ne enhavas komputilan viruson.

Elŝutoligilo

Poste malfermu la instalitan dosieron kaj se vi volas, ŝanĝu dosierujon, en kiun vi volas eltiri instalilon. Poste alklaku butonon Extract.

alt text

Navigu al la dosierujo kaj malfermu dosieron nomatan setup.

Alklaku Next. Elektu I Agree por akcepti la interkonsento pri uzado. Poste daŭre alklakadu la butonon next. Je la fino, alklaku la butonon Close.

alt text

Entajpu msklc en la serĉbreton de Vindozo kaj malfermu la programon Microsoft Keyboard Layout Creator 1.4.

Kiam la programo lanĉos, alklaku la opcion File kaj elektu Load Existing Keyboard...

alt text

Tie vi elektu pretan klavararanĝon, mi elektis la usonanan internacian sed vi povas alian.

La klavaro iĝu plena. Nun vi redaktos minusklojn, elektu staton Alt+Ctrl (AltGr) kaj alklaku la klavojn por ŝanĝi ilian signon. Kiam vi ŝanĝas la signojn, memoru alklaki butonon All... kaj elekti la suban elektobutonon caps = shift, por ke CapsLock estu same traktata kiel Shift.

alt textalt text

Faru same por aliaj klavoj, la rezulto tiel aspektu:

alt text

Por redakti majusklojn, elektu staton Shift kaj denove alklaku la klavojn por ŝanĝi ilian signon. Ĉi-foje ne alklau la butonon All... La rezulto tiel aspektu:

alt text

Nun alklaku opcion Project kaj elektu Properties... por ŝanĝi la nomon, la priskribon, la kopirajton kaj aliajn ecojn de la klavararanĝo.

alt text

Se vi volas kontroli, ĉu la klavararanĝo funkcias ĝuste, alklaku opcion Project kaj elektu Test Keyboard Layout...

Se ĉio bonas, denove alklaku opcion Project kaj elektu Build DLL and Setup Package...

Aperos fenestroj, sur la unua alklaku butonon Ne kaj Jes sur la dua, aperos dosierujo kun programo setup, malfermu ĝin.

alt text

Se vi tion vidas, vi povas fermi ĉiujn fenestrojn kaj restartigi vian komputilon.

Gratulon! Nun vi povas ŝanĝi klavararanĝojn uzante fulmoklavon Win + Spacostango.

Kiel forigi la klavararanĝon

Se vi volas forigi la klavararanĝon, renavigu al la dosierujo kun la programo setup kaj malfermu ĝin. Alklaku butonon Finish kaj akceptu atingokontrolon. Kiu aperos sur taskopleto, kiel sur la bildo:

alt text

Se vi tion vidas, vi sukcese forigis la klavararanĝon. Vi povas fermi ĉiujn fenestrojn.

alt text

Problemoj

Se vi havis iujn ajn problemojn, sendu mesaĝon al mi per diskordo: janomiĥalako#9984, aŭ per retpoŝto: janmichalak@int.pl

- - + + \ No newline at end of file diff --git a/docs/pages/Esperanto/Tradukoj/sole-en-lvivo.html b/docs/pages/Esperanto/Tradukoj/sole-en-lvivo.html index 86fef52..83f99e1 100644 --- a/docs/pages/Esperanto/Tradukoj/sole-en-lvivo.html +++ b/docs/pages/Esperanto/Tradukoj/sole-en-lvivo.html @@ -7,11 +7,11 @@ Sole en Lvivo | canicjusz Esperante - - - - - + + + + + @@ -41,7 +41,7 @@ Se mi ĝin forlasus, kien mi iru? De tio Dio protektu! - - + + \ No newline at end of file diff --git a/docs/pages/Esperanto/Tradukoj/teda-tempo-por-legiano.html b/docs/pages/Esperanto/Tradukoj/teda-tempo-por-legiano.html index d740e99..ec49822 100644 --- a/docs/pages/Esperanto/Tradukoj/teda-tempo-por-legiano.html +++ b/docs/pages/Esperanto/Tradukoj/teda-tempo-por-legiano.html @@ -7,11 +7,11 @@ Teda tempo por legiano | canicjusz Esperante - - - - - + + + + + @@ -56,7 +56,7 @@ Aŭ ne manĝis ĝenerale, Ĉar aspektas li tre pale, un', du, un', du, tri! - - + + \ No newline at end of file diff --git a/docs/pages/Polski/portfolio.html b/docs/pages/Polski/portfolio.html index 7d5771d..44d5c23 100644 --- a/docs/pages/Polski/portfolio.html +++ b/docs/pages/Polski/portfolio.html @@ -7,17 +7,17 @@ Portfolio - Jan Michalak | canicjusz po polsku - - - - - - + + + + + + -

Prosty framework

Technologie: PHP, MySQL

Repozytorium

Zacząłem tworzyć ten projekt, aby zagłębić się w język PHP. Mimo że jeszcze nie jest kompletny, to już go używam go do tworzenia własnych aplikacji w PHP. Stopniowo implementuję tę funkcjonalność, która jest mi potrzebna. Na tę chwilę framework oferuje:

  • statyczny i dynamiczny routing,
  • narzucanie wzorca MVC,
  • obsługa zmiennych środowiskowych,
  • obsługa baz danych oraz wzbudowany Query Builder,
  • możliwość modyfikowania zawartości <head> z poziomu każdego komponentu wizualnego strony.

Szkolne radio poprzez radiowęzeł (projekt zespołowy)

Technologie: Express.js, MySQL, Sass

Repozytorium

Available in: English | Polski

Prosty framework

Technologie: PHP, MySQL

Repozytorium

Zacząłem tworzyć ten projekt, aby zagłębić się w język PHP. Mimo że jeszcze nie jest kompletny, to już go używam go do tworzenia własnych aplikacji w PHP. Stopniowo implementuję tę funkcjonalność, która jest mi potrzebna. Na tę chwilę framework oferuje:

  • statyczny i dynamiczny routing,
  • narzucanie wzorca MVC,
  • obsługa zmiennych środowiskowych,
  • obsługa baz danych oraz wzbudowany Query Builder,
  • możliwość modyfikowania zawartości <head> z poziomu każdego komponentu wizualnego strony.

Szkolne radio poprzez radiowęzeł (projekt zespołowy)

Technologie: Express.js, MySQL, Sass

Repozytorium

Stworzenie aplikacji web'owej, w której uczniowie mogą zgłaszać piosenki, które mają grać w trakcie przerw w następnym dniu. Algorytm ustawia kolejkę w taki sposób, że piosenki z największą liczbą głosów lecą w trakcie przerw obiadowych. Program w pełni zautomatyzowany. Status kolejki i grany utwór są wyświetlane na telewizorze w szkolnym holu.

Wtyczka, która po zaznaczeniu słowa wyszukuje definicję poprzez API jednego ze słowników i wyświetla definicję w okienku pod zaznaczonym tekstem.

Grubość obwódki okienka, wielkość oraz kolor tekstu, jak i kolor tła są w pełni modyfikowalne w celach ułatwienia dostępu dla osób z niepełnosprawnościami.

alt text

Aplikacje na system KaiOS

Technologie: Vue.js, Sass

  • Zipper (zdjęcia poniżej) - Kompresor plików - pozwala kompresować i dekompresować pliki. Moja najpopularniejsza aplikacja, pomogła prawie 2000 użytkowników
  • Flashcards - Fiszki wykorzystujące prosty system powtarzania w odstępach czasu, aby zmaksymalizować wyniki
  • 10000h - Program do śledzenia własnych postępów na system KaiOS, zainspirowana zasadą 10000 godzin
- - + + \ No newline at end of file diff --git a/src/components/SelectLanguage.vue b/src/components/SelectLanguage.vue index 9df89f2..dad0f3c 100644 --- a/src/components/SelectLanguage.vue +++ b/src/components/SelectLanguage.vue @@ -1,18 +1,21 @@ - + diff --git a/src/pages/English/portfolio.md b/src/pages/English/portfolio.md index 01b9c88..fa80aa3 100644 --- a/src/pages/English/portfolio.md +++ b/src/pages/English/portfolio.md @@ -4,8 +4,12 @@ description: Prezentacja części moich hobbistycznych projektów. --- -# A simple framework + + +# Simple framework + **Tech stack: PHP, MySQL** [**Repo**](https://github.com/canicjusz/framework) diff --git a/src/pages/Polski/portfolio.md b/src/pages/Polski/portfolio.md index 21ab8aa..172d518 100644 --- a/src/pages/Polski/portfolio.md +++ b/src/pages/Polski/portfolio.md @@ -4,8 +4,13 @@ description: Prezentacja części moich hobbistycznych projektów. --- + + + # Prosty framework + **Technologie: PHP, MySQL** [**Repozytorium**](https://github.com/canicjusz/framework)