From 220c5f449cc95698eb28143da32b834bb2115836 Mon Sep 17 00:00:00 2001 From: Ondrej Tuma Date: Fri, 19 May 2023 16:51:52 +0200 Subject: [PATCH] Static web update --- ChangeLog | 9 ++++++--- Prusa-Link-Web | 2 +- prusa/link/static/index.html | 2 +- prusa/link/static/main.095529b887844d00ad39.css | 1 - prusa/link/static/main.42bf9f928dbecae52722.js | 1 - prusa/link/static/main.44fd519fe74a820d5363.js | 1 + prusa/link/static/main.97b8f9c3a3e4f084379b.css | 1 + 7 files changed, 10 insertions(+), 7 deletions(-) delete mode 100644 prusa/link/static/main.095529b887844d00ad39.css delete mode 100644 prusa/link/static/main.42bf9f928dbecae52722.js create mode 100644 prusa/link/static/main.44fd519fe74a820d5363.js create mode 100644 prusa/link/static/main.97b8f9c3a3e4f084379b.css diff --git a/ChangeLog b/ChangeLog index a7762933..ddfa19da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,9 +7,12 @@ * Added a multi-instace auto config and starter utility * Disable error beeps during prints * Static Web update - - Using v1 endpoints for job and transfer - - Creating and Deleting folders - - Translation update + - Using v1 endpoints for job and transfer + - Creating and Deleting folders + - Translation update + - Network error chime control + - Default storage names + - Upgrade procedure rework 0.7.0rc3 (2023-03-09) * Added v1 endpoints for flat filesystem structure, old struct is moved to diff --git a/Prusa-Link-Web b/Prusa-Link-Web index a0505051..29db4ed8 160000 --- a/Prusa-Link-Web +++ b/Prusa-Link-Web @@ -1 +1 @@ -Subproject commit a050505100941a43ab637ffe1d4cf13ea68c959e +Subproject commit 29db4ed81dbc6eea9a29113e4914e2b4aa9de18b diff --git a/prusa/link/static/index.html b/prusa/link/static/index.html index 5fd858e9..e7656f54 100644 --- a/prusa/link/static/index.html +++ b/prusa/link/static/index.html @@ -1 +1 @@ -PrusaLink

Printer status

NA

Nozzle Temperature

NA / NA

Heatbed

NA / NA

Printing Speed

NA

Z - Height

NA

Nozzle Diameter

NA

+PrusaLink

Printer status

NA

Nozzle Temperature

NA / NA

Heatbed

NA / NA

Printing Speed

NA

Z - Height

NA

Nozzle Diameter

NA

diff --git a/prusa/link/static/main.095529b887844d00ad39.css b/prusa/link/static/main.095529b887844d00ad39.css deleted file mode 100644 index 5376cbd2..00000000 --- a/prusa/link/static/main.095529b887844d00ad39.css +++ /dev/null @@ -1 +0,0 @@ -@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@-webkit-keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}html{font-size:32pt;font-family:Helvetica,sans-serif;overflow:-moz-scrollbars-vertical;overflow-y:scroll}@media only screen and (min-width:992px){html{font-size:14pt}}select{font-family:Helvetica,sans-serif}.txt-bold,select{font-weight:700}.txt-italic{font-style:italic}.uppercase{text-transform:uppercase}.txt-orange{color:#fa6831}.txt-grey{color:#707070}.txt-black{color:#000!important}.txt-lg{font-size:1.25rem}.txt-md,button>p,nav{font-size:1rem}.txt-sm{font-size:.75rem}button>p{font-family:Helvetica,sans-serif;font-weight:700;width:100%;margin:6px}.flex-row{display:flex}.flex-col,.tel-prop>div{display:flex;flex-direction:column}.grow{flex-grow:1}.justify-between{justify-content:space-between}.mr-md{margin-right:12px}.ml-md{margin-left:12px}.rounded{border-radius:50%}button.rounded{padding:0;margin:0}button.rounded img{padding:4px;margin:0}button.rounded:hover{background-color:#5b5b5b}button,html,nav>ul a,select{color:#efefef}#upld-direct p,.progress>p,nav>ul a{text-align:left}html{line-height:1.5;-webkit-text-size-adjust:100%}.node-btn-list>li .icon-small,body,p{margin:0}body,body>.header{background-color:#0a0a0a}a,button.rounded{background-color:transparent}a:not([href]){cursor:pointer}a:not([href]):hover{text-decoration:underline}img{border-style:none;height:auto;width:100%;max-width:100%}[hidden]{display:none!important}.icon{width:48px;height:48px;min-width:48px}.icon-small{width:32px;height:32px;min-width:32px;margin-right:4px}button>img{width:36px;height:36px;min-width:36px;margin:2px}button,input{font-family:inherit;font-size:100%;line-height:1.15;margin:0;overflow:visible}button::-moz-focus-inner{border-style:none;padding:0}.header{position:relative}.header__line{position:absolute;bottom:0;width:100%;height:2px;background-color:#707070;z-index:4}#title,.component>p,.line,.line-y{border-bottom:1px solid #bababa;border-radius:0}.component p.title{padding-bottom:.25rem;line-height:1.5;margin-bottom:15px}.line-y{border-top:1px solid #bababa}button:-moz-focusring{outline:ButtonText dotted 1px}progress{vertical-align:baseline}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.header{padding:32px 0}.node:hover,.upld:hover{background-color:#313131;cursor:pointer}.content{display:block;margin:0 auto;max-width:1280px;padding:0 40px}body>.content{margin-top:16px}.component>p{display:flex;margin:0}nav{display:flex;flex-wrap:wrap;min-width:685px;align-items:stretch}nav .logo-wrapper{min-width:240px;display:flex;align-self:flex-start;padding:4px 0 16px;flex-grow:1}nav .brand-logo,nav>ul a{display:flex;align-items:center}nav .brand-logo{order:1;flex-grow:1;justify-content:center}nav .brand-logo img{max-width:75%}nav .navbar-burger,nav>ul{display:flex;flex-direction:column}nav>ul{order:3;align-items:stretch;flex-grow:1;width:100%;margin:0;padding:32px 0}nav>ul>li{display:flex;list-style-type:none}nav>ul>li.active{border-bottom:2px solid #fa6831}nav>ul a{list-style:none;text-decoration:none;width:100%;padding:32px}nav .navbar-burger{order:0;align-items:flex-end;align-self:flex-end;margin-bottom:auto;margin-top:auto}nav .navbar-burger div{transition-duration:.5s;background-color:#efefef;width:100px;height:12px;margin:11px 0;display:flex;opacity:1}.burger-menu{display:none;white-space:nowrap}nav .navbar-burger.burger-open div:first-child{transform:rotateZ(45deg) scaleX(1.25) translate(19px,31px)}nav .navbar-burger.burger-open div:nth-child(2){transition-property:opacity;opacity:0}nav .navbar-burger.burger-open div:last-child{transform:rotateZ(-45deg) scaleX(1.25) translate(13px,-24px)}#lang-dropdown{order:2;text-transform:uppercase}.telemetry{display:block;padding:0;position:sticky;position:-webkit-sticky;top:78px}#lang-dropdown,.tel-prop{display:flex;align-items:center}.tel-prop{padding:12px 0;width:45%}#upld-remote .upld-details>div,.tel-prop>img{margin-right:1rem}.tel-prop>div>p{margin:0;line-height:1.5}.content-wrapper{display:flex;flex-direction:column}.main{display:block;flex-grow:1;padding:12px 0 0}#title{width:100%;padding-bottom:.25rem}.title-printer{margin-left:inherit;margin-bottom:0}#title,.main-wrapper{display:flex;flex-direction:column;justify-content:space-between}.main-wrapper{flex-grow:1;margin:0 0 .75rem}.progress-bar{background:#fff;position:relative;min-height:5px;overflow-y:visible;display:flex;align-items:center;justify-content:center}.progress-bar>.fill{background:#fa6831;position:absolute;z-index:1}.progress-bar>p{z-index:2}.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.connection-status[ok=false] [ok]:not([ok=false]),.connection-status[ok=true] [ok]:not([ok=true]),[data-tab]:not([opened=true]){display:none}[data-tab-btn][selected=true]{color:#fa6831}.component,.separator{flex-grow:1}.component{flex-wrap:wrap;padding-top:64px;line-height:1}.component-inline{padding-top:0}.component-fixed{flex:0 0 auto}.abs-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}#upld a{text-decoration:underline}#upld a:hover{text-decoration:none}#upld .form-row{margin-bottom:24px}#upld .form-submit,#upld-direct-frame div{display:flex;align-items:center}#upld .upld-source{display:flex;align-items:end;flex-wrap:wrap;margin-bottom:24px}#upld .state-choose-checkbox{flex:1 1 0}#upld-direct-frame{position:relative;border:2px dashed #fff;padding:24px}#upld-direct-frame div{flex-direction:row;justify-content:center}#upld-direct input[type=file]{position:absolute;opacity:0;width:100%;height:100%;top:-2.4px;left:-2.4px;padding:2.4px}#upld-direct input[type=file]:hover{cursor:pointer}#upld-direct .state-choose{opacity:0}#upld-direct .state-uploading{display:none;width:100%;height:100%}#drop-zone,#drop-zone div,#upld-direct .state-uploading img{width:100%;height:100%}#upld-direct[data-state=choose] .state-choose{opacity:1}#upld-direct[data-state=uploading] .state-uploading,.kebab>ul.open{display:block}#upld-remote input[type=text]{width:100%;box-sizing:border-box;line-height:1.5;margin:4px 0}#upld-remote .upld-details{display:flex;flex-wrap:wrap;margin-top:1rem}#upld-remote .progress-bar{height:36px;overflow:hidden}#upld-remote .progress-bar p{position:absolute;left:0;right:0;top:50%;transform:translate(0,-50%);padding:2px;overflow-x:auto;overflow-y:hidden;white-space:nowrap}#upld-remote[data-state=choose] .state-uploading,#upld-remote[data-state=uploading] .state-choose{display:none}#drop-zone{position:fixed;top:0;left:0;background-color:#000;opacity:.8;z-index:9999;padding:10px}#drop-zone input[type=file]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0}#drop-zone div{display:flex;align-items:center;justify-content:center}#graph{position:relative;width:520px}.temp-svg{pointer-events:all;top:0;right:2.5%;bottom:0;left:2.5%}.temp-g-label{max-width:100%;height:100%;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.temp-legend-blue{fill:#1b73f8}.temp-legend-orange{fill:#fa6831}#temp-line-blue,#temp-line-orange,#temp-line-yellow{fill:transparent;opacity:1;stroke-width:1%}#temp-line-blue{stroke:#1b73f8}#temp-line-orange{stroke:#fa6831}#temp-line-yellow{stroke:#f3f12c}.temp-text{fill:#efefef;font-size:10.5pt;letter-spacing:normal;padding:8px;stroke:transparent;stroke-width:0}.temp-label-line{stroke:#efefef;fill:transparent;stroke-width:2px}.temp-connect-text,.temp-h-line,.temp-label-line{stroke-linecap:round;stroke-linejoin:round}.temp-h-line{stroke:gray;stroke-dasharray:none;fill:none;pointer-events:painted}.temp-connect-text{stroke:#efefef;size:5px;fill:transparent;stroke-width:1px}.temp-line-text{font-size:10.5pt;padding:5px;fill:#efefef;letter-spacing:normal;stroke:transparent;stroke-width:0}#files{width:100%;margin-top:16px}.node-icon-box,.node-img-box{margin-right:12px}.node,.node-btn-list>li{display:flex;align-items:center;padding:6px 0}.node-icon,.node-img{position:absolute;width:100%;height:100%;top:0;left:0;right:0;bottom:0;-o-object-fit:contain;object-fit:contain}.node-icon{max-width:80px;max-height:80px;margin:auto}.node-icon-box,.node-img-box{flex-shrink:0;position:relative;width:150px;height:150px;align-self:stretch}.node-icon-box{height:100px}.node-header,.node-wrapper{display:flex;grid-gap:12px;gap:12px}.node-wrapper{width:100%;flex-direction:column}.node-header{justify-content:space-between}.node-header>p{-ms-word-break:break-all;word-break:break-all;margin:0}.node-details{display:flex;flex-wrap:wrap;width:100%;grid-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.node-details .details{display:flex;flex-direction:column;justify-content:flex-end}.node-current{display:flex;flex-direction:column;align-items:stretch;padding:6px 0}.node-btn-list{display:flex;list-style:none;margin:0;padding:0}.node-btn-list>li{padding:5px;cursor:pointer}.node-btn-list>li:not([disabled]):hover{background-color:rgba(255,255,255,.1);border-radius:50%}.node-btn-list>li[disabled]{cursor:default;pointer-events:none;opacity:.3}#node-storage{margin-top:16px}.node-storage-space{display:flex;margin-top:10px;grid-column-gap:15px;-moz-column-gap:15px;column-gap:15px;align-items:center;justify-content:flex-end}.node-storage-space .progress-bar{flex-grow:1;max-width:200px}.node-upload-source{margin:0;padding:0;list-style:none;display:flex}.node-upload-source>li{display:flex}.dropdown li.selected,.node-upload-source>li[selected=true],.storage-select-btn:hover span{color:#fa6831}.node-upload-source>li:not(:first-child)::before{content:"\00a0|\00a0";color:#fff}#preview-wrapper{display:flex;align-items:start;justify-content:start;flex-wrap:wrap;position:relative}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(10,10,10,.5)}.loading-overlay>img{width:20%;height:20%}.job-details{width:100%;margin-left:1rem}.job-prop{display:flex;padding-bottom:12px}.job-prop>.icon{margin:12px 6px 6px}.job-prop p{padding:.2rem}.job-prop-grid{display:grid;grid-template-columns:repeat(2,1fr);flex-grow:1}.job-buttons{margin-top:16px;flex-wrap:wrap;justify-content:flex-start}.job-buttons button{margin:0 12px 12px 0}.job-buttons:first-child button{margin-left:0}button{text-transform:none;display:flex;align-items:center;border-radius:6px;border-color:transparent}button:hover{cursor:pointer}button:disabled{cursor:default;pointer-events:none;box-shadow:none;opacity:.5}.action{background-color:#5b5b5b}.action:hover{background-color:#6b6868}.action:disabled{background-color:#5b5b5b;border-color:#dbdbdb}.yes{background-color:#35a913}.yes:hover{background-color:#6ba959}.yes:disabled{background-color:#35a913;border-color:#dbdbdb}.no{background-color:#be0000}.no:hover{background-color:#b34a4a}.no:disabled{background-color:#be0000;border-color:#dbdbdb}.outlined{border-style:solid;background-color:transparent;border-color:#fff}.outlined:hover{background-color:#fff;color:#000}.message{display:flex;justify-content:center;margin-top:15%;margin-bottom:15%}.file-name__form flex-row,.progress{margin-bottom:16px}#job{width:100%;margin-top:1rem}#job .file-name{margin-bottom:20px}#job .progress{width:100%;font-size:40px}.progress-img{flex:1 1 auto;min-width:320px}.progress-img>.background{filter:grayscale(1);background:#363636;width:100%;height:auto;display:block}.progress-img>.foreground{position:absolute;top:0;left:0;width:100%;height:auto;display:block}.progress-with-img,.progress-with-img>div{display:flex;flex:1 1 auto}.progress-with-img .progress-pct{display:flex;padding:0 0 0 1rem;align-items:center;justify-content:left;flex:0 0 auto;flex-wrap:nowrap}.progress-with-img .progress-bar{height:auto;width:20px;flex-shrink:0;background:#242526}.preview-img-wrapper{display:flex;flex-grow:1;flex-wrap:wrap;position:relative}.job-buttons,.refill{display:flex}.refill{margin:10px 0 20px}.refill div:first-child{padding-right:6px}.refill div:last-child{padding-left:6px}#control .row{display:flex;flex-direction:row;width:100%}#control .col,#control .resp-row{display:flex;flex-direction:column}#control .resp-row{width:100%;flex-wrap:wrap}#control .resp-group{display:flex;justify-content:space-between;flex-grow:1}#control .resp-group .col:last-child{margin:0 auto}#control .txt-underline{border-bottom:1px solid #707070;padding-bottom:.25rem}#control .title{margin:1rem 0}#control img{-webkit-user-drag:none}#control .rectangle,#control .square{min-width:6rem;width:6rem;height:6rem;margin:.5rem;border-radius:8px;padding:0}#control .square{display:flex;align-items:center;justify-content:center}#control .rectangle{width:100%}#control .input-wrapper{display:flex;margin:.25rem;border-radius:12px;background:#fff}#control .input-wrapper>.square{margin:0;width:auto}#control .input-wrapper>.square:first-child{border-radius:8px 0 0 8px;background-color:#5b5b5b}#control .input-wrapper>.square:last-child{border-radius:0 8px 8px 0}#control input[type=text]{margin:0;padding:0;border:0;width:150px;flex-grow:1;text-align:center}#control .grid-container{display:grid;grid-template-columns:auto auto}#control .grid-item:nth-child(even){text-align:right}#control .separator{display:flex;flex-grow:1}#control button[selected],#control button[selected]:disabled{border:0;background:#fa6831;opacity:1}.modal{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(10,10,10,.86);opacity:0;visibility:hidden;z-index:5}.modal-box{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#4a4a4a;padding:1rem 1.5rem;border-radius:.5rem;z-index:1000}.modal-box.offline-screen{background-color:transparent;text-align:center}.close-button{float:right;text-align:center;border-radius:.25rem;background-color:rgba(10,10,10,.2);border:0;border-radius:50px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:40px;max-height:40px;max-width:40px;min-height:40px;min-width:40px;outline:0;position:relative;vertical-align:top;width:40px}.close-button:after{height:50%;width:2px}.close-button:before{height:2px;width:50%}.close-button:after,.close-button:before{background-color:#efefef;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.show-modal{opacity:1;visibility:visible;transform:scale(1)}.modal-welcome img{width:90%;padding-bottom:20px}.modal-welcome p{padding:.2rem;text-align:center}.modal-welcome p:last-child{margin-top:2rem}.modal-apiKey>p{padding:.2rem}.modal-apiKey>p:first-child{padding-bottom:1.5rem;padding-top:1rem}.modal-apiKey>input{width:100%;box-sizing:border-box;margin-bottom:5px;border-radius:4px;min-height:2.2rem;margin-top:5px}.modal-apiKey>button{float:right}.modal-confirm>div>div{margin:15px 15px 15px 0}.modal-exposure{display:grid;grid-template-columns:7fr 1fr 3fr 1fr;grid-template-rows:auto;margin-bottom:10px;justify-items:center}.modal-exposure>p{width:100%;align-self:center;white-space:nowrap}.modal-exposure>img{border-radius:50%;cursor:pointer;width:48px;height:48px}.modal-exposure #next,.modal-exposure #previous{display:none}#question{display:flex;justify-content:center;margin-top:15%;margin-bottom:15%}#prusa-toast{line-height:1.5;display:flex;flex-direction:column;z-index:4;position:fixed;right:0;bottom:0;font-size:1.25rem}#prusa-toast>article{display:block;text-align:center;margin:7px;-webkit-animation:slideInUp .5s,zoomOut .5s 10s;animation:slideInUp .5s,zoomOut .5s 10s}.toast-header{text-align:center;align-items:center;border-radius:10px 10px 0 0;display:flex;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative;color:#efefef;background-color:#4a4a4a}.toast-body{word-break:break-all;padding:1.25em 1.5em;border-radius:0 0 10px 10px;color:defines.#efefef;background-color:#707070}#prusa-toast>article.warning>div.toast-header{color:rgba(0,0,0,.7);background-color:#ffdd57}#prusa-toast>article.warning>div.toast-body{color:#947600;background-color:#fffbeb}#prusa-toast>article.success>div.toast-header{color:#efefef;background-color:#48c774}#prusa-toast>article.success>div.toast-body{color:#257942;background-color:#effaf3}#prusa-toast>article.error>div.toast-header{color:#efefef;background-color:#f14668}#prusa-toast>article.error>div.toast-body{color:#cc0f35;background-color:#feecf0}#prusa-toast>article.error,#prusa-toast>article.warning{-webkit-animation:slideInUp .5s;animation:slideInUp .5s}.dropdown{align-self:center;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}#log-list{text-transform:none}.dropdown .open,.storage-select .open{visibility:visible}.dropdown ul{background-color:#0a0a0a;border:1px solid #707070;list-style:none;padding:0;margin:0;max-height:280px;overflow-y:auto}.dropdown li,.dropdown-btn{cursor:pointer;padding:16px 0}.dropdown li{padding:15px 20px;white-space:nowrap}.dropdown li.select{color:#fff;background:#fa6831}.dropdown-btn img{height:.7em;width:.7em;max-width:none;padding:0}.dropdown-content{top:90%;min-width:100%;position:absolute;visibility:collapse;z-index:5}.storage-select{display:flex;align-items:stretch;text-transform:uppercase;position:relative;width:100%;color:#000}.storage-select-left{width:0;border-bottom:1px solid #d5d5d5}.storage-select-right{flex:0 0 auto;border-bottom:1px solid #d5d5d5}.storage-select .icon{padding:0 8px}.storage-select-content{background:#fff;position:absolute;visibility:collapse;z-index:3;list-style:none;padding:0;margin:0;border-radius:6px;border:1px solid #d5d5d5;width:100%}.storage-select-content>li{display:flex;align-items:center;padding:16px 0;cursor:pointer}.storage-select-content>li:hover{background:#d5d5d5}.storage-select-btn{flex:1 0 0}.storage-select-btn-inner{display:flex;align-items:center;flex:1 0 0}.storage-select-btn{cursor:pointer;padding:16px 0;display:flex;align-items:center;border-radius:6px;background:#fff;border:1px solid #d5d5d5}.storage-select-btn img:last-child{margin-left:auto;border-left:1px solid #d5d5d5;padding:0 10px}.kebab{position:relative}.kebab>ul{position:absolute;right:0;z-index:3;display:none;list-style:none;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin:0;padding:0;background-color:#f1f1f1;border:1px solid rgba(0,0,0,.15);border-radius:4px;cursor:default}.kebab>ul>li{padding:0 24px;display:flex;align-items:center;cursor:pointer}.kebab>ul>li:not([disabled]):hover{background-color:rgba(0,0,0,.1)}.kebab>ul>li>.icon{margin:12px 12px 12px 0}.kebab>ul>li[disabled]{cursor:default;pointer-events:none;opacity:.3}.kebab>ul>li:first-child{padding-top:12px}.kebab>ul>li:last-child{padding-bottom:12px}.loading{display:flex;justify-content:center;width:100%;margin-top:15%;margin-bottom:15%}.loading>img{width:60px;height:auto}input[type=password]:disabled,input[type=text]:disabled{background:0 0;border:0;color:#fff}.edit{cursor:pointer}#settings input[type=password],#settings input[type=text]{line-height:1.5;width:100%}#settings button{min-width:120px}#settings .table{padding:7px 0;max-width:800px}#settings .row{display:flex;flex-wrap:wrap}#settings .col{word-wrap:break-word;box-sizing:border-box;display:flex;align-items:center;padding-bottom:7px}#settings .col:nth-child(1){width:30%;justify-content:flex-end;text-align:right}#settings .col:nth-child(2){width:70%;flex-grow:1}#settings .col:nth-child(3){width:70%;margin-left:30%}#settings .col:nth-child(1),#settings .col:nth-child(2){padding-right:15px}#settings .logs{display:block;background:#fff;color:#000;height:12rem;overflow:auto;line-height:1.5;list-style:none;padding:10px;position:relative}#settings .logs li{width:100%;word-wrap:break-word;word-break:break-all}.connection-status p{display:flex}.connection-status img{margin-left:7px}.conn-status-msg{margin:0}.camera__snapshot,.file-name__form input{display:block}.camera-snapshot-meta{list-style:none;padding:0;display:flex;flex-direction:row;grid-gap:16px;gap:16px;margin:16px 0}.camera-snapshot-meta p{line-height:1.5}.file-name__form,.file-name__submit{margin-top:16px}.camera-settings__form label{padding-right:8px;text-align:left}.camera-settings__form .flex-row{margin:16px 0}#cameras-list{margin:0;padding:0}#cameras-list li{list-style:none}.camera__snapshot{cursor:pointer}.camera__preview{width:100px;height:100px;display:flex;align-items:center}.camera__preview img{width:100%;height:auto}.camera-settings__form .dropdown-btn{padding:0}.sort-bar{margin:0;padding:0}.sort-by{margin-left:16px;cursor:pointer;align-items:center}.sort-by p{margin-right:8px}.sort-asc,.sort-desc{fill:#efefef}.asc .sort-asc,.desc .sort-desc{fill:#fa6831}.sort-direction{justify-content:center}@media only screen and (max-width:991.5px){.pc-only{display:none}.camera-snapshot-meta{flex-direction:column}}@media only screen and (min-width:992px){.mobile-only{display:none}.header{padding:0;position:-webkit-sticky;position:sticky;top:0;z-index:4}nav .logo-wrapper{flex-grow:0}nav{flex-direction:inherit}nav>ul{flex-wrap:nowrap;flex-direction:row;width:inherit;padding:0}nav>ul>li{position:relative;z-index:5;margin-top:4px;border-bottom:2px solid #707070}nav>ul>li a{padding:0 16px}nav>ul>li:hover{border-bottom:2px solid #efefef}nav .dropdown{padding:0;align-self:unset!important;min-width:-webkit-fit-content!important;min-width:-moz-fit-content!important;min-width:fit-content!important}.dropdown li{padding:2px 4px}#lang-dropdown{order:4}.burger-menu,.kebab-responsive>ul.open{display:flex}nav .brand-logo{max-height:100%;max-width:300px;min-height:auto;margin-bottom:auto;flex-grow:0;justify-content:flex-start}nav .brand-logo img{max-width:none;max-height:none;width:auto;height:auto}nav .navbar-burger{display:none}#telemetry-wrapper{flex:0 0 auto;width:256px}.tel-prop{width:100%}#title,.content-wrapper{flex-direction:row}.title-printer{margin-left:auto}.icon,button>img{width:24px;height:24px;min-width:24px}.icon-small{width:20px;height:20px;min-width:20px}button{border-radius:4px}#preview-wrapper{flex-wrap:nowrap}.job-title{display:flex;flex-direction:row}.job-title p{flex:1 0 0}.progress>progress{width:96%}.modal-welcome img{width:75%}#lang{margin-top:0}#settings .col:nth-child(1){width:25%}#settings .col:nth-child(2){width:45%}#settings .col:nth-child(3){width:30%;margin-left:0}#control .rectangle,#control .square{min-width:3.5rem;height:3.5rem;margin:.25rem;border-radius:4px}#control .square{width:3.5rem}#control .resp-row{flex-direction:row;justify-content:space-between}#control .input-wrapper>.square:first-child{border-radius:4px 0 0 4px;background-color:#5b5b5b}#control .input-wrapper>.square:last-child{border-radius:0 4px 4px 0}#job .progress,#prusa-toast{font-size:1rem}.close-button{height:40px;max-height:40px;max-width:40px;min-height:40px;min-width:40px}.node-current{flex-direction:row}.node,.node-btn-list{padding-right:5px}.node .node-btn-list{padding-right:0}.node-icon{max-width:48px;max-height:48px}.node-img-box{width:100px;height:100px}.node-icon-box{width:100px;height:60px}.kebab-responsive>.kebab-menu{display:none}.kebab-responsive>ul{position:static;display:flex;background:0 0;border:0}.kebab-responsive>ul>li,.kebab-responsive>ul>li:first-child,.kebab-responsive>ul>li:last-child{padding:5px}.kebab-responsive>ul>li:last-child{margin-right:-5px}.kebab-responsive>ul>li:not([disabled]):hover{background-color:rgba(255,255,255,.1);border-radius:50%}.kebab-responsive>ul>li .icon{margin:0}.storage-select{color:#fff;border-radius:0}.storage-select-btn{display:none}.storage-select-content{visibility:visible;position:static;border:0;background:0 0;list-style:none;display:flex;width:auto}.storage-select-content>li{display:flex;align-items:center;padding:5px 30px 5px 5px;cursor:pointer;border:1px solid transparent;border-bottom-color:#bababa}.storage-select-content>li:hover{background:0 0}.storage-select-content>li[selected=false]:hover{background:#313131}.storage-select-content>li[selected=true]{color:#fa6831;border:1px solid #bababa;border-bottom:1px solid #0a0a0a}.storage-select-left{width:10px}.storage-select-right{flex:1 0 auto}.job-buttons-separator{flex:1 0 0}.camera-snapshot-meta{flex-direction:row}}@media only screen and (min-width:1200px){.home-row{flex-direction:row}.home-row>div:not(:first-child){padding-left:12px}.home-row>div:first-child{padding-right:12px}} diff --git a/prusa/link/static/main.42bf9f928dbecae52722.js b/prusa/link/static/main.42bf9f928dbecae52722.js deleted file mode 100644 index fa6ad5bf..00000000 --- a/prusa/link/static/main.42bf9f928dbecae52722.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e={5862:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"f844a0a85dde310826fce450c3e149d3.svg"},340:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"d0ce7d704590cb0b868ae92249ee86e8.svg"},3246:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"e6e0734bc2dad609a3e92f1873412f11.svg"},6730:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"557f3616d5a1b407b59795b8328bb51f.svg"},8065:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"2e842fcb7b83af8e1e0d26afd80f8fd9.svg"},8920:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"24c2502c54c43441d0bb4bbc17e10a83.svg"},2456:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"f6a7f34a841f532dd1e3e4d610d164f6.svg"},9819:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"53df9c11e268c2390b147239f9ee8796.svg"},7038:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"9332c323b291ba7226ddcdabb0c8e7c4.svg"},1656:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"79e90794ba3b36a64a12414decda0932.svg"},9594:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"a443dadfc7e114c74dae6cd64a74db9d.svg"},931:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"926f52aea63cfd597b30096bfe4077c6.svg"},7336:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"44b654f4ca724e154a9bc60335e98847.svg"},9387:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"8657650f85be23655543d28f58941616.svg"},5300:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"ea93bcffb8771234f8c641f3b7e9f848.svg"},3482:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"ccd215a92d0427a21339a8c38e2a40f3.svg"},5515:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"997c391425907810b4a6e42663d11fd4.svg"},4578:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"24e2e49c87df140cf16aa18b4e261f12.svg"},2e3:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"58151992d28dfb34ee417e0ebf6a66b6.svg"},2290:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"c8a0ca767f73685bbe06863f81e9d3cb.svg"},3174:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"39e93870e6b8fd4ef2d9ed668f8c1545.svg"},8796:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"1218694688ee15ee97bcded9e1a75cc8.svg"},1373:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"dfb811cc28f8e3d7c14bcedbe7ef35b8.svg"},4622:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"b891ace1622f34bac5a2b4edb7adc733.svg"},5464:(e,t,a)=>{var i=a(7091),s=a(8065),n=a(4622),o=a(6730),r='

  • Camera Name

    -

  • Snapshot Time

    -

    ';e.exports=r},3478:(e,t,a)=>{var i=a(7091),s=a(340),n=a(5862),o=a(1656),r=i(s),l=i(n),d=i(o),c='

    printer coordinates

    X axis

    0 mm

    Y axis

    0 mm

    Z axis

    0 mm

    stepper motors

    heated bed X and Y move

    move step [mm]

    nozzle Z move

    extruder

    extrude/retract step [mm]

    nozzle temperature

    0°C

    speed

    100%

    heated bed temperature

    0°C

    flow

    100%

    ';e.exports=c},2373:(e,t,a)=>{var i=a(7091),s=a(2e3),n=a(2290),o=a(3246),r=a(4578),l=a(7038),d=a(2456),c=a(9819),u=a(9387),p=a(5300),m=a(3482),v=a(4622),g=a(6730),h=a(3174),b=a(8796),f=i(s),y=i(n),w=i(o),k=i(r),x=i(l),z=i(d),S=i(c),P=i(u),E=i(p),L=i(m),N=i(v),I=i(g),T='

    Upload file

    Add file from

     

    Click to choose a *.sl1 file or drag it here

    Source URL

    Type URL of G-CODE file

    File name

    Type or edit file name

    Progress

    NA

    Size

    NA

    Download Started

    NA

    Remaining Time

    NA

    Autostart

    NA

    Temperatures

    Cameras

    • -

    • -

    ';e.exports=T},7189:(e,t,a)=>{var i=a(7091),s=a(2e3),n=a(2290),o=a(3246),r=a(4578),l=a(7038),d=a(2456),c=a(9819),u=a(9387),p=a(5300),m=a(3482),v=a(4622),g=a(6730),h=a(931),b=a(5515),f=a(3174),y=a(8796),w=a(9594),k=a(8065),x=a(8920),z=i(s),S=i(n),P=i(o),E=i(r),L=i(l),N=i(d),I=i(c),T=i(u),j=i(p),C=i(m),_=i(v),A=i(g),D=i(h),B=i(b),O=i(f),q=i(y),M=i(w),R=i(k),H=i(x),U='

    Local

    0%

    0 GB of 0 GB free

    Add file from

     

    Click to choose a *.sl1 file or drag it here

    Source URL

    Type URL of G-CODE file

    File name

    Type or edit file name

    Progress

    NA

    Size

    NA

    Download Started

    NA

    Remaining Time

    NA

    Autostart

    NA

    ';e.exports=U},5198:(e,t,a)=>{var i=a(7091),s=a(4622),n=a(6730),o='

    ';e.exports=o},2936:(e,t,a)=>{var i=a(7091),s=a(7038),n=a(7336),o=a(1373),r=i(s),l=i(n),d=i(o),c='

    version

    api

    hostname

    firmware

    server

    text

    sdk

    frontend

    3.12.0

    system version

    updates

    connection

    PRUSA CONNECT

    connection status

    Successfully connected

    3D printer connection status

    Successfully connected

    printer

    printer name

    printer location

    user

    username

    new password

    repeat password

    current password

    serial number

    serial number

    api key

    api key

    logs

    select file

    • No log file is selected!
    ';e.exports=c},7091:e=>{"use strict";e.exports=function(e,t){return t||(t={}),"string"!=typeof(e=e&&e.__esModule?e.default:e)?e:(t.hash&&(e+=t.hash),t.maybeNeedQuotes&&/[\t\n\f\r "'=<>`]/.test(e)?'"'.concat(e,'"'):e)}},6648:(e,t,a)=>{"use strict";a.d(t,{LK:()=>l,Z5:()=>v,gJ:()=>p,iT:()=>d,wU:()=>o});var i=a(8236),s=a(1351);const n=()=>new Promise(((e,t)=>{(0,i.o)((e=>t=>{const a=document.getElementById("modal-apiKey"),i=document.importNode(a.content,!0);return i.getElementById("apiKey").addEventListener("keydown",(a=>{"Enter"==a.key&&(t(),e(a.target.value))})),i.getElementById("login").addEventListener("click",(a=>{a.preventDefault();let i=document.getElementById("apiKey").value;t(),e(i)})),i})(e),{timeout:0,closeOutside:!1})})).then((e=>sessionStorage.setItem("apiKey",e))),o=(e="application/json")=>"ApiKey"==sessionStorage.getItem("authType")?{"X-Api-Key":sessionStorage.getItem("apiKey"),Accept:e}:{Accept:e},r=()=>new Promise(((e,t)=>(sessionStorage.setItem("auth","pending"),fetch("/api/v1/info",{headers:o()}).then((t=>{if(401==t.status){const a=t.headers.get("WWW-Authenticate").split(" ")[0];return sessionStorage.setItem("authType",a),sessionStorage.removeItem("apiKey"),"ApiKey"==a?n().then((()=>r().then((t=>e(t))))):r().then((t=>e(t)))}{const e=t.json();return 200!=t.status&&e.then((e=>(0,s.S)({data:e}))),e}})).then((t=>{sessionStorage.setItem("auth","true"),e(t)}))))),l=(e,t={})=>c(e,t,"application/json","json"),d=(e,t={})=>c(e,t,"text/plain","text");async function c(e,t={},a,i){if("true"!=sessionStorage.getItem("auth"))throw{code:401};{t.headers={...t.headers,...o(a)};const s=await fetch(e,t),n=s.status,r={code:n,eTag:s.headers.get("etag")};switch(n){case 401:throw sessionStorage.setItem("auth","false"),r;case 204:case 304:return r;default:const e=await s.text();if(!s.ok){if(e.length>0)try{r.data=JSON.parse(e)}catch{}throw r.data=r.data||{title:`Error ${n}`,message:s.statusText},r}return r.data="json"===i?0===e.length?{}:JSON.parse(e):e,r}}}const u=(e,t,a)=>new Promise(((i,s)=>{"true"==sessionStorage.getItem("auth")?(t.headers={...o(),...t.headers},fetch(a?`${e}?ct=${a}`:e,t).then((e=>{401==e.status&&(sessionStorage.setItem("auth","false"),s(e)),e.ok?e.blob().then((t=>i({url:URL.createObjectURL(t),headers:e.headers}))):s(e)})).catch((e=>s(e)))):s()})),p=(e,t,a={})=>u(e,{...a,headers:{...a.headers,Accept:"image/*"}},t),m=e=>{const t=document.getElementById("modal-welcome"),a=document.importNode(t.content,!0);return a.querySelector(".close-button").addEventListener("click",e),a},v=()=>null==localStorage.getItem("showWelcome")?new Promise(((e,t)=>{(0,i.o)(m,{closeCallback:()=>{localStorage.setItem("showWelcome",!0),e()}})})).then((()=>r())):r()},1972:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=function(e,t){let a=document.createElement("a");a.href=e,a.download=t||"",a.click(),a.remove()}},646:(e,t,a)=>{"use strict";function i(e,t=!0){e&&(t&&!e.hasAttribute("hidden")&&e.setAttribute("hidden",!0),!t&&e.hasAttribute("hidden")&&e.removeAttribute("hidden"))}function s(e,t=!0){i(e,!t)}function n(e,t=!0){e&&(t&&!e.hasAttribute("disabled")&&e.setAttribute("disabled",!0),!t&&e.hasAttribute("disabled")&&e.removeAttribute("disabled"))}function o(e,t=!0){return n(e,!t)}function r(){s(document.querySelector("#job .loading-overlay"))}function l(){i(document.querySelector("#job .loading-overlay"))}function d(e,...t){const a=i=>{if(t)for(const e of t)if(e&&e.contains(i.target))return;e&&e(),window.removeEventListener("pointerup",a)};window.addEventListener("pointerup",a)}a.d(t,{H:()=>n,QH:()=>i,QP:()=>r,Ti:()=>d,Zk:()=>l,gL:()=>o,yx:()=>s})},5537:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=function(e){return"string"==typeof e?document.getElementById(e):e||document.body}},9741:e=>{e.exports=function(e,t){let a=t.split("."),i=e;for(const e of a)if(i=i[e],!i)break;return i}},7780:(e,t,a)=>{"use strict";a.d(t,{G3:()=>v,Iu:()=>h,Vb:()=>g,m0:()=>m,ot:()=>f});var i=a(5537),s=a(9741),n=a.n(s);const o=a(4977),r=o.langs,l=o.texts,d=r.indexOf("en");let c,u;function p(){return navigator.language||navigator.userLanguage||""}function m(e){const t=r.indexOf(e);return-1!==t&&(u=t,c=e,localStorage.setItem("lang",c),!0)}function v(){return c}function g(){return[...r]}function h(e,t){let a=n()(l,`${e}.${u}`);if(!a)return a=n()(l,`${e}.${d}`),a||(a=e),b(a,t),a;let i=null;if(t&&(i=Object.assign({},t),delete i.query,delete i.ref),i&&Object.keys(i).length>0){let e,i=a,s=/{{(.*?)}}/g;for(;e=s.exec(a);){let s=a.substr(e.index+2,e[0].length-4);if("query"!==s&&"ref"!==s)if(s in t){let a=t[s];i=i.replace(e[0],a)}else 0}a=i}return b(a,t),a}function b(e,t){if(t)if(t.ref){t.ref.innerHTML=e}else if(t.query){let a=document.querySelector(t.query);a?a.innerHTML=e:console.warn(`cannot find element with "${t.query}" query`)}}function f(e){(0,i.Z)(e).querySelectorAll('[data-label]:not([data-label=""])').forEach((e=>{const t=h(e.getAttribute("data-label")),a=e.getAttribute("data-label-target");a?e.setAttribute(a,t):e.innerHTML=t}))}m(localStorage.getItem("lang"))||m(p().toLowerCase())||m(p().toLowerCase().split("-")[0])||m("en")},2451:(e,t,a)=>{"use strict";a.d(t,{Z:()=>L});var i=a(6648),s=a(646),n=a(7780),o=a(3707),r=a(8236),l=a(5412),d=a(1351);let c,u=!1,p=[];const m={TEN_SEC:"TEN_SEC",THIRTY_SEC:"THIRTY_SEC",SIXTY_SEC:"SIXTY_SEC",EACH_LAYER:"EACH_LAYER",FIFTH_LAYER:"FIFTH_LAYER",MANUAL:"MANUAL"},v=e=>{switch(e){case m.TEN_SEC:return(0,n.Iu)("cameras.trigger-scheme.ten-sec");case m.THIRTY_SEC:return(0,n.Iu)("cameras.trigger-scheme.thirty-sec");case m.SIXTY_SEC:return(0,n.Iu)("cameras.trigger-scheme.sixty-sec");case m.EACH_LAYER:return(0,n.Iu)("cameras.trigger-scheme.each-layer");case m.FIFTH_LAYER:return(0,n.Iu)("cameras.trigger-scheme.fifth-layer");case m.MANUAL:return(0,n.Iu)("cameras.trigger-scheme.manual");default:return`${e}`}},g=()=>(0,o.Vp)((0,n.Iu)("ntf.success"),(0,n.Iu)("ntf.camera-suc")),h=(e,t=P)=>{void 0===c&&(c=e.camera.id),u=e.link.connect.ok,(0,i.LK)("/api/v1/cameras").then((e=>{const a=(e?.data?.camera_list||[]).map((e=>{let t=p.find((t=>t.id===e.camera_id))||{};return e.camera_id===c&&(e.connected||(c=null)),{id:e.camera_id,config:e.config,connected:e.connected,detected:e.detected,stored:e.stored,registered:e.registered,nextSnapshotAt:t?.nextSnapshotAt,lastSnapshotAt:t?.lastSnapshotAt,lastSnapshotUrl:t?.lastSnapshotUrl}})),i=p.filter((e=>!a.find((t=>e.id===t.id))));t&&t(a,i),p=a})).catch(d.S),p.filter((e=>e.connected)).forEach((e=>y(e.id)))},b=e=>`camera_${e}`,f=e=>document.getElementById(b(e)),y=e=>{const t=p.find((t=>t.id===e));if(!t)return;const a=new Date;t.lastSnapshotAt&&t.nextSnapshotAt&&a{const n=p.find((t=>t.id===e)),o=b(e),r=document.querySelector(`#${o} .camera__no-snapshot`),l=document.querySelector(`#${o} .camera__snapshot`);if(r&&(0,s.yx)(r,!1),l&&((0,s.yx)(l,!0),l.src=t),n){const e=`${i.get("cache-control")}`.match(/max-age=(\d+)/);let s;e&&(s=parseInt(e[1],10)),s||(s=11);const o=i.get("expires"),r=i.get("last-modified"),l=e=>{const t=new Date;return new Date(t.getTime()+1e3*e)};n.nextSnapshotAt=o?new Date(o):l(s),n.nextSnapshotAt{e||(e=c);const t=e?p.find((t=>t.id===e)):null,a=document.getElementById("camera-snapshot-picture"),i=document.getElementById("camera-snapshot-time"),s=document.getElementById("camera-snapshot-name"),[n,o,r,l]=t?.lastSnapshotAt?[t.id,t.config.name,t.lastSnapshotAt.toLocaleString(),t.lastSnapshotUrl]:[null,"-","-",""];c=n,a&&(a.src=l),i&&(i.innerText=r),s&&(s.innerText=o)},k=(e,t,a=!1)=>{e.querySelector(".camera__name").innerText=t.config.name,e.querySelector(".camera__path").innerText=t.config.path,e.querySelector(".camera__driver").innerText=t.config.driver,e.querySelector(".camera__cloud").innerText=t.registered?(0,n.Iu)("camera.cloud.linked"):(0,n.Iu)("camera.cloud.not-linked");const i=e.querySelector(".camera__register"),o=e.querySelector(".camera__unregister"),r=e.querySelector(".camera__add"),l=e.querySelector(".camera__remove"),d=e.querySelector(".camera__settings");(0,s.yx)(i,u&&t.connected&&!t.registered),(0,s.yx)(o,u&&t.connected&&t.registered),(0,s.yx)(r,!1),(0,s.yx)(l,!t.connected),(0,s.yx)(d,t.connected),a&&(r.title=(0,n.Iu)("camera.btn.connect"),d.title=(0,n.Iu)("camera.btn.settings"),i.title=(0,n.Iu)("camera.btn.link"),o.title=(0,n.Iu)("camera.btn.unlink"),r.addEventListener("click",(e=>{e.stopPropagation(),z(t.id)}),!1),l.addEventListener("click",(e=>{e.stopPropagation(),S(t.id)}),!1),d.addEventListener("click",(e=>{e.stopPropagation(),E(t.id)}),!1),i.addEventListener("click",(e=>{e.stopPropagation(),x(t.id,"POST")}),!1),o.addEventListener("click",(e=>{e.stopPropagation(),x(t.id,"DELETE")}),!1))},x=(e,t)=>{(0,i.LK)(`/api/v1/cameras/${e}/connection`,{method:t}).then((()=>g())).catch(d.S)},z=e=>{const t=p.find((t=>t.id===e));t&&(0,i.LK)(`/api/v1/cameras/${t.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:t.config})}).then((()=>g())).catch(d.S)},S=e=>{const t=p.find((t=>t.id===e));t&&(0,i.LK)(`/api/v1/cameras/${t.id}`,{method:"DELETE"}).then((()=>g())).catch(d.S)},P=(e,t)=>{const a=document.getElementById("cameras-list");t.forEach((e=>{const t=f(e.id);t&&a.removeChild(t)})),e.sort(((e,t)=>t.connected-e.connected)).forEach((e=>{const t=f(e.id);if(t)k(t,e);else{const t=(e=>{const t=document.getElementById("camera-list-item")?.content;if(!t)return null;const a=document.importNode(t,!0),i=a.querySelector("li"),o=e.id;return i.addEventListener("click",(e=>{const t=p.find((e=>e.id===o));t&&t.connected&&w(t.id),e.preventDefault()}),!1),i.id=b(e.id),a.querySelector(".camera__path__label").innerText=(0,n.Iu)("camera.path"),a.querySelector(".camera__driver__label").innerText=(0,n.Iu)("camera.driver"),a.querySelector(".camera__cloud__label").innerText=(0,n.Iu)("camera.cloud.label"),(0,s.yx)(a.querySelector(".camera__snapshot"),!1),k(a,e,!0),a})(e);t&&a.appendChild(t)}}))},E=e=>new Promise(((t,a)=>{(0,r.o)(((e,t)=>t=>{const a=`/api/v1/cameras/${e}`,s=document.getElementById("modal-camera-settings"),r=document.importNode(s.content,!0),c=r.getElementById("camera-settings__name"),u=l.L.init(r.getElementById("camera-settings__resolution"),"camera-settings__resolution"),p=l.L.init(r.getElementById("camera-settings__trigger-scheme"),"camera-settings__trigger-scheme"),g=r.getElementById("yes");return(0,i.LK)(a).then((e=>{const s=e.data,r=s.available_resolutions.sort(((e,t)=>e.width===t.width?t.height-e.height:t.width-e.width)).map(((e,t)=>`${e.width}x${e.height}`)),l=Object.keys(m),h=l.map((e=>v(e)));c.value=s.name,u.setOptions(r),u.value=`${s.resolution.width}x${s.resolution.height}`,p.setOptions(h),p.value=v(s.trigger_scheme),g.addEventListener("click",(()=>{const[e,s]=u.value.split("x").map((e=>parseInt(e))),r=l[h.indexOf(p.value)];(0,i.LK)(`${a}/config`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.value,resolution:{width:e,height:s},trigger_scheme:r})}).then((()=>(0,o.Vp)((0,n.Iu)("ntf.success"),(0,n.Iu)("ntf.camera-config-success")))).catch(d.S).finally(t)}))})).catch(d.S),r.getElementById("no").addEventListener("click",(()=>t())),r})(e),{timeout:0,closeOutside:!1})})).then((()=>{lastUpdated=null,h()})),L={load:e=>{p=[],(0,n.Iu)("cameras.link",{query:"#title-status-label"}),h(e)},update:h,getCameraNode:f,getCameraNodeId:b,updateCurrentCamera:w}},732:(e,t,a)=>{"use strict";a.d(t,{Z:()=>v});var i=a(7780),s=a(646),n=a(5489),o=a(6648);var r=a(1351),l=a(4800);a(8463);let d=1,c=1;const u=e=>{(0,n.ZP)("control",e),function(e){const t=e.state,a=document.querySelectorAll("#control button"),i=["extrude","retract"],n=["flowrate","bed","nozzle","speed"],o=[...n,...i,"move-step","extrude-retract-step","heated-bed-xy-move"];if([l.PT.PRINTING||l.PT.BUSY||l.PT.PAUSED].includes(t)){const e=t===l.PT.PAUSED?o:n;a.forEach((t=>{const a=t.id||t.parentNode.id||t.parentNode.parentNode.id;(0,s.H)(t,!e.includes(a))}))}const r=e.telemetry.temperature.nozzle.current||0,d=e.printer.minExtrusionTemp||0,c=r&&d&&r>=d;i.forEach((e=>(0,s.H)(document.getElementById(e),!c)))}(e)};function p(e,t){if("move"===e){(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"jog",...e})}))(function(e){const t=e.includes("-"),a=e.replace(RegExp("[+-]"),"");return a?{[a]:t?-d:d}:(console.error(`"${e}" is not valid direction`),{})}(t)).catch((e=>(0,r.S)(e)))}else if("home"===e){(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"home",axes:e})}))(t.split(",")).catch((e=>(0,r.S)(e)))}}function m(e,t,a){function i(e){return Number.parseFloat(e.getAttribute("data-step"))}if(e){const n=e.querySelectorAll("button[data-step]"),o=e=>{n.forEach((t=>{i(t)===e?((0,s.H)(t),t.setAttribute("selected",!0)):((0,s.gL)(t),t.hasAttribute("selected")&&t.removeAttribute("selected"))}))};n.forEach((e=>{const t=i(e);isNaN(t)||(e.onclick=()=>{o(t),a(t)})})),o(t)}}const v={load:e=>{(0,i.Iu)("control.title",{query:"#title-status-label"}),function(e){function t(e,t){switch(e){case"bed":return i=t,(0,o.LK)("/api/printer/bed",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"target",target:i})});case"flowrate":return a=t,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"flowrate",factor:a})});case"nozzle":return(e=>(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"target",targets:{tool0:e}})}))(t);case"speed":return(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"speed",factor:e})}))(t);default:throw Error("Unknown property!")}var a,i}e&&e.querySelectorAll(".input-wrapper").forEach((e=>{const a=e.querySelector("input"),i=e.querySelector("button");if(a){const e=()=>{const e=a.getAttribute("data-action"),i=Number.parseFloat(a.value);isNaN(i)||t(e,i).then((e=>{a.value=""})).catch((e=>(0,r.S)(e)))};a.onkeyup=t=>{"Enter"===t.key&&(e(),a.blur())},i&&(i.onclick=e)}}))}(document.querySelector("#control")),m(document.querySelector("#control #move-step"),d,(e=>d=e)),m(document.querySelector("#control #extrude-retract-step"),c,(e=>c=e)),function(){const e=document.querySelector("#control #disable-steppers");e&&(e.onclick=()=>{(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"disable_steppers"})}).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #extrude");e&&(e.onclick=()=>{var e;(e=c,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"extrude",amount:e})})).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #retract");e&&(e.onclick=()=>{var e;(e=c,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"extrude",amount:-e})})).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #heated-bed-xy-move");e&&e.querySelectorAll("button[data-action]").forEach((e=>{e.onclick=()=>{p(e.getAttribute("data-action"),e.getAttribute("data-value"))}}))}(),function(){const e=document.querySelector("#control #nozzle-z-move");e&&e.querySelectorAll("button[data-action]").forEach((e=>{e.onclick=()=>{p(e.getAttribute("data-action"),e.getAttribute("data-value"))}}))}(),u(e)},update:u}},5502:(e,t,a)=>{"use strict";a.d(t,{Z:()=>S});var i=a(7780);const s=(0,i.Iu)("prop.at"),n=(0,i.Iu)("unit.h"),o=(0,i.Iu)("prop.less-than"),r=(0,i.Iu)("unit.min"),l=((0,i.Iu)("unit.ml"),(0,i.Iu)("unit.rpm")),d=(0,i.Iu)("prop.today-at"),c=(0,i.Iu)("prop.tmw-at"),u=(0,i.Iu)("unit.b"),p=(0,i.Iu)("unit.kb"),m=(0,i.Iu)("unit.mb"),v=(0,i.Iu)("unit.gb"),g=(0,i.Iu)("prop.true"),h=(0,i.Iu)("prop.false");function b(e,t=!0,a=1){return e>0?t?e.toFixed(a):e:0}function f(e){const t=new Date(1e3*e);var a=localStorage.getItem("lang");return(t.toLocaleDateString(a,{year:"numeric",month:"numeric",day:"numeric"})+" "+t.toLocaleTimeString(a,{hour:"numeric",minute:"numeric"})).substring(0,25)}function y(e){let t="00:00";if(e){let a=new Date,i=new Date(a.getTime()+1e3*e),n=new Date(a);n.setDate(n.getDate()+1);let o="";if(i.getDate()==a.getDate()&&i.getMonth()==a.getMonth())o=`${d} `;else if(i.getDate()==n.getDate()&&i.getMonth()==n.getMonth())o=`${c} `;else{let e={month:"numeric",day:"numeric"};o=`${i.toLocaleString(window.navigator.language,e)} ${s} `}t=o+("0"+i.getHours()).substr(-2)+":"+("0"+i.getMinutes()).substr(-2)}return t}function w(e){if(e<60)return o;const t=Math.floor(e/60%60),a=Math.floor(e/3600);return(a>0?`${a} ${n}`:"")+(t>0?` ${t} ${r}`:"")}function k(e){let t=e;const a=[u,p,m,v];for(let e=0;e{if(void 0===t||null===t&&"progress"!==e)return(0,i.Iu)("prop.na");switch(e){case"number":return b(t);case"temp":return b(t)+" °C";case"temp_int":return b(t,0)+"°C";case"fan":return b(t)+` ${l}`;case"print":case"progressPct":return b(t||0,!0,0)+"%";case"pos":return b(t)+" mm";case"date":return f(t);case"time":return w(t);case"timeEst":return y(t);case"progress":return b(100*(t||0),!0,0)+"%";case"percent":return`${b(t||0,!0,0)}%`;case"material":return t||(0,i.Iu)("prop.na");case"size":return k(t);case"boolean":return x(t);case"diameter":return b(t,!0,2)+" mm";default:return t}},S=(e,t)=>z(e,t)},5412:(e,t,a)=>{"use strict";a.d(t,{L:()=>s});var i=a(5537);class s{set value(e){this._value=e,this.updateLabel()}get value(){return this._value}constructor(e,t,a){const i=this;this._label=t,this._ul=a,this._value=t.innerHTML,this.is_open=!1,this._options=[],this._onKeyDown=e=>{if(i.is_open){switch(e.key.toLowerCase()){case"escape":return void i.close();case"arrowdown":let e=!1;for(const t of this._ul.childNodes){if(e){this._highlight(t);break}t.classList?.contains("select")&&(e=!0)}break;case"arrowup":let t=null;for(const e of this._ul.childNodes){if(e.classList?.contains("select")){t&&this._highlight(t);break}t=e}break;case"enter":for(const e of this._ul.childNodes)if(e.classList.contains("select")){const t=e.innerText;this.value=t,this.onselect&&this.onselect(t),this.close();break}}e.preventDefault()}},this._onClick=t=>{const a=t.target.parentNode;if(!i.is_open)return!0;a!==e&&i.close()},window.addEventListener("keydown",this._onKeyDown,!1),window.addEventListener("click",this._onClick,!1),this.onselect=void 0,e.onclick=e=>{e.preventDefault(),this.is_open?this.close():this.open()}}_highlight(e){this._ul.childNodes.forEach((t=>{t===e?t.classList.add("select"):t.classList.remove("select")}))}destructor(){window.removeEventListener("keypress",this._onKeyPress),window.removeEventListener("click",this._onClick)}static init(e,t){let a=(0,i.Z)(e);const n=document.getElementById("dropdown-template"),o="dropdown"===a.getAttribute("data-type")?a:a.querySelector('select[data-type="dropdown"]');if(!o)return;o.after(document.importNode(n.content,!0));const r=o.nextElementSibling;r.id=t,o.remove();const l=r.querySelector(".dropdown-btn"),d=l.querySelector(".dropdown-label"),c=r.querySelector(".dropdown-content ul");return l&&d&&c?new s(l,d,c):void 0}setOptions(e){this._options=e}updateLabel(){this._label.innerHTML=this._value}select(e){this._label.innerHTML=e}open(){this._ul.classList.contains("open")||(this._options.forEach((e=>{const t=document.createElement("li");e===this._value&&(t.className="select selected"),t.innerText=e,t.onclick=()=>{this.select(e),this.value=e,this.onselect&&this.onselect(e),this.close()},t.onmouseover=()=>this._highlight(t),this._ul.appendChild(t)})),this._ul.classList.add("open")),this.is_open=!0}close(){for(this._ul.classList.remove(["open"]);this._ul.firstChild;)this._ul.removeChild(this._ul.firstChild);this.is_open=!1}}},1351:(e,t,a)=>{"use strict";a.d(t,{S:()=>n});var i=a(3707);let s={};function n(e,t){let a=e?.data?.title||t?.fallbackMessage?.title||"Error",n=e?.data?.message||t?.fallbackMessage?.message||"Action can not be performed",o=!1;if(e?.data){const t=e.data;t.code&&(a+=`- ${t.code}`,"7"==`${t.code}`[3]&&(o=!0)),t.url&&(n+=`
    more info`)}const r=e?.data?.code||`${a}\n${n}`;if(s[r])return;s[r]=!0;const l=()=>s[r]=!1;o?(0,i.Kp)(a,n,l):(0,i.vU)(a,n,l)}},8236:(e,t,a)=>{"use strict";a.d(t,{o:()=>n});var i=a(7780);const s={count:0,current:0},n=(e,t={})=>{const a=Object.assign({timeout:5500,closeOutside:!0},t),n=s.count;s.count=s.count+1;const o=document.querySelector(".modal-box");t.className&&o.classList.add(t.className);const r=o.parentElement;for(;o.firstChild;)o.removeChild(o.firstChild);const l=()=>{n==s.current&&r.classList.contains("show-modal")&&(r.classList.remove("show-modal"),a.closeCallback&&a.closeCallback())},d=e=>{e.target===r&&l()};a.closeOutside&&window.addEventListener("click",d);const c=e(l);s.current=n,o.appendChild(c),(0,i.ot)(o),r.classList.add("show-modal"),a.timeout>0&&setTimeout(l,a.timeout)}},5951:(e,t,a)=>{"use strict";function i(e,t,a="right"){if(!e)return;const i=e.querySelector(".fill");if(i){const e=`${["top","right","bottom","left"].map((e=>(e=>e===a?100-(t||0)+"%":0)(e))).join(" ")}`;i.style.inset=e}}a.d(t,{g:()=>i})},2957:(e,t,a)=>{"use strict";a.d(t,{Z:()=>h});var i=a(7780),s=a(5489),n=a(6648),o=a(646),r=a(1351);var l=a(3707);let d=null;const c=a(5493).Z,u=()=>(0,l.Vp)((0,i.Iu)("ntf.success"),(0,i.Iu)("ntf.settings-suc"));function p(e){const t=document.getElementById("api_key");t&&(t.innerText=e)}function m(e,t){(0,s.ZP)("con-settings",e.link),function(e,t){const a=document.getElementById("conn-prusa-connect-status"),i=document.getElementById("conn-prusa-connect-url"),s=document.getElementById("edit-connect-del"),n="FINISHED"===e.connect.registration,{hostname:r,tls:l,port:d}=e.connect.settings,{ok:c,message:u}=e.connect,p=c&&n,m=document.getElementById("conn-prusa-connect-status-"+(p?"ok":"not-ok")),g=`${l?"https":"http"}://${r}${d||""}`,h=`(${g})`;t&&(i.value=g);(0,o.QH)(i.parentNode.parentNode,n),s&&(0,o.yx)(s,n||!c);v(a,m,p,u,h)}(e.link,t),function(e,t){const a=document.getElementById("conn-printer-status"),{port:i,baudrate:s}=t.printer.settings,{ok:n,message:o}=t.printer,r=document.getElementById("conn-printer-status-"+(n?"ok":"not-ok"));v(a,r,n,o,`(${i||"/dev/ttyACM0"} @ ${s||0}bps)`)}(e.state,e.link)}function v(e,t,a,s,n){e&&e.setAttribute("ok",Boolean(a)),t&&(t.innerHTML=(a?(0,i.Iu)("conn.suc"):s)+"
    "+n)}function g(e){switch(e.toLowerCase()){case"python":return(0,i.Iu)("sys-version.python");case"description":return(0,i.Iu)("sys-version.description");case"id":return(0,i.Iu)("sys-version.id");case"os":return(0,i.Iu)("sys-version.os");default:return e}}const h={load:e=>{(0,i.Iu)("settings.title",{query:"#title-status-label"}),(0,n.LK)("api/version?system=1").then((e=>{const t={version:e.data};(0,s.ZP)("settings",t),function(e){const t=document.querySelector("#sys-version .table");if(t)for(const[a,i]of Object.entries(e.version.system)){const e=document.createElement("div");e.className="row";const s=document.createElement("div");s.className="col txt-sm",s.innerHTML=`

    ${g(a)}

    `,e.appendChild(s);const n=document.createElement("div");n.className="col txt-md",n.innerHTML=`

    ${i}

    `,e.appendChild(n),t.appendChild(e)}}(t)})).catch((e=>(0,r.S)(e))),function(){const e=document.getElementById("updates-check"),t=document.getElementById("updates-check__spinner"),a=a=>{a&&document.querySelectorAll(".update-pkg").forEach((e=>{e.parentNode.removeChild(e)})),(0,o.yx)(t,a),(0,o.gL)(e,!a)};e&&t&&(e.onclick=()=>{a(!0),(0,n.LK)("/api/v1/update/prusalink").then((t=>{const s=t.data?.new_version,o=[{name:"PrusaLink",new_version:s}],d=e.parentNode.parentNode.parentNode;o.forEach((e=>{const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("p"),c=document.createElement("div"),u=document.createElement("p"),p=document.createElement("div"),m=document.createElement("span");if(t.className="row update-pkg",s.className="col",c.className="col",p.className="col",o.className="txt-bold txt-grey txt-sm",u.className="txt-md",m.className="txt-grey txt-sm",o.innerText="PrusaLink",e.new_version){m.innerText=e.new_version;const t=document.createElement("button"),s=document.createElement("p");s.innerText=(0,i.Iu)("btn.upgrade"),t.className="action",t.appendChild(s),p.appendChild(t),t.onclick=()=>{a(!0),(0,n.LK)("/api/v1/update/prusalink",{method:"POST"}).then((()=>{(0,l.Vp)((0,i.Iu)("upgrade.success.title"),(0,i.Iu)("upgrade.success.message")),setTimeout((()=>window.location.href="/"),5e3)})).catch((e=>(0,r.S)(e))).finally((()=>a(!1)))}}else m.innerText="The package is up to date";u.appendChild(m),s.appendChild(o),c.appendChild(u),t.appendChild(s),t.appendChild(c),t.appendChild(p),d.appendChild(t)}))})).catch((e=>(0,r.S)(e))).finally((()=>a(!1)))})}(),function(e){m(e,!0),document.getElementById("edit-connect-del").addEventListener("click",(t=>{(0,n.LK)("api/connection",{method:"DELETE"}).then(u).catch((e=>(0,r.S)(e))).finally((()=>e.updateConnection()))}));const t=document.getElementById("edit-connect-set"),a=document.getElementById("edit-connect-set__spinner"),i=e=>{e&&document.querySelectorAll(".update-pkg").forEach((e=>{e.parentNode.removeChild(e)})),(0,o.yx)(a,e),(0,o.gL)(t,!e)};t.addEventListener("click",(t=>{i(!0);const a=document.getElementById("conn-prusa-connect-url")?.value;if(!a)return;const s=new URL(a);(0,n.LK)("api/connection",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connect:{hostname:s.hostname,port:s.port?parseInt(s.port):0,tls:s.protocol.startsWith("https")?1:0}})}).then((t=>{const a=t?.data?.url;a&&window.open(a,"_blank"),setTimeout((()=>{e.updateConnection().finally((()=>i(!1)))}),5e3)})).catch((e=>{i(!1),(0,r.S)(e)}))}))}(e),(0,n.LK)("api/settings").then((e=>{const t=e.data;!function(e){const t=document.querySelector("#settings #printer-name"),a=document.querySelector("#settings #printer-location"),i=document.querySelector("#settings #edit-printer"),s=()=>{(0,o.gL)(i,t.value.length>0&&a.value.length>0)};t.oninput=s,a.oninput=s,t.value=e.printer?.name||"",a.value=e.printer?.location||"","api-key"in e&&p(e["api-key"]),i.onclick=()=>{var e,i;(e=t.value,i=a.value,(0,n.LK)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({printer:{name:e,location:i}})})).then((()=>u())).catch((e=>(0,r.S)(e)))},s()}(t),function(e){const t=document.querySelector("#settings #username"),a=document.querySelector("#settings #password"),i=document.querySelector("#settings #new-password"),s=document.querySelector("#settings #re-password"),l=document.querySelector("#settings #edit-user"),d=()=>{(0,o.gL)(l,a.value.length>0&&(t.value.length>0||i.value.length>0&&s.value.length>0))};t.oninput=d,a.oninput=d,i.oninput=d,s.oninput=d,t.value=e.username||"",d(),l.onclick=()=>{((e,{username:t,newPassword:a,rePassword:i})=>(0,n.LK)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:{password:e,username:t,new_password:a,new_repassword:i}})}))(a.value,{username:t.value||void 0,newPassword:i.value||void 0,rePassword:s.value||void 0}).then((()=>u())).catch((e=>(0,r.S)(e)))}}(t)})).catch((e=>(0,r.S)(e))),function(){const e=document.querySelector("#settings #serial"),t=document.querySelector("#settings #edit-serial"),a=()=>{if(e&&t){d&&(e.value=`${d}`);const i=()=>{(0,o.gL)(t,!d&&e.value.length>0),(0,o.yx)(t,!d)};i(),e.oninput=i,(0,o.gL)(e,!d);const s=()=>{var t;(t=e.value,(0,n.LK)("/api/settings/sn",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serial:t})})).then((e=>{d=e.data.serial,u()})).catch((e=>(0,r.S)(e))).finally((()=>a()))};e.onkeyup=t=>{"Enter"===t.key&&(s(),e.blur())},t.onclick=s}};(0,n.LK)("/api/settings/sn",{headers:{"Content-Type":"application/json"}}).then((e=>{d=e.data.serial})).catch((e=>(0,r.S)(e))).finally((()=>a()))}(),function(){const e=document.getElementById("api_key-reset");e&&e.addEventListener("click",(()=>{(0,n.LK)("api/settings/apikey",{method:"POST"}).then((e=>{p(e.data["api-key"]),u()})).catch((e=>(0,r.S)(e)))}),!1)}(),c?.load(),e.updateConnection()},update:e=>{c?.update(),m(e,!1)}}},5493:(e,t,a)=>{"use strict";a.d(t,{Z:()=>v});var i=a(7780),s=a(6648),n=a(1972),o=a(5412),r=a(1351),l=a(5502);let d=null,c=null;const u=67108864;function p(e){return`
  • ${e}
  • `}const m=()=>{(0,s.LK)("api/logs").then((e=>{const t=e.data.files;if(d){const e=t.find((e=>e.name===d));e&&(!c||e.date>c)&&(c=e.date,e.size>u?function(){const e=document.querySelector("ul.logs"),t=(0,i.Iu)("logs.file-too-large",{size:(0,l.Z)("size",u)});e&&(e.innerHTML=p(t))}():(a=d,(0,s.iT)(`api/logs/${a}`).then((e=>{const t=document.querySelector("ul.logs");t&&(e.data?t.innerHTML=e.data.split("\n").map((e=>p(e))).join(""):t.innerHTML=p((0,i.Iu)("logs.empty-file")))}))))}var a})).catch((e=>(0,r.S)(e)))},v={load:()=>{(0,s.LK)("api/logs").then((e=>{const t=e.data.files,a=o.L.init("settings","log-list"),s=t.map((e=>e.name)),r=(0,i.Iu)("logs.select-file-placeholder");a.setOptions(s),a.select(r),a.onselect=e=>{!function(e){d=e,c=null,document.getElementById("download-log").onclick=()=>{(0,n.Z)(`api/logs/${e}`,e)},m()}(e)}})).catch((e=>(0,r.S)(e)))},update:m}},3707:(e,t,a)=>{"use strict";a.d(t,{Kp:()=>o,Vp:()=>r,vU:()=>l});const i=document.getElementById("prusa-toast"),s={info:10500,success:10500,warning:10500,error:10500};function n({title:e,message:t,type:a,onClose:n}){const o=((e,t,a)=>{const i=document.getElementById("toast"),s=document.importNode(i.content,!0),n=s.querySelector("article");return n.className=a,s.querySelector("p").innerHTML=e,s.querySelector(".toast-body").innerHTML=t,n})(e,t,a),r=()=>{i.removeChild(o),n?.()};o.querySelector("span").addEventListener("click",(e=>{e.preventDefault(),r()}));const l=s[a];l&&setTimeout(r,l),i.appendChild(o)}function o(e,t,a){n({type:"warning",title:e,message:t,onClose:a})}function r(e,t,a){n({type:"success",title:e,message:t,onClose:a})}function l(e,t,a){n({type:"error",title:e,message:t,onClose:a})}},5489:(e,t,a)=>{"use strict";a.d(t,{NA:()=>s,ZP:()=>o,zR:()=>n});var i=a(5502);const s=(e,t)=>{try{const a=e.split(".");let i=t;for(;a.length;)i=i[a.shift()];return i}catch(e){return}},n=(e,t)=>{document.querySelectorAll(`[data-type="${e}"]`).forEach((e=>{const a=e.dataset.where,n=a?s(a,t):t;e.innerHTML=(0,i.Z)(e.dataset.format,n)}))},o=n},2038:(e,t,a)=>{"use strict";a.d(t,{i:()=>o});var i=a(8236),s=a(646),n=a(4800);const o=e=>{e.addEventListener("change",(t=>{e.checked&&e.getAttribute("data-link-state")!==n.PT.READY&&(0,i.o)((t=>((e,t)=>{const a=document.getElementById("modal-confirm"),i=document.importNode(a.content,!0),n=i.getElementById("yes"),o=i.getElementById("no");return n.addEventListener("click",(a=>{a.preventDefault(),(0,s.H)(n,!0),(0,s.H)(o,!0),t.checked=!0,e()})),o.addEventListener("click",(()=>{t.checked=!1,e()})),i})(t,e)),{timeout:0,closeOutside:!1})}))}},7049:(e,t,a)=>{"use strict";a.d(t,{Z:()=>w});var i=a(6648),s=a(1351),n=a(646),o=a(3707),r=a(7780),l=a(5951),d=a(2038),c=a(5489),u=a(4800),p=a(8495);let m=!1,v=null;function g(e){const t=p.Z.getContext(),a=u.cG.includes(e),i=document.querySelector("#upld-remote-start-pt");if(i&&(i.setAttribute("data-link-state",e),a||(i.checked=!1),(0,n.H)(i,!a)),t.transfer?.id){y("uploading"),(0,c.ZP)("download",t.transfer);const e=document.querySelector("#upld-remote .progress-bar");(0,l.g)(e,t.transfer.progress||0)}else y("choose")}function h(e){const t=e.data;if(![200,201,204].includes(e.code))return(0,s.S)(e),void f();if(t){if("FROM_WEB"===t.type){y("uploading"),(0,c.ZP)("download",{...t,time_start:t.time_transferring?Math.round((new Date).getTime()/1e3)-t.time_transferring:null});const e=document.querySelector("#upld-remote .progress-bar");(0,l.g)(e,t.progress||0)}}else{if(m)return function(){const e=(0,r.Iu)("ntf.success"),t=(0,r.Iu)("ntf.upld-suc",{file_name:""});(0,o.Vp)(e,t)}(),void f();y("choose")}}const b=(e,t,a,s)=>{if("local"===t)return e=e.split("?")[0].split("&")[0].split("#")[0],(0,i.LK)(`/api/download/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e,destination:a,...s})}).then((e=>function(e){y("uploading");const t=document.querySelector("#upld-remote .progress-bar");(0,l.g)(t,0);const a=(0,r.Iu)("ntf.success"),i=(0,r.Iu)("ntf.upld-start");(0,o.Vp)(a,i)}())).catch((e=>h(e)));(0,o.vU)("Can't upload to "+t,"You can upload only to local storage via remote upload!")};function f(){y("choose"),function(e){const t=document.querySelector("#upld-remote .progress-bar");t&&(0,l.g)(t,e||0)}(0),(0,c.ZP)("download",{}),v=null}function y(e){m="uploading"==e;const t=document.getElementById("upld-remote");t&&t.setAttribute("data-state",e)}const w={init:function(e,t){const a=document.getElementById("upld-remote");if(a){const i=a.querySelector("#remote-url"),s=a.querySelector("#remote-file-name"),o=a.querySelector("#upld-file"),r=a.querySelector("#upld-remote-start-pt");r&&(0,d.i)(r),o.onclick=()=>b(i.value,e,t,{to_print:r.checked,rename:s.value});const l=()=>{(0,n.H)(o,""===i.value)};l(),i.oninput=l}g()},update:g,get isUploading(){return m}}},8463:(e,t,a)=>{"use strict";a.r(t),a.d(t,{context:()=>Ke,default:()=>Je});var i=a(7780);const s=500;let n=100,o=new Map;const r=(e,t)=>{o=e,n=t};function l(){const e=document.getElementById("graph");e&&(0==e.childElementCount&&function(){const e=document.getElementById("graph-template"),t=document.importNode(e.content,!0);document.getElementById("graph").appendChild(t),(0,i.ot)("graph")}(),o.forEach(((e,t)=>{!function(e,t){const a=(new Date).getTime();let i=[];if(e.length>1){let t=e[0],o=s-2.66*(a-t[0]-1e4)/1e3;for(let e=1;e1&&e[1][0]{var n=new XMLHttpRequest;const o=()=>{s(void 0)};!function(e,t){if(t){const a=e=>{if(!e.lengthComputable)return;let a=Math.round(e.loaded/e.total*100);t({loaded:e.loaded,total:e.total,percentage:a})};e.upload.addEventListener("progress",a,!1)}}(n,a.onProgress),n.addEventListener("load",(e=>{const t=function(e){function t(e){try{return JSON.parse(e)}catch{return}}return{status:e.status,statusText:e.statusText,ok:e.status>=200&&e.status<=299,data:t(e.response)}}(e.target);t.ok?i(t):s(t)}),!1),n.addEventListener("error",o,!1),n.addEventListener("abort",o,!1),n.open("PUT",e),a.print&&n.setRequestHeader("Print-After-Upload","?1"),n.setRequestHeader("Content-Type","text/x.gcode");for(const[e,t]of Object.entries((0,m.wU)()))n.setRequestHeader(e,t);n.send(t)}))};var g=a(2038),h=a(4800);let b=!1,f=0;function y(e,t,a,i,s){const n=document.querySelector(e);n&&(n.setAttribute("accept",i.join(", ")),n.onchange=()=>{if(n.files.length>0&&!b){let e=n.files[0];x(e,t,a,s?.checked||!1)}})}function w(e){b="uploading"===e;const t=document.getElementById("upld-direct");t&&t.setAttribute("data-state",e)}function k(e){f=e;const t=document.getElementById("upld-progress");t&&(t.innerHTML=`${e} %`)}const x=(e,t,a,s)=>{const n=["/api/v1/files",t,a,e.name].filter((e=>!!e)).join("/");e.arrayBuffer().then((t=>{w("uploading"),k(0),v(n,t,{onProgress:e=>{return t=e.percentage,w("uploading"),void k(t);var t},print:s}).then((()=>function(e){const t=(0,i.Iu)("ntf.success"),a=(0,i.Iu)("ntf.upld-suc",{file_name:e});(0,c.Vp)(t,a)}(e.display_name||e.name))).catch((t=>function(e,t){if(t)(0,u.S)(t);else{const t=(0,i.Iu)("ntf.error"),a=(0,i.Iu)("ntf.upld-unsuc",{file_name:e});(0,c.vU)(t,a)}}(e.display_name||e.name,t))).finally((()=>function(){const e=document.querySelector('#upld-direct input[type="file"]');e&&(e.value=""),k(0),w("choose")}()))}))};const z={init:function(e,t,a){(0,i.Iu)("upld.direct.choose",{query:"#upld-direct p",file:a.join(", ")}),function(e,t,a){const i=document.getElementById("upld-direct-start-pt");i&&(0,g.i)(i);const s=document.getElementById("drop-zone");s&&(document.ondragenter=e=>(0,p.yx)(s,!0),s.ondragleave=e=>(0,p.yx)(s,!1),document.ondrop=e=>(0,p.yx)(s,!1),y('#drop-zone input[type="file"]',e,t,a,i));y('#upld-direct input[type="file"]',e,t,a,i)}(e,t,a),b&&(w("uploading"),k(f))},update:function(e){const t=h.cG.includes(e),a=document.querySelector("#upld-direct-start-pt");a&&(a.setAttribute("data-link-state",e),t||(a.checked=!1),(0,p.H)(a,!t))},get isUploading(){return b},initInputByQuery:y};const S=class{get selected(){return this._selected}get isLocked(){return this._isLocked}lock(){this._isLocked=!0,this._root&&this._root.querySelectorAll("[data-tab-btn]").forEach((e=>{e.getAttribute("data-tab-btn")!==this.selected&&e.setAttribute("locked",!0)}))}unlock(){this._isLocked=!1,this._root&&this._root.querySelectorAll("[data-tab-btn]").forEach((e=>{e.hasAttribute("locked")&&e.removeAttribute("locked")}))}constructor(){this._root=null,this._selected=null,this._isLocked=!1}init(e){this._root=e,this._root&&(e.querySelectorAll("[data-tab-btn]").forEach((e=>{e.onclick=()=>{if(!this._isLocked){const t=e.getAttribute("data-tab-btn");t===this._selected||(this.closeTab(),this.openTab(t))}}})),this.openTab(this._selected,!0))}openTab(e){if(this._root&&e){const t=this._root.querySelector(`[data-tab="${e}"]`);t&&t.setAttribute("opened",!0);const a=this._root.querySelector(`[data-tab-btn="${e}"]`);a&&a.setAttribute("selected",!0),this._selected=e}}closeTab(){if(this._root&&this._selected){const e=this._root.querySelector(`[data-tab="${this._selected}"]`);e&&e.setAttribute("opened",!1);const t=this._root.querySelector(`[data-tab-btn="${this._selected}"]`);t&&t.setAttribute("selected",!1),this._selected=null}}},P=a(7049).Z,E=new S;function L(){z.isUploading?(E.openTab("direct"),E.lock()):P?.isUploading?(E.openTab("remote"),E.lock()):(E.unlock(),E.selected||E.openTab("direct"))}const N={init:function(e,t="",a){z.init(e,t,a),P?.init(e,t),E.init(document.getElementById("upld")),L()},update:function(e){z?.update(e),P?.update(e),L()},hide:function(e){(0,p.QH)(document.getElementById("upld"),e)}};var I=a(2451),T=a(5489),j=a(8236),C=a(8751);const _=e=>(0,m.LK)(e,{method:"POST",headers:{"Content-Type":"application/json"}}),A=e=>(0,m.LK)(`/api/v1/job/${e}/resume`,{method:"PUT"}).catch((e=>(0,u.S)(e))),D=(e,t)=>{(0,j.o)((a=>((e,t,a)=>{const s=document.getElementById("modal-question"),n=document.importNode(s.content,!0);n.getElementById("modal-question-label").innerText=(0,i.Iu)("msg.cancel");const o=n.getElementById("yes"),r=n.getElementById("no");return o.addEventListener("click",(i=>{i.preventDefault(),t.onConfirm(),(0,p.H)(o,!0),(0,p.H)(r,!0),(0,m.LK)(`/api/v1/job/${a}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}).catch((e=>{t.onError(),(0,u.S)(e)})),e()})),r.addEventListener("click",e),n})(a,t,e)),{timeout:0,closeOutside:!1})},B=(e,t)=>{e?(0,j.o)((e=>((e,t)=>{const a=document.getElementById("modal-confirm"),i=document.importNode(a.content,!0),s=i.getElementById("yes"),n=i.getElementById("no");return s.addEventListener("click",(a=>{a.preventDefault(),(0,p.H)(s,!0),(0,p.H)(n,!0),_(t).then((()=>(0,C.c4)("#dashboard"))).catch((e=>(0,u.S)(e))).finally((()=>e()))})),n.addEventListener("click",e),i})(e,t)),{timeout:0,closeOutside:!1}):_(t).then((()=>(0,C.c4)("#dashboard"))).catch((e=>(0,u.S)(e)))},O=()=>(0,m.LK)("/api/job",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"cancel"})}).catch((e=>(0,u.S)(e)));var q=a(1972);const M=(e,t,a)=>{(0,q.Z)(e,t),a()},R=(e,t,a,s,n=!1)=>{const o=document.getElementById("modal-question"),r=document.importNode(o.content,!0);r.getElementById("modal-question-label").innerText=n?(0,i.Iu)("msg.del-folder",{folder_name:a}):(0,i.Iu)("msg.del-proj",{file_name:a});const l=r.getElementById("yes"),d=r.getElementById("no");return d.addEventListener("click",e),l.addEventListener("click",(a=>{a.preventDefault(),(0,p.H)(l,!0),(0,p.H)(d,!0),(0,m.LK)(t,{method:"DELETE",headers:{force:"?1"}}).then((()=>s&&s())).catch((e=>(0,u.S)(e))).finally((t=>e()))})),r},H=(e,t,a)=>{(0,j.o)((i=>R(i,e,t,a)),{timeout:0,closeOutside:!1})},U=(e,t)=>{(0,j.o)((a=>((e,t,a)=>{const i=document.getElementById("modal-file-name"),s=document.importNode(i.content,!0),n=s.getElementById("modal-file-name__input"),o=s.getElementById("yes"),r=s.getElementById("no");return r.addEventListener("click",e),o.addEventListener("click",(i=>{i.preventDefault();const s=n.value;if(s){const i=t(s);(0,p.H)(o,!0),(0,p.H)(r,!0),(0,m.LK)(i,{method:"PUT",headers:{"create-folder":"?1"}}).then((()=>a&&a())).catch((e=>(0,u.S)(e))).finally((t=>e()))}})),s})(a,e,t)),{timeout:0,closeOutside:!1})};function K(e){return`inset(${100-e}% 0% 0% 0%)`}var V=a(5951);const Z={},F=()=>{Z.title=null,Z.questionChildren=null,Z.yes=null,Z.no=null,(0,C.g9)(Z.next)},$={load:()=>{Z.title||(0,C.c4)("#dashboard"),document.getElementById("title-status-label").innerHTML=Z.title;const e=document.getElementById("question"),t=Z.questionChildren;Array.isArray(t)?t.forEach((t=>e.appendChild(t))):e.innerHTML=t;for(let e of["yes","no"]){const t=document.getElementById(e),a=Z[e];t.querySelector("p").innerHTML=Z[e+"Text"],t.addEventListener("click",(e=>{e.stopPropagation(),a(F)}))}}};(0,i.Iu)("exp-times.exp-time"),(0,i.Iu)("exp-times.inc"),(0,i.Iu)("exp-times.layer-1st"),(0,i.Iu)("exp-times.profile");const G=e=>{const t=e.querySelector("img");(0,p.gL)(e,!1),t&&(t.setAttribute("data-src",t.src),t.src=document.querySelector(".loading-overlay img").src)},W=e=>{const t=e.querySelector("img");if((0,p.gL)(e,!0),t){const e=t.getAttribute("data-src");e&&(t.src=e,t.setAttribute("data-src",""))}};var Y=a(8495);let J=null,Q=null;function X(e,t=!1){const a=ee(e,t);J&&J.state!==e.state&&(J=null),a&&te(e,t)}function ee(e,t){const a=document.getElementById("job");if(!a)return!1;const i=t?!!e.files.selected:!!e.job?.id;return(0,p.yx)(a,i),i}function te(e,t){const a=t?e.files.selected:e.job,s=a?.file?.resource;e.state;var n;if(a.file?(0,p.Zk)():(0,p.QP)(),function(e,t){const a=document.querySelector(".progress-bar"),i=document.querySelector(".progress-pct"),s=document.querySelector(".preview-img-wrapper"),n=void 0!==t;(function(e,t,a){if(!e)return;const i=t?.url&&t.ready?t.url:document.querySelector(".thumbnail-fallback")?.src;if(e.getAttribute("data-src")!==i){for(;e.firstChild;)e.removeChild(e.firstChild);e.setAttribute("data-src",i);const t=document.createElement("div");t.className="progress-img";const s=document.createElement("img");s.src=i,s.className="background",t.appendChild(s);const n=document.createElement("img");n.src=i,n.className="foreground",n.style.clipPath=K(a??100),t.appendChild(n),e.appendChild(t)}else{const t=e.querySelector(".foreground");t&&(t.style.clipPath=K(a))}})(s,e,t),(0,V.g)(a,t,"top"),(0,p.yx)(a,n),(0,p.yx)(i,n)}(a.thumbnail,a.progress),n=t,(0,p.QH)(document.querySelector("#job #pnt-time"),n),(0,p.QH)(document.querySelector("#job #rem-time"),n),(0,T.ZP)("job",a),s&&a.file){const s=t?null:a.id;!function(e,t,a){const i=t.file;(function(e,t){const a=document.querySelector("#job #stop"),i=document.querySelector("#job-close"),s=h.PT.fromApi(e),n=h.cG.includes(s),o=!J&&h.Dt.includes(e),r=Y.Z.getContext();if((0,p.gL)(a,o),a&&t){const i=t||!1;(0,p.yx)(a,i),a.onclick=()=>{D(t,{onConfirm:()=>{J={code:"stop",state:e},(0,p.gL)(a,!1)},onError:()=>J=null})}}i&&((0,p.yx)(i,n||!t),i.onclick=t?O:()=>r.selectFile(null))})(e,a),function(e,t,a){const i=document.querySelector("#job #start"),s=h.cG.includes(e);i&&((0,p.yx)(i,s),(0,p.gL)(i,s),i.onclick=()=>B(e!==h.PT.READY,t.resource))}(e,i),ae(e,i,a),function(e,t,a){const i=document.querySelector("#job #download");if(i){const e=!a&&t.refs?.download&&(!Q||Q===t.refs.download),s=t.display_name||t.name;(0,p.yx)(i,e),e&&(i.onclick=()=>{Q=t.refs.download,G(i),M(t.refs.download,s,(()=>{Q=null,W(i)}))})}}(0,i,a),!a||(function(e,t,a){const i=document.querySelector(a),s=e===h.PT.PRINTING;(0,p.yx)(i,s),(0,p.gL)(i,!J&&s),i&&(i.onclick=()=>{(0,p.gL)(i,!1),J={code:"pause",state:e},(e=>(0,m.LK)(`/api/v1/job/${e}/pause`,{method:"PUT"}).catch((e=>(0,u.S)(e))))(t).catch((()=>J=null))})}(e,a,"#job #pause"),function(e,t){const a=document.querySelector("#job #resume"),i=e===h.PT.PAUSED;(0,p.yx)(a,i),(0,p.gL)(a,!J&&i),a&&(a.onclick=()=>{(0,p.gL)(a,!1),J={code:"resume",state:e},A(t).catch((()=>J=null))})}(e,a))}(e.state,a,s),(0,T.ZP)("file",a.file),function(e,t){const a=(0,i.Iu)("prop.na");document.getElementById("job").querySelectorAll(".job-details .job-prop").forEach((e=>{const t=e.querySelector(".job-prop-grid").children;let i=!0;for(const e of t){var s=e.querySelector("[data-type]")?.innerHTML.trim()===a;(0,p.QH)(e,s),s||(i=!1)}(0,p.QH)(e,i)}))}()}}function ae(e,t,a){const i=document.querySelector("#job #delete");if(i){const s=t.display_name||t.name;(0,p.gL)(i,!t.ro&&t.resource),(0,p.yx)(i,!a||e===h.cG.includes(e)),i.onclick=()=>{H(t.resource,s,(()=>{a||Ke.selectFile(null)}))}}}p.QP,p.Zk;const ie=e=>[...e].filter((e=>!!e)).map((e=>e.trim())).join(" - "),se=e=>{if(!e.printer)return;const t=e.state;X(e),N.update(t),I.Z.update(e,null)},ne={load:e=>{(0,i.Iu)("home.link",{query:"#title-status-label"}),l(),se(e),I.Z.update(e,null),I.Z.updateCurrentCamera(),(0,m.LK)("/api/v1/storage").then((t=>{const a=t.data.storage_list.find((e=>e.available&&!e.read_only));if(a){const t=a.path.replace("/","");N.init(t,"",e.fileExtensions)}}))},update:se};var oe=a(5502);const re=function(e,t="smooth"){if(!e)return;const a=e.getBoundingClientRect(),i=document.body.getBoundingClientRect(),s=a.top-(i.top+function(){const e=document.querySelector(".header");return e&&"sticky"===getComputedStyle(e).position?e.getBoundingClientRect().height:0}());(a.bottom>window.innerHeight||a.top<0)&&window.scroll({top:s,behavior:t})};var le=a(5537);const de=e=>{const t=(0,le.Z)(e).querySelector(".kebab"),a=t.querySelector(".kebab-menu"),i=t.querySelector("ul");a.addEventListener("click",(e=>{e.stopPropagation(),function(e){return e&&e.classList.contains("open")}(i)?ce(i):function(e,t){e.classList.add("open"),(0,p.Ti)((()=>ce(e)),e,t)}(i,a)})),i.querySelectorAll("li").forEach((e=>{e.addEventListener("click",(()=>ce(i)))}))};function ce(e){e.classList.remove("open")}const ue=e=>{const t=document.querySelectorAll(".storage-select-content li");t&&t.forEach((t=>t.setAttribute("selected",t.getAttribute("data-storage")===e)))},pe=e=>{const t=document.querySelector("#node-storage .storage-select-btn-inner");t&&(t.innerHTML=e)},me=(e,t)=>{e&&t&&(t.classList.toggle("open"),(0,p.Ti)((()=>{t?.classList.remove("open")}),e,t))},ve=e=>{const t=document.querySelector(".node-storage-space");if(!t)return;const a=e.available&&!!e.totalSpace;if((0,p.yx)(t,a),a){const a=e.freeSpace,s=e.totalSpace,n=s-a,o=Math.round(100*(s?n/s:0)),r=(0,i.Iu)("prop.storage-used-space",{used:(0,oe.Z)("size",n),free:(0,oe.Z)("size",a),total:(0,oe.Z)("size",s)});(0,V.g)(t,o),document.getElementById("storage-pct").innerHTML=(0,oe.Z)("percent",o),document.getElementById("storage-space").innerHTML=r}},ge=()=>{const e=document.querySelector("#node-storage .storage-select-btn");e&&(e.onclick=t=>{t.stopPropagation(),me(e,dropdownContent)})},he=(e,t,a,i=!1)=>{const s=document.querySelector(".storage-select-content");document.querySelectorAll(".storage-select-content li").forEach((i=>{const n=i.getAttribute("data-storage");let o=!1;if(n in e){const r=e[n];o=!0,i.querySelector("p").innerText=r.name,i.setAttribute("selected",n===t),i.onclick=e=>{e.stopPropagation(),pe(i.innerHTML),ue(n),s.classList.remove("open"),ve(r),a(n)}}(0,p.yx)(i,o)})),i&&ve(e[t])},be="FOLDER",fe="PRINT_FILE",ye="FIRMWARE",we=["name","date","size"];let ke=null;const xe={origin:null,current_path:[],storages:{},files:[],eTag:null,sort:{field:"date",order:"desc"}};function ze(){const e=xe.origin;return xe.storages[e]}function Se(){return xe.current_path.map((e=>e.path)).join("/")}function Pe(e){const t=ze(),a=Se();return Ee(t.path,a,e)}function Ee(e,t,a){const i=["/api/v1/files",e,t,a].filter((e=>!!e)).join("/");return a?i:`${i}/`}const Le=(e={})=>{(0,m.LK)("/api/v1/storage",{}).then((t=>{const a=t.data?.storage_list;let i=!!e.redraw,s=!!e.redraw;if(a&&a.forEach((e=>{const t=e.type,a={name:e.name||e.type,path:e.path.replaceAll("/",""),available:e.available,readOnly:e.read_only,freeSpace:e.free_space,totalSpace:e.total_space};if(t in xe.storages){const e=xe.storages[t];e.available!==a.available&&(i=!0),e.freeSpace!==a.freeSpace&&xe.origin===t&&(s=!0)}else i=!0,s=!0;xe.storages[t]=a})),!xe.origin){let e=Object.keys(xe.storages).find((e=>xe.storages[e].available));e||(e=Object.keys(xe.storages).find((()=>!0))),e&&Be(e)}i&&he(xe.storages,xe.origin,Be,s)}))},Ne=(e={})=>{if(!ze())return;const t=Pe();let a=xe.eTag;e.force&&(xe.eTag=null,a=null,function(e){const t=ze(),a=Se();N.init(t.path,a,e?.fileExtensions),N.hide(!!t?.readOnly)}(Y.Z.getContext())),(0,m.LK)(t,{headers:{"If-None-Match":a}}).then((i=>{if(t!==Pe())return;const s=i.eTag;if(!s||s!==a){xe.eTag=s;const t=i.data.children||[];if(!s&&!e.force){const e=(e,t)=>e.display_name.localeCompare(t.display_name);if(JSON.stringify([...xe.files].sort(e))===JSON.stringify(t.sort(e)))return}xe.files=t,Ie(),Te()}}))},Ie=()=>{const e=document.getElementById("files");if(e){for(;e?.firstChild;)e.removeChild(e.firstChild);e.appendChild(function(){const e=[ze().name,...xe.current_path.map((e=>e.name))],t=je("node-current",e.pop()||"Root");t.getElementById("path").innerHTML=`${e.join("/")}/`;const a=t.getElementById("create");a&&(a.onclick=e=>{e.stopPropagation(),U(Pe)});t.querySelector("#sort-by-name p").innerText=(0,i.Iu)("sort.by-name"),t.querySelector("#sort-by-date p").innerText=(0,i.Iu)("sort.by-date"),t.querySelector("#sort-by-size p").innerText=(0,i.Iu)("sort.by-size");return t.querySelector(`#sort-by-${xe.sort.field}`).classList.add(xe.sort.order),we.forEach((e=>{t.getElementById(`sort-by-${e}`).addEventListener("click",(t=>{const a=document.getElementById(`sort-by-${e}`);document.getElementById(`sort-by-${xe.sort.field}`).classList.remove(xe.sort.order);const i=xe.sort.field===e&&"asc"===xe.sort.order?"desc":"asc";a.classList.add(i),xe.sort.field=e,xe.sort.order=i,Ie(),Te()}),!1)})),t}()),xe.current_path.length&&e.appendChild(function(){const e=je("node-up","",(()=>{xe.current_path.pop(),Ie(),Ne({force:!0})}));return(0,i.ot)(e),e}())}},Te=()=>{const e=document.getElementById("files");let t;if(e)for(let a of(e=>(e.sort(((e,t)=>{if(e.type===be&&t.type!==be)return-1;if(e.type!==be&&t.type===be)return 1;const a="desc"===xe.sort.order?-1:1;switch(xe.sort.field){case"date":return a*((e.m_timestamp||0)-(t.m_timestamp||0));case"size":return a*((e.size||0)-(t.size||0));default:return a*e.display_name.localeCompare(t.display_name)}})),e))(xe.files)){switch(a.type.toUpperCase()){case be:t=Ce(a,{files:void 0,folders:void 0});break;case fe:t=Ae(a);break;case ye:t=De(a,"firmware");break;default:t=De(a,"file")}e.appendChild(t)}};function je(e,t,a){const i=document.getElementById(e).content,s=document.importNode(i,!0);return a&&s.querySelector(".node").addEventListener("click",(e=>{a(e),e.preventDefault()})),s.querySelector("#name")?.appendChild(document.createTextNode(t)),s}function Ce(e,t){const a=e.display_name||e.name,i=e.name,s=Pe(i),n=je("node-folder",a,(()=>{xe.current_path.push({path:i.replace("/",""),name:a}),Ie(),Ne({force:!0})})),o=[t?.files?`${t.files} files`:null,t?.folders?`${t.folders} folders`:null].filter((e=>null!=e)).join(" | ");n.getElementById("details").innerHTML=o;const r=n.getElementById("delete");(0,p.H)(r,e.ro),r&&(r.onclick=e=>{var t,i,n;e.stopPropagation(),t=s,i=a,n=()=>{},(0,j.o)((e=>R(e,t,i,n,!0)),{timeout:0,closeOutside:!1})});const l=n.getElementById("rename");return l&&(l.onclick=e=>{e.stopPropagation(),console.log("renameFolder")}),n}const _e=e=>{!function(e){const t=Y.Z.getContext(),a=t.files.selected,i=Se(),s=Pe(e.name);if(a===i)return;t.selectFile({...e,path:i,resource:s});const n=document.getElementById("job");n&&re(n)}(e)};function Ae(e){const t=je("node-file",e.display_name||e.name,(t=>_e(e))),a=t.querySelector(".node-details");a.querySelectorAll(".details").forEach((t=>{(0,i.ot)(t);const s=(0,T.NA)(t.dataset.where,e);if(s){const e=(0,oe.Z)(t.dataset.format,s);t.querySelector("p[data-value]").innerHTML=e}else a.removeChild(t)}));const s=e?.refs?.thumbnail;if(s){const a=t.querySelector("img.node-img");a.setAttribute("data-src",e.date?`${s}?ct=${e.date}`:s),ke.observe(a)}return de(t),function(e,t){const a=Pe(e.name),i=e.display_name||e.name,s=t.getElementById("details");s&&(s.onclick=t=>{_e(e)});const n=t.getElementById("start");n&&(n.onclick=e=>{e.stopPropagation(),console.log("startPrint")});const o=t.getElementById("rename");o&&(o.onclick=e=>{e.stopPropagation(),console.log("renameFile")});const r=t.getElementById("delete");r&&((0,p.gL)(r,!e.ro),r.onclick=e=>{H(a,i),e.stopPropagation()});const l=t.getElementById("download");l&&((0,p.gL)(l,e.refs?.download),l.onclick=t=>{G(l),M(e.refs?.download,i,(()=>W(l))),t.stopPropagation()})}(e,t),(0,i.ot)(t),t}function De(e,t){const a=je("node-file",e.display_name||e.name,(e=>{})),s=a.querySelector(".node-details");s.querySelectorAll(".details").forEach((t=>{(0,i.ot)(t);const a=(0,T.NA)(t.dataset.where,e);if(a){const e=(0,oe.Z)(t.dataset.format,a);t.querySelector("p[data-value]").innerHTML=e}else s.removeChild(t)}));const n=a.querySelector("img.node-img");if(t){const e=n.getAttribute(`data-${t}`);e&&(n.src=e),ke.observe(n)}else(0,p.yx)(n,!1);return function(e){["details","start","rename","delete","download"].forEach((t=>{const a=e.getElementById(t);a&&(0,p.yx)(a,!1)}))}(a),a}function Be(e){if(e in xe.storages){const t=xe.storages[e];xe.origin=e,xe.current_path=[],Ie(),t.available&&Ne({force:!0})}}const Oe={load:function(e){if(xe.eTag=null,(0,i.Iu)("proj.link",{query:"#title-status-label"}),!ke){ke=new IntersectionObserver(((e,t)=>{e.forEach((e=>{if(e.isIntersecting){const t=e.target.getAttribute("data-src");(0,m.gJ)(t).then((({url:t})=>{e.target.src=t})).catch((()=>{}))}}))}),{rootMargin:"0px 0px 50px 0px",threshold:0})}e||(e=Y.Z.getContext());const t=e.files.selected;if(t){(function(e,t){if(!e||!t)return null;let a=xe.files.find((t=>t.origin===e));const i=t.split("/").filter((e=>e)).slice(1);for(const e of i){if(!a)break;a=a.children.find((t=>t.name===e))}return"machinecode"===a?.type?a:null})(t.origin,t.path)||e.selectFile(null)}X(e,!0),ge(),Le({redraw:!0}),Ne({force:!0})},update:e=>{const t=e.state;Le(),Ne(),X(e,!0),N.update(t)},getApiPath:Ee};let qe=0,Me=null;const Re=()=>{const e=e=>{const t=document.getElementById("offline-screen"),a=document.importNode(t.content,!0);return["not-responsing","please-wait"].forEach((e=>{const t=a.getElementById(`offline-screen.${e}`);t&&(t.innerHTML=(e=>{switch(e){case"not-responsing":return(0,i.Iu)("msg.offline.not-responsing");case"please-wait":return(0,i.Iu)("msg.offline.please-wait");default:return""}})(e))})),Me={node:a,close:()=>{e(),Me=null}},a};(0,j.o)((t=>e(t)),{timeout:0,closeOutside:!1,className:"offline-screen"})},He=({link:e,isConnected:t})=>{const a=["connect"];for(const t in e){const{ok:s,message:n}=e[t],o=document.getElementById(`conn-status-${t}-msg`);o&&(o.innerHTML=s&&"connect"===t?"ok"===n.toLowerCase()?(0,i.Iu)("conn.connect.linked"):(0,i.Iu)("conn.connect.not-linked"):n);const r=document.getElementById(`conn-status-${t}`),l=r.querySelector(".icon-success"),d=r.querySelector(".icon-warning"),c=s&&!a.includes(t);(0,p.QH)(r,c),c||((0,p.QH)(l,!s),(0,p.QH)(d,s))}const s=e=>{qe<3?qe+=1:(e?Re():Me.close(),qe=0)};t?Me&&s(!1):!Me&&s(!0)};const Ue=e=>{return{resource:e.resource??(t=e.path,a=e.name,`${t}${t.endsWith("/")?"":"/"}${a}`),name:e.name,displayName:e.display_name??e.name,path:e.path,displayPath:e.display_path??e.path,size:e.size,refs:{download:e.refs?.download,icon:e.refs?.icon,thumbnail:e.refs?.thumbnail},lastModified:e.m_timestamp||0,meta:{filamentType:e.meta?.filament_type,layerHeight:e.meta?.layer_height,estimatedPrintTime:e.meta?.estimated_print_time}};var t,a},Ke=new class{constructor(){this.state=void 0,this.printer=void 0,this.job=void 0,this.transfer=void 0,this.version=void 0,this.storage=[],this.currentStorage=void 0,this.telemetry={temperature:{nozzle:{current:0,target:0},bed:{current:0,target:0}}},this.flow=0,this.speed=0,this.fan={hotend:0,print:0},this.link={connect:{ok:!0,message:"OK",settings:{hostname:"",tls:!0,port:0}},printer:{ok:!0,message:"OK",settings:{port:"",baudrate:115200}}},this.files={location:"/",selected:{file:void 0,thumbnail:void 0}},this.fileExtensions=[".gcode"],this.updateConnection()}updateConnection(){return(0,m.LK)("/api/connection",{method:"GET"}).then((e=>{this.link.connect.settings={hostname:e.data.connect.hostname,port:e.data.connect.port,tls:e.data.connect.tls},this.link.connect.registration=e.data.connect.registration,this.link.printer.settings={port:e.data.current.port,baudrate:e.data.current.baudrate}}))}update({status:e,printer:t}){e?.ok&&e.payload&&this.updateStatus(e.payload.data),t&&this.updatePrinter(t)}updateStatus(e){this.updateTelemetry(e.printer),this.updateJob(e.job),this.updateStorage(e.storage),this.updateTransfer(e.transfer),this.updateCamera(e.camera)}updatePrinter(e){this.printer={name:e.name,location:e.location,farmMode:e.farm_mode,nozzleDiameter:e.nozzle_diameter,minExtrusionTemp:e.min_extrusion_temp,serial:e.serial,hostname:e.hostname,port:e.port}}updateTelemetry(e){this.state=h.PT.fromApi(e.state.toUpperCase()),this.telemetry={temperature:{nozzle:{current:e.temp_nozzle,target:e.target_nozzle},bed:{current:e.temp_bed,target:e.target_bed}},axis:{x:e.axis_x,y:e.axis_y,z:e.axis_z},flow:e.flow,speed:e.speed,fan:{hotend:e.fan_hotend,print:e.fan_print}},this.link.connect.message=e.status_connect.message,this.link.connect.ok=e.status_connect.ok,this.link.printer.message=e.status_printer.message,this.link.printer.ok=e.status_printer.ok}updateJob(e){const t=this.job?.id||null,a=e?.id||null;if(t!==a){if(!a)return void(this.job=void 0);(0,m.LK)("/api/v1/job").then((e=>{const t=e.data;t.id===this.job.id&&(this.job={...this.job,file:Ue(t.file),thumbnail:{source:!t.file.refs?.thumbnail,ready:!t.file.refs?.thumbnail,url:void 0}},this.job.thumbnail.ready||(0,m.gJ)(this.job.file.refs.thumbnail).then((({url:e})=>{this.job.id===a&&(this.job.thumbnail.url=e)})).catch((e=>console.error("Failed to fetch thumbnail",e))).finally((()=>this.job.thumbnail.ready=!0)))})).catch((e=>(0,u.S)(e)))}if(a){const t=this.job?.timeRemaining,s=e.time_remaining,n=t!=s?(i=s,Math.round(Date.now()/1e3)+i):this.job?.estimatedEnd;this.job={file:void 0,...this.job,timePrinting:e.time_printing,id:a,progress:e.progress,timeRemaining:e.time_remaining,estimatedEnd:n}}var i}updateStorage(e){Object.keys(e).forEach((e=>{const t={path:e.path,name:e.name,readOnly:e.readOnly,freeSpace:e.freeSpace},a=this.storage.findIndex((e=>e.path===t.path));-1!==a?this.storage[a]=t:this.storage.push(t)}))}updateTransfer(e){const t=this.transfer?.id||null,a=e?.id||null;if(t!==a){if(!a)return void(this.transfer=void 0);(0,m.LK)("/api/v1/transfer").then((e=>{const t=e.data;this.transfer={...this.transfer,file:{displayName:t.display_name??t.name,path:t.path,size:t.size,toPrint:t.to_print}}})).catch((e=>(0,u.S)(e)))}if(a){const t=Math.round(Date.now()/1e3),i=this.transfer?.file?.size||0,s=e.time_transferring,n=void 0!==s?t-s:void 0,o=e.data_transferred,r=i-o,l=s>0&&r>=0?r/(o/s):void 0;this.transfer={...this.transfer,timeTransferring:s,timeStarted:n,timeRemaining:l,id:a,progress:e.progress,dataTransferred:o}}}updateCamera(e){this.camera={id:e?.id}}selectFile(e){if(!e)return void(this.files.selected=null);const t=e.refs?.thumbnail;if(this.files.selected={file:Ue(e),thumbnail:{source:t,ready:!t,url:void 0},timeRemaining:e.meta?.estimated_print_time},!e.meta){const e=this.files.selected.file.resource;(0,m.LK)(e).then((t=>{const a=Ue({...t.data,resource:e});this.files.selected.file.resource===e&&(this.files.selected.file.meta=a.meta,this.files.selected.timeRemaining=a.meta?.estimatedPrintTime)}))}t&&(0,m.gJ)(t).then((({url:e})=>{t===this.files.selected.thumbnail.source&&(this.files.selected.thumbnail.url=e)})).catch((()=>{})).finally((()=>{t===this.files.selected.thumbnail.source&&(this.files.selected.thumbnail.ready=!0)}))}},Ve=e=>{const t=e.load;return e.load=()=>{(()=>{const e=document.getElementById("title-printer");e&&(e.innerHTML=Ze())})(),t(Ke)},e},Ze=()=>(e=>ie([e.printer?.location,e.printer?.name]))(Ke);let Fe=ne;const $e={routes:[{path:"dashboard",html:a(2373),module:Ve(ne),getTitle:()=>(0,i.Iu)("home.link")},{path:"question",html:a(5198),module:Ve($)},{path:"files",html:a(7189),module:Ve(Oe),getTitle:()=>(0,i.Iu)("proj.storage")},{path:"settings",html:a(2936),module:Ve(a(2957).Z),getTitle:()=>(0,i.Iu)("settings.title")},{path:"control",html:a(3478),module:Ve(a(732).Z),getTitle:()=>(0,i.Iu)("control.link")},{path:"cameras",html:a(5464),module:Ve(a(2451).Z),getTitle:()=>(0,i.Iu)("cameras.link")}].filter((e=>null!=e)),init:e=>{Ke.update(e),Ge()},update:e=>{Ke.update(e);const t=(0,C.nC)(),a=(e=>{const t=e.state;let a=(0,h.ny)(t);switch(t){case"IDLE":return"";case"PRINTING":return`${a} ${Math.round(e?.job?.progress||0)}%`;default:return a}})(Ke);var i;document.title=(i=[a,$e.routes.find((e=>e.path===t)).getTitle()],ie([...i,Ze(),"PrusaLink"])),(0,T.zR)("telemetry",Ke),(e=>{const t=e,a=document.getElementById("printer-status");a&&(a.innerHTML=(0,h.ny)(t))})(Ke.state),We(Ke.telemetry),Ye()},setConnected:e=>{He({link:Ke.link,isConnected:e})},setModule:e=>{Fe=e},getContext:()=>Ke},Ge=()=>{let e=new Map([["temp-line-blue",[]],["temp-line-orange",[]]]);r(e,300),l()},We=e=>{const t=(new Date).getTime();d("temp-line-blue",[t,e.temperature.bed.current]),d("temp-line-orange",[t,e.temperature.nozzle.current]),l()},Ye=()=>{Fe&&Fe.update&&Fe.update(Ke)},Je=$e},8495:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=a(8463).default},8751:(e,t,a)=>{"use strict";a.d(t,{c4:()=>l,g9:()=>d,nC:()=>o});var i=a(7780),s=a(8495);const n=e=>{const[t,a]=e.split("#");return a||"dashboard"},o=()=>n(window.location.hash);function r(e,t){const a=n(e),o=s.Z.routes.find((e=>e.path===a));if(!o)return!1;t&&function(e){window.location.hash!=e&&history.pushState(null,"",e)}("#"+a);const r=document.getElementById("root");var l;return function(e,t){t.innerHTML="",(new DOMParser).parseFromString(e,"text/html").body.childNodes.forEach((e=>t.appendChild(e)))}(o.html,r),(0,i.ot)(r),function(e){const t=document.querySelector(`a[href="#${e}"]`);t&&(document.getElementById("navbar").childNodes.forEach((e=>{"li"===e.nodeName.toLowerCase()&&e.classList.remove(["active"])})),t.parentNode.className="active")}(a),(l=o.getTitle)&&(document.title=l()),window.scrollTo({top:0}),o.module.load(),s.Z.setModule(o.module),!0}const l=e=>r(e,!0),d=e=>r(e,!1)},4800:(e,t,a)=>{"use strict";a.d(t,{Dt:()=>o,PT:()=>s,cG:()=>n,ny:()=>r});var i=a(7780);const s={UNKNOWN:"UNKNOWN",IDLE:"IDLE",READY:"READY",BUSY:"BUSY",PRINTING:"PRINTING",PAUSED:"PAUSED",FINISHED:"FINISHED",STOPPED:"STOPPED",ERROR:"ERROR",ATTENTION:"ATTENTION",fromApi:e=>{switch(e){case"IDLE":return s.IDLE;case"READY":return s.READY;case"BUSY":return s.BUSY;case"PRINTING":return s.PRINTING;case"PAUSED":return s.PAUSED;case"FINISHED":return s.FINISHED;case"STOPPED":return s.STOPPED;case"ERROR":return s.ERROR;case"ATTENTION":return s.ATTENTION;default:return console.error(`Unsupported state: ${e}`),s.UNKNOWN}}},n=[s.IDLE,s.READY,s.FINISHED],o=[s.PRINTING,s.PAUSED],r=e=>{switch(e){case s.IDLE:return(0,i.Iu)("prop.st-idle");case s.READY:return(0,i.Iu)("prop.st-ready");case s.BUSY:return(0,i.Iu)("prop.st-busy");case s.PRINTING:return(0,i.Iu)("prop.st-printing");case s.PAUSED:return(0,i.Iu)("prop.st-paused");case s.FINISHED:return(0,i.Iu)("prop.st-finished");case s.STOPPED:return(0,i.Iu)("prop.st-stopped");case s.ERROR:return(0,i.Iu)("prop.st-error");case s.ATTENTION:return(0,i.Iu)("prop.st-attention");default:return console.error(`Unsupported state: ${e}`),(0,i.Iu)("prop.st-unknown")}}},4977:e=>{"use strict";e.exports=JSON.parse('{"langs":["cs","de","en","es","fr","it","kr","lt","nl","pl","sk"],"texts":{"home":{"link":["Přehled","Dashboard","Dashboard","Panel principal","Tableau de bord","Dashboard","대쉬보드","Darbastalis","Dashboard","Panel kontrolny","Prehľad"],"title":["Stav tiskárny","Druckerstatus","Printer Status","Estado de la impresora","État de l\'imprimante","Stato della stampante","프린터 상태","Spausdintojo būsena","Printerstatus","Stan drukarki","Stav tlačiarne"]},"proj":{"link":["Úložiště","Projekte","Storage","Proyectos","Projets","Progetti","저장장치","Saugykla","Opslag","Projekty","Úložisko"],"storage":["Úložiště","Speicher","Storage","Almacenamiento","Stockage","Archivio","저장장치","Saugykla","Opslag","Projekty","Úložisko"],"add-from":{"title":["Nahrát soubor z","Datei hinzufügen von","Add file from","Añadir archivo desde","Ajouter un fichier à partir de","Aggiungi file da","에서 파일 추가하기","Pridėti failą iš","Bestanden toevoegen van","Dodaj plik z","Nahrať súbor z"],"local":["Lokálního úložiště","Lokaler Speicher","Local storage","Almacenamiento local","Stockage local","Archivio locale","로컬 저장장치","Vietinis saugykla","Lokale opslag","Magazyn lokalny","Lokálneho úložiska"],"remote":["Vzdálené url","Remote-URL","Remote url","Eliminar url","URL distante","Url remoto","원격 URL","Nuotolinis URL","Externe URL","Zdalny URL","Vzdialenej URL"]},"details":["Detaily souboru","Datei-Details","File details","Detalles del archivo","Détails du fichier","Dettagli file","파일 상세정보","Failo informacija","Bestandseigenschappen","Szczegóły pliku","Detaily súboru"],"del":["Smazat","Datei löschen","Delete","Borrar archivo","Supprimer le Fichier","Elimina File","삭제","Ištrinti","Verwijderen","Usuń plik","Zmazať"],"download":["Stáhnout","Herunterladen","Download","Descargar","Télécharger","Download","다운로드","Atsisiųsti","Downloaden","Pobierz","Stiahnuť"],"up-folder":["nadřazená složka","übergeordneter Ordner","parent folder","carpeta contenedora","dossier parent","cartella superiore","상위폴더","tėvinis aplankas","Bovenliggende map","folder nadrzędny","nadradený priečinok"]},"control":{"link":["Ovládání","Kontrolle","Control","Control","Contrôle","Controllo","제어","Valdymas","Bediening","Sterowanie","Ovládanie"],"coordinates":["Souřadnice tiskárny","Drucker-Koordinaten","Printer Coordinates","Coordenadas de la Impresora","Coordonnées de l\'imprimante","Coordinate Stampante","프린터 좌표","Spausdintojo koordinatės","Printercoördinaten","Współrzędne drukarki","Súradnice tlačiarne"],"axis":{"x":["Osa X","X-Achse","X axis","Eje X","axe X","Asse X","X축","X ašis","X-as","Oś X","Os X"],"y":["Osa Y","Y-Achse","Y axis","Eje Y","axe Y","Asse Y","Y축","Y ašis","Y-as","Oś Y","Os Y"],"z":["Osa Z","Z-Achse","Z axis","Eje Z","axe Z","Asse Z","Z축","Z ašis","Z-as","Oś Z","Os Z"]},"stepper-motors":["Krokové motory","Schrittmotoren","Stepper Motors","Motores Paso-a-paso","moteurs","Motori Passo-Passo","스텝 모터","Sustojimo varikliai","Stappenmotors","Silniki krokowe","Krokové motory"],"heated-bed-move":["Pohyb podložky v ose X a Y","Heizbett X und Y bewegen","Heated Bed X and Y Move","Base Calefactable Mover X e Y","Mouvement en x/y","Spostamento X e Y Piano Riscaldato","히트베드 X 및 Y 이동","Šildomojo patalo X ir Y poslinkis","Beweeg verwarmd bed in X en Y","Ruch stołu grzewczego X i Y","Pohyb podložky v osi X a Y"],"move-step":["Krok pohybu [mm]","Schrittweite [mm]","Move Step [mm]","Mover Paso [mm]","déplacement [mm]","Sposta Passo [mm]","[mm]mm 스텝 이동","Poslinkis [mm]","Beweegafstand [mm]","Krok ruchu [mm]","Krok pohybu [mm]"],"nozzle-z-move":["Pohyb extrudéru v ose Z","Düse Z Bewegung","Nozzle Z Move","Boquilla Mover Z","déplacement en z","Spostamento Z Ugello","노즐 Z 이동","Antgalio Z poslinkis","Beweeg omhoog/omlaag","Ruch dyszy w osi Z","Pohyb extruderu v osi Z"],"extruder":["Extrudér","Extruder","Extruder","Extrusor","extrudeur","Estrusore","익스트루더","Ištraukiklis","Extruder","Ekstruder","Extruder"],"extrude-retract-step":["Krok vytlačení/vtažení [mm]","Extrudieren/Zurückziehen Schritt [mm]","Extrude/Retract Step [mm]","Distancia Extruir/Retraer [mm]","longueur d\'extrusion ou de rétractation [mm]","Passo Estrusione/Retrazione [mm]","[mm]mm 스텝 압출/철회","Ištrauka/atgalinimas [mm]","Extrude/retract-afstand [mm]","Krok ekstruzji/retrakcji [mm]","Krok vysunutia/zasunutia [mm]"],"nozzle-temp":["Teplota trysky","Düsentemperatur","Nozzle Temperature","Temperatura Boquilla","température de la buse","Temperatura Ugello","노즐 온도","Antgalio temperatūra","Temperatuur nozzle","Temperatura dyszy","Teplota trysky"],"speed":["Rychlost","Geschwindigkeit","Speed","Velocidad","vitesse","Velocità","속도","Greitis","Snelheid","Prędkość","Rýchlosť"],"heated-bed-temp":["Teplota vyhřívané podložky","Temperatur des Heizbettes","Heated Bed Temperature","Temperatura de la Base Calefactable","Température du lit","Temperatura piano riscaldato","히트베드 온도","Šildomojo patalo temperatūra","Temperatuur verwarmd bed","Temperatura stołu","Teplota vyhrievanej podložky"],"flow":["Průtok","Flow","Flow","Flujo","flux","Flusso","흐름","Srautas","Extrusiefactor","Przepływ","Prietok"],"title":["Ovládání tiskárny","Druckersteuerung","Printer Control","Control de la Impresora","Contrôle de l\'imprimante","Controllo Stampante","프린터 제어","Spausdintojo valdymas","Printerbediening","Sterowanie drukarką","Ovládanie tlačiarne"]},"cameras":{"link":["Kamery","Kameras","Cameras","Cámaras","Caméras","Fotocamere","카메라","Kameros","Camera\'s","Kamery",""],"trigger-scheme":{"ten-sec":["Každých 10 sekund","Alle 10 Sekunden","Every 10 seconds","Cada 10 segundos","Toutes les 10 secondes","Ogni 10 secondi","매 10초","Kas 10 sekundžių","Elke 10 seconden","Co 10 sekund",""],"thirty-sec":["Každých 30 sekund","Alle 30 Sekunden","Every 30 seconds","Cada 30 segundos","Toutes les 30 secondes","Ogni 30 secondi","매 30초","Kas 30 sekundžių","Elke 30 seconden","Co 30 sekund",""],"sixty-sec":["Každých 60 sekund","Alle 60 Sekunden","Every 60 seconds","Cada 60 segundos","Toutes les 60 secondes","Ogni 60 secondi","매 60초","Kas 60 sekundžių","Elke minuut","Co 60 sekund",""],"each-layer":["Při změně vrstvy","Beim Schichtwechsel","On layer change","Al cambiar de capa","Au changement de couche","Al cambio layer","매 레이어","Pakeitus sluoksnį","Bij laagwissel","Przy zmianie warstwy",""],"fifth-layer":["Každou pátou vrstvu","Alle 5 Schichten","Every fifth layer","Cada cinco capas","Toutes les cinq couches","Ogni cinque layer","매 5레이어","Kas penktas sluoksnis","Elke 5 lagen","Co piąta warstwa",""],"manual":["Ručně","Manuell","Manual","Manual","Manuel","Manuale","수동","Rankinis","Handmatig","Ręcznie",""]}},"settings":{"title":["Nastavení","Einstellungen","Settings","Ajustes","Réglages","Impostazioni","세팅","Nustatymai","Instellingen","Ustawienia","Nastavenie"]},"conn":{"prusa-connect-status":["Stav připojení PrusaConnect","PrusaConnect Status","PrusaConnect Status","Estado de PrusaConnect","Informations de connexion à PrusaConnect","Stato PrusaConnect","프루사커넥트 상태","PrusaConnect būsena","Status van PrusaConnect","Stan PrusaConnect","Stav pripojenia PrusaConnect"],"printer-status":["Stav připojení 3D tiskárny","3D-Drucker Verbindungsstatus","3D Printer Connection Status","Estado Conexión Impresora 3D","Informations de connexion à l\'imprimante 3D","Stato Connessione Stampante 3D","3D 프린터 연결 상태","3D spausdintojo prisijungimo būsena","Verbindingsstatus van 3D-printer","Status połączenia z drukarką 3D","Stav pripojenia 3D tlačiarne"],"title":["připojení","Verbindung","Connection",null,"connexion",null,"연결","Prisijungimas","Verbinding",null,"pripojenie"],"prusa-connect-url":["Adresa PRUSA CONNECT","PRUSA CONNECT Adresse","PRUSA CONNECT Address",null,null,null,"프루사커넥트 주소","PRUSA CONNECT adresas","Adres van PRUSA CONNECT",null,"Adresa PrusaConnect"],"suc":["Úspěšně připojeno","Erfolgreich verbunden","Successfully connected","Correctamente conectado","Connecté avec succès","Connessione riuscita","연결 성공","Prisijungta sėkmingai","Succesvol verbonden","Połączono pomyślnie","Úspešne pripojené"],"connect":{"linked":["","Verbunden","Linked","Enlazado","Associée","Collegato","연결됨","Susieta","Verbonden","Połączono",""],"not-linked":[null,"Nicht verbunden","Not Linked","No enlazado","Non Associée","Non collegato","연결안됨","Nesusieta","Niet verbonden","Nie połączono",""]}},"prop":{"temp-nozzle":["Teplota trysky","Düsentemperatur","Nozzle Temperature","Temperatura del nozzle","Température de la buse","Temperatura ugello","노즐 온도","Nozzle Temperature","Nozzletemperatuur","Temperatura dyszy","Teplota trysky"],"temp-bed":["Vyhřívaná podložka","Heizbett","Heatbed","Base calefactable","Plateau chauffant","Piano riscaldato","히트베드","Dėklo temperatūra","Verwarmd bed","Stół","Vyhrievaná podložka"],"speed":["Rychlost tisku","Druckgeschwindigkeit","Printing Speed","Velocidad de impresión","Vitesse d\'impression","Velocità di stampa","출력속도","Spausdinimo greitis","Printsnelheid","Prędkość drukowania","Rýchlosť tlače"],"z-height":["Výška Z","Z-Höhe","Z-Height","Altura-Z","Hauteur en z","Altezza-Z","Z높이","Z-Height","Z-Hoogte","Wysokość Z","Výška Z"],"nozzle-diameter":["Velikost trysky","Düsendurchmesser","Nozzle Diameter","Diámetro de Boquilla","Diamètre de la Buse","Diametro ugello","노즐지름","Galvutės skersmuo","Nozzlediameter","Średnica dyszy","Veľkosť trysky"],"rem-time":["Zbývající čas","Restzeit","Remaining time","Tiempo restante","Temps restant","Tempo residuo","남은시간","Likęs laikas","Resterende tijd","Pozostały czas","Zostávajúci čas"],"time-est":["Odhad doby tisku","Druckzeit Schätzen","Print Time Estimate","Tiempo Estimado de Impresión","Estimation du temps d\'impression","Stima del Tempo di Stampa","예상 출력 시간","Print Time Estimate","Geschatte printtijd","Szacowany Czas Druku","Odhad času tlače"],"est-end":["Odhadovaný konec","Erwartetes Ende","Estimated end","Fin estimado","Fin d\'impression estimée","Fine prevista","예상완료","Numatomas pabaiga","geschatte eindtijd","Szacowane zakończenie","Odhadovaný koniec"],"pnt-time":["Doba tisku","Druckzeit","Printing time","Tiempo de impresión","Temps d\'impression","Tempo di stampa","출력시간","Spausdinimo laikas","Printtijd","Czas druku","Čas tlače"],"last-mod":["Naposledy upraveno","Zuletzt Geändert","Last Modified","Ultima Modificación","Dernière Modification","Ultima Modifica","최종 수정됨","Paskutinis modifikavimas","Laatst gewijzigd","Ostatnio Zmodyfikowany","Posledná úprava"],"material":["Materiál","Material","Material","Material","Matériau","Materiale","재료","Medžiaga","Materiaal","Materiał","Materiál"],"layer-ht":["Výška vrstvy","Schichthöhe","Layer Height","Altura de Capa","Hauteur de Couche","Altezza Layer","레이어 높이","Sluoksnio storis","Laagdikte","Wysokość Warstwy","Výška vrstvy"],"size":["Velikost souboru","Größe der Datei","File size","Tamaño de archivo","Taille du fichier","Dimensione file","파일크기","Failo dydis","Bestandsgrootte","Rozmiar pliku","Veľkosť súboru"],"progress":["Postup","Fortschritt","Progress","Progreso","Progression","Progresso","진행","Eiga","Voortgang","Postęp","Progres"],"st-idle":["Nečinná","Leerlauf","Idle","En espera","Repos","Inattivo","대기","Pramoginė veikla","Inactief","Oczekuje","Nečinná"],"st-ready":["Připravena","Bereit","Ready","Lista","Prête","Pronto","준비","Pasirengęs","Gereed voor gebruik","Gotowe","Pripravené"],"st-busy":["Zaneprázdeněná","Beschäftigt","Busy","Ocupada","Occupée","Occupato","작업중","Užsiėmęs","Bezig","Zajęty","Zaneprázdnená"],"st-printing":["Probíhá tisk","Druckt","Printing","Imprimiendo","Impression","Stampa","출력중","Spausdinama","Printen","Drukowanie","Prebieha tlač"],"st-paused":["Pozastavena","Pausiert","Paused","Pausado","En pause","In pausa","일시정지","Pristabdyta","Gepauzeeerd","Pauza","Pozastavená"],"st-finished":["Dokončeno","Beendet","Finished","Terminado","Terminé","Completato","완료됨","Užbaigta","Klaar","Zakonczono","Dokončené"],"st-stopped":["Zastaveno","Gestoppt","Stopped","Parada","Arrêtée","Arrestato","정지됨","Sustabdytas","Gestopt","Zatrzymano","Zastavené"],"st-error":["Chyba","Fehler","Error","Error","Erreur","Errore","에러","Klaida","Fout","Błąd","Chyba"],"st-attention":["Vyžaduje pozornost","Achtung","Attention","Atención","Attention","Attenzione","주의","Dėmesio","Attentie","Uwaga","Pozor"],"st-unknown":["Neznámý","Unbekannt","Unknown","Desconocido","Inconnu","Sconosciuto","알수없음","Nežinoma","Onbekend","Nieznane","Neznáme"],"at":["v","um","at","a las","à","alle","에서","iš","op","o","v"],"less-than":["Méně než minuta","Weniger als eine Minute","Less than a minute","Menos de un minuto","Moins d\'une minute","Meno di un minuto","1분 미만","Mažiau nei minutė","Minder dan een minuut","Mniej niż minuta","Menej ako minúta"],"today-at":["Dnes v","Heute um","Today at","Hoy a las","Aujourd\'hui à","Oggi alle","오늘","Šiandien","Vandaag om","Dzisiaj o","Dnes o"],"tmw-at":["Zítra v","Morgen um","Tomorrow at","Mañana a las","Demain à","Domani alle","내일","Rytoj","Morgen om","Jutro o","Zajtra o"],"true":["Ano","Ja","Yes","Si","Oui","Si","예","Taip","Ja","Tak","Áno"],"false":["Ne","Nein","No","No","Non","No","아니오","Ne","Nee","Nie","Nie"],"na":["N/A","NV","NA","NA","NA","ND","없음","NA","N.v.t.","N/D","N/A"],"cover-closed":["Uzavřené","Geschlossen","Closed","Cerrada","Fermé","Chiuso","닫힘","Uždarytas","Gesloten","Zamknięta","Zavreté"],"cover-opened":["Otevřené","Geöffnet","Opened","Abierta","Ouvert","Aperto","열림","Atidarytas","Open","Otwarta","Otvorené"],"storage-used-space":["Použito {{used}} z {{total}} ({{free}} volných)","{{used}} benutzt von {{total}} ({{free}} frei)","Used {{used}} of {{total}} ({{free}} free)","Usados {{used}} de {{total}} ({{free}} libres)","{{used}} utilisés sur {{total}} ({{free}} libre)","Usato {{used}} di {{total}} ({{free}} liberi)","{{total}} 중 {{used}} 사용중({{free}} 남음)","","","Zajęte {{used}} z {{total}} ({{free}} wolne)",""]},"msg":{"modal-p1":["Vítejte na webovém rozhraní vaší","Willkommen zur Weboberfläche Ihres","Welcome to the web interface of your","Bienvenido a la interfaz web de tu","Bienvenue dans l\'interface web de votre","Benvenuto nell\'interfaccia web del tuo","당신의 웹 인터페이스에 오신 것을 환영합니다.","Sveiki atvykę į savo","Welkom bij de webinterface van uw","Witaj w interfejsie Twojej","Vitajte vo webovom rozhraní vašej"],"modal-p2":["Upozornění: některé hodnoty jsou zobrazeny pouze v průběhu tisku.","Bitte beachten Sie, dass die Werte nur angezeigt werden, wenn der Drucker gerade druckt.","Please note that values are shown only when the printer is printing.","Tenga en cuenta que los valores se muestran solo cuando la impresora está imprimiendo.","Veuillez noter que les valeurs sont affichées uniquement lorsque l\'imprimante imprime.","Si noti che i valori vengono visualizzati solo durante la stampa.","프린터가 출력중일 경우에만 값이 표시됩니다.","Prašome atkreipti dėmesį, kad reikšmės rodomos tik tada, kai spausdintuvas spausdina.","De waarden worden alleen getoond tijdens het printen.","Wartości będą wyświetlane tylko podczas drukowania.","Upozornenie: niektoré hodnoty sú zobrazené len počas tlače."],"api-key-1":["Vítejte ve webovém rozhraní PrusaLink Web!","Willkommen auf der Web-Oberfläche von PrusaLink Web.","Welcome to the PrusaLink Web web interface.","Bienvenido a la interfaz web de PrusaLink Web.","Bienvenue sur l\'interface web locale de PrusaLink Web.","Benvenuti nell\'interfaccia web di PrusaLink Web.","프루사 커넥트 웹 웹인터페이스에 오신 것을 환영합니다.","Sveiki atvykę į PrusaLink Web interneto sąsają.","Welkom bij de PrusaLink Web webinterface.","Witaj w interfejsie sieciowym PrusaLink Web.","Vitajte vo webovom rozhraní PrusaLink Web!"],"api-key-2":["Vložte API klíč.","Bitte geben Sie den API-Schlüssel ein.","Please insert the API key.","Por favor introduce la clave API.","Veuillez insérer la clé API.","Si prega di inserire la chiave API.","API키를 입력하십시오.","Prašome įvesti API raktą.","Voer de API-sleutel in","Wpisz klucz API.","Vložte API kľúč."],"api-key-3":["Otevřete menu Nastavení -> Síť -> PrusaLink.","Sie finden ihn in Einstellungen -> Netzwerk -> PrusaLink.","You can find it in Settings -> Network -> PrusaLink.","Puedes encontrarla en Ajustes -> Red -> PrusaLink.","Vous pouvez la trouver dans Réglages -> Réseau -> Informations de connexion.","È possibile trovarla in Impostazioni -> Rete -> PrusaLink","설정 -> 네트워크 -> 프루사링크에서 찾을 수 있습니다.","Jį galite rasti Nustatymai -> Tinklas -> PrusaLink.","Deze kan gevonden worden bij Settings -> -> Network -> PrusaLink.","Możesz znaleźć go w sekcji Ustawienia -> Sieć -> PrusaLink.","Nájdete ho v Nastavenia -> Sieť -> PrusaLink."],"offline":{"not-responsing":["Tiskárna nereaguje.","Der Drucker antwortet nicht.","Printer is not responding.","La impresora no responde.","L\'imprimante ne répond pas.","La stampante non risponde.","프린터가 응답하지 않습니다.","Spausdintuvas neatsako.","Printer reageert niet.","Drukarka nie odpowiada.","Tlačiareň nereaguje."],"please-wait":["Prosím, čekejte...","Bitte warten...","Please wait...","Espera, por favor...","Veuillez patienter...","Attendere...","기다려주십시오...","Prašome palaukti...","Even geduld...","Proszę czekać...","Prosím, čakajte..."]},"drop-zone":{"label":["Přetažením souboru zahájíte nahrávání","Datei hier ablegen, um den Upload zu starten","Drop file here to start the uploading","Arrastra archivo aquí para subirlo","Déposez le fichier ici pour commencer le téléchargement","Trascina il file qui per iniziare il caricamento","파일을 여기로 끌어놓으면 업로드가 시작됩니다.","Tempti failą čia, kad predėti įkrovimą","Sleep het bestand hierheen om het te uploaden","Upuść plik tutaj, aby rozpocząć przesyłanie.",""]},"create-folder":["Nová složka","Neuer Ordner","New Folder","Nueva Carpeta","","Nuova Cartella","","","","Nowy folder",""],"create-folder-name":["Název složky","Ordnername","Folder Name","Nombre de la Carpeta","","Nome cartella","","","","Nazwa folderu",""],"del-folder":["Opravdu chcete smazat {{folder_name}} a ho obsah?","Möchten Sie wirklich {{folder_name}} und seinen Inhalt löschen?","Do you really want to delete {{folder_name}} and its contents?","¿Realmente deseas borrar {{folder_name}} y su contenido?","Voulez-vous vraiment supprimer {{folder_name}} et son contenu ?","Vuoi davvero cancellare la cartella {{folder_name}} e il suo contenuto?","","","","Czy naprawdę chcesz usunąć {{folder_name}} i jego zawartość?",""],"del-proj":["Opravdu chcete smazat {{file_name}}?","Wollen Sie wirklich {{file_name}} löschen?","Do you really want to delete {{file_name}}?","¿Realmente deseas borrar {{file_name}}?","Voulez-vous vraiment supprimer le fichier {{file_name}} ?","Vuoi davvero eliminare il file {{file_name}}?","{{file_name}}을 정말로 삭제하겠습니까?","Ar tikrai norite ištrinti {{file_name}}?","Weet u zeker dat u {{file_name}} wilt verwijderen?","Czy na pewno chcesz usunąć plik {{file_name}}?","Naozaj chcete zmazať {{file_name}}?"],"sla-pour-resin":["Nalijte do vaničky dostatečné množství resinu pro vybraný soubor a zavřete víko. Minimální objem resinu je zobrazen na dotykovém displeji tiskárny.","Füllen Sie genügend Harz für die ausgewählte Datei in den Tank und schließen Sie den Deckel. Die minimale Menge des Harzes wird auf dem Touchscreen angezeigt.","Pour enough resin for selected file into the tank and close the lid. Minimal amount of the resin is displayed on the touchscreen.","Vierte suficiente resina para el archivo seleccionado y cierra la tapa.\\nLa mínima cantidad necesaria se muestra en la pantalla táctil.","Versez suffisamment de résine dans le réservoir pour le projet sélectionné et fermez le capot.","Versare nel serbatoio la quantità di resina sufficiente per il file selezionato e chiudere il coperchio. La quantità minima di resina viene visualizzata sul touchscreen.","선택한 파일을 위한 레진을 탱크에 붓고 뚜껑을 닫습니다. 터치스크린에 최소량의 레진이 표시됩니다.","Įpilkite pakankamai dervos pasirinktam failui ir uždarykite dangtį. Mažiausias dervos kiekis yra rodomas ant ekrano.","Doe genoeg resin voor het geselcteerde bestand in het vat en sluit de kap. De minimale hoeveelheid resin wordt aangegeven op het touchscreen.","Wlej do zbiornika wystarczającą ilość żywicy dla wybranego pliku i zamknij pokrywę. Minimalna ilość żywicy jest wyświetlana na ekranie dotykowym.","Do nádržky nalejte dostatočné množstvo resinu pre vybraný súbor a zatvorte veko. Minimálne množstvo resinu sa zobrazí na dotykovom displeji."],"cancel":["Chcete opravdu zrušit tisk?","Wollen Sie den Druck wirklich abbrechen?","Do you really want to cancel print?","¿Realmente quieres cancelar la impresión?","Voulez-vous vraiment annuler l\'impression ?","Vuoi davvero annullare la stampa?","출력을 취소하겠습니까?","Ar tikrai norite atšaukti spausdinimą?","Weet u zeker dat u de print wilt stoppen?","Czy na pewno chcesz anulować wydruk?","Chcete naozaj zrušiť tlač?"]},"btn":{"login":["Přihlášení","Login","Login","Iniciar sesión","Connexion","Accedi","로그인","Prisijungti","Login","Zaloguj","Prihlásenie"],"confirm":["Potvrdit","Bestätigen","Confirm","Confirmar","Confirmer","Conferma","결정","Patvirtinti","Bevestigen","Potwierdzam","Potvrdiť"],"cancel":["Zrušit","Abbrechen","Cancel","Cancelar","Annuler","Annulla","취소","Atšaukti","Annuleren","Anuluj","Zrušiť"],"del":["Smazat","löschen","Delete","borrar","supprimer","elimina","삭제","Ištrinti","Verwijderen","usuń","Zmazať"],"download":["Stáhnout","Herunterladen","Download","Descargar","télécharger","Download","다운로드","Atsisiųsti","Download","Pobierz","Stiahnuť"],"pause-pt":["Pozastavit tisk","Druck pausieren","Pause Print","Pausar Impresión","Mettre l\'impression en pause","Pausa Stampa","출력 일시 정지","Pristabdyti spausdinimą","Pauzeer print","Wstrzymaj drukowanie","Pozastaviť tlač"],"resume-pt":["Pokračovat v tisku","Druck fortsetzen","Resume Print","Continuar Impresión","Redémarrer l\'impression","Riprendi stampa","출력 복귀","Tęsti spausdinimą","Hervat print","Wznów drukowanie","Pokračovať v tlači"],"start-pt":["Start tisku","Druck starten","Start Print","Empezar impresión","Lancer l\'impression","Inizia stampa","출력 시작","Pradėti spausdinimą","Start print","Start druku","Štart tlače"],"stop-print":["Zrušit tisk","Druck abbrechen","Stop Print","Cancelar impresión","Annuler l\'impression","Annulla stampa","출력 정지","Sustabdyti spausdinimą","Stop print","Anuluj wydruk","Zrušiť tlač"],"upld-file":["Nahrát soubor","Datei hochladen","Upload File","Cargar Archivo","Télécharger un Fichier","Carica file","파일 업로드","Įkelti failą","Upload bestand","Prześlij plik","Nahrať súbor"],"check-updates":["Kontrola aktualizací","Updates suchen","Check Updates","Comprobar actualizaciones","Vérifier les Mises à Jour","Controlla aggiornamenti","업데이트 체크","Tikrinti atnaujinimus","","Sprawdź aktualizacje",""],"connect":{"link":[null,"Verbinden","Link","Enlace","Associer","Collegamento","연결","Susieti","Verbinden","Link",""],"unlink":["Odpojit","Trennen","Unlink","Desenlazar","Dissocier","Scollegato","연결끊기","Atsieti","Verbinding verbreken","Odłącz",""]},"chg":["Změnit","Ändern","Change","Cambia","Mettre à jour","Cambia","변경","Pakeisti","Wijzig","Zmień","Zmeniť"],"reset":["","Reset","Reset","Reset","Réinitialiser","Reset","리셋","Perkrauti","Reset","Reset",""],"disable-steppers":["Vypnout motory","Schrittmotoren deaktivieren","Disable Steppers","Desactivar motores","Desactiver les moteurs","Disabilita motori","모터 정지","Išjungti stoperius","Stappenmotors uitschakelen","Wyłącz silniki krokowe","Vypnúť motory"],"extrude":["Vytlačit","Extrudieren","Extrude","Extruye","extruder","Estrudi","압출","Ištraukti","Extrudeer","Ekstruzja","Vysunúť"],"retract":["Vtáhnout","Zurückziehen","Retract","Retraer","Retracter","Retrai","리트렉트","Atitraukti","Retract","Retrakcja","Zasunúť"],"set":["Nastavit","Setzen","Set","Ajuste","Régler","Imposta","설정","Nustatyti","Instellen","Ustaw","Nastaviť"],"upgrade":["Aktualizovat","Aktualisieren","Upgrade","Actualización","Mise à niveau","Aggiorna","업그레이드","Atnaujinti","","",""],"yes":["Ano","Ja","Yes","Sí","Oui","Sì","예","Taip","Ja","Tak","Áno"],"no":["Ne","Nein","No","No","Non","No","아니오","Ne","Nee","Nie","Nie"],"chg-print-set":["Tisková nastavení","Druckeinstellungen","Print Settings","Ajustes de la Impresora","Réglages d\'Impression","Impostazioni di stampa","프린트 설정","Spausdinimo nustatymai","Printinstellingen","Ustawienia druku",""],"save-chgs":["Uložit změny","Änderungen speichern","Save changes","Guardar cambios","Enregistrer les modifications","Salva le modifiche","변경내용 저장","Išsaugoti pakeitimus","Wijzigingen opslaan","Zapisz zmiany","Uložiť zmeny"]},"camera":{"settings":["Nastavení kamery","Kamera-Einstellungen","Camera Settings","Ajustes de la Cámara","Paramètres de la Caméra","Impostazioni Fotocamera","카메라 세팅","Kameros nustatymai","Camera-instellingen","Ustawienia kamery",""],"name":["Název kamery","Kameraname","Camera Name","Nombre de la Cámara","Nom de la Caméra","Nome Fotocamera","카메라 명칭","Kameros pavadinimas","Cameranaam","Nazwa kamery",""],"resolution":["Rozlišení","Auflösung","Resolution","Resolución","Résolution","Risoluzione","해상도","Raiška","Resolutie","Rozdzielczość",""],"trigger-scheme":["","Auslöse-Schema","Trigger Scheme","Modo de Disparo","Mode de Déclenchement","Schema di attivazione","트리거 계획","Paleisti schemą","Triggerschema","Schemat wyzwalania",""],"title":["Kamery","Kameras","Cameras","Cámaras","Caméras","Fotocamere","카메라","Kameros","Camera\'s","Kamery",""],"time":["Čas snímku","Zeit der Momentaufnahme","Snapshot Time","Hora de la Foto","Heure de la Capture","Tempo Istantanea","스냅샷 시간","Momentinis vaizdas","Snapshot-tijd","Czas migawki",""],"cloud":{"linked":["Připojeno","Verbunden","Linked","Enlazado","Associée","Collegato","연결됨","Susieta","Verbonden","Połączono",""],"not-linked":["Nepřipojeno","Unverbunden","Not Linked","No Enlazado","Non Associée","Non collegato","연결되지 않음","Nesusieta","Niet verbonden","Nie połączono",""],"label":["","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT",""]},"btn":{"connect":["Zkusit povolit kameru","Versuche Kamera zu aktivieren","Try to enable camera","Intenta habilitar la cámara","Essayer d\'activer la caméra","Prova ad abilitare la fotocamera","카메라 활성화 시도중","Pabandykite įjungti kamerą","Probeer de camera in te schakelen","Spróbuj aktywować kamerę",""],"settings":["Otevřít nastavení kamery","Öffne Kamera-Einstellungen","Open camera settings","Abrir los ajustes de la cámara","Ouvrir les paramètres de la caméra","Apri impostazioni fotocamera","카메라 설정 열기","Atidaryti kameros nustatymus","Open camera-instellingen","Otwórz ustawienia kamery",""],"link":["Připojit kameru do Connectu","Kamera mit CONNECT verbinden","Link camera to CONNECT","Asocia cámara a CONNECT","Associer la caméra à CONNECT","Collega fotocamera a CONNECT","카메라를 CONNECT에 연결하기","Susieti kamerą su CONNECT","Verbind camera met CONNECT","Połącz kamerę z CONNECT",""],"unlink":["Odpojit kameru z Connectu","Kamera von CONNECT trennen","Unlink camera from CONNECT","Desvincular la cámara de CONNECT","Dissocier la caméra de CONNECT","Scollega fotocamera da CONNECT","카메라를 CONNECT에서 연결 해제하기","Atsieti kamerą nuo CONNECT","Verbreek verbinding van camera met CONNECT","Odłącz kamerę od CONNECT",""]},"path":["Cesta","Pfad","Path","Ruta","Chemin","Percorso","경로","Kelias","Pad","Ścieżka",""],"driver":["Ovladač","Treiber","Driver","Controlador","Driver","Driver","드라이버","Draiveris","Driver","Sterownik",""]},"printer":{"title":["Tiskárna","Drucker","Printer","Impresora","imprimante","Stampante","프린터","Spausdintuvas","Printer","Drukarka","Tlačiareň"],"name":["Název tiskárny","Name des Druckers","Printer name","Nombre de la impresora","nom de l\'imprimante","Nome stampante","프린터 이름","Spausdintuvo pavadinimas","Naam van de printer","Nazwa drukarki","Názov tlačiarne"],"location":["Umístění tiskárny","Standort des Druckers","Printer location","Ubicación de la impresora","localisation de l\'imprimante","Posizione stampante","프린터 위치","Spausdintuvo vieta","Locatie van de printer","Lokalizacja drukarki","Umiestnenie tlačiarne"]},"print":{"fdm":{"1":["Je tiskárna připravena?","Ist der Drucker bereit?","Is the printer ready?","¿Está lista la impresora?","L\'imprimante est-elle prête ?","La stampante è pronta?","프린터가 준비되었습니까?","Ar spausdintuvas pasirengęs?","Is de printer klaar voor gebruik?","Czy drukarka jest gotowa?","Je tlačiareň pripravená?"],"2":["Je tisková podložka prázdná a čistá?","Ist der Druckbogen leer und sauber?","Is printing sheet empty and clean?","¿Está vacía y limpia la lámina de impresión?","Le surface d\'impression est-elle vide et propre ?","La piastra di stampa è vuota e pulita?","프린트 시트가 비어있고 깨끗합니까?","Ar spausdinimo lapas tuščias ir švarus?","Is het printplatform leeg en schoon?","Czy arkusz druku jest pusty i czysty?","Je tlačová podložka prázdna a čistá?"]}},"upld":{"title":["Nahrát soubor","Projekt hochladen","Upload file","envía proyecto","Téléversement de projet","Carica file","파일업로드","Įkelti failą","Bestand uploaden","prześlij projekt","Nahrať súbor"],"start-pt":["po přenosu zahájit tisk","Druck nach der Übertragung starten","Start print after transfer","Iniciar la impresión tras la transferencia","Démarrer l\'impression après le transfert","Avvia stampa dopo il trasferimento","전송 후 출력 시작","Pradėti spausdinimą po perdavimo","Start print na het omzetten","Rozpocznij drukowanie po przesłaniu","po prenose spustiť tlač"],"remote":{"source":["URL zdroje","Quell-URL","Source URL","URL Fuente","URL de la source","URL fonte","원본 URL","Šaltinio URL","Bron van URL","Źródłowy URL","URL zdroja"],"hint-fdm":["Zadejte URL souboru G-CODE","URL der G-CODE-Datei eingeben","Type URL of G-CODE file","Escribe URL de archivo G-CODE","Entrez l\'URL du fichier G-CODE du projet","Digitare URL del file G-CODE","G코드 파일의 주소를 입력하십시오","Įveskite G-CODE failo URL","Type de URL van het gcode-bestand","Wpisz adres URL pliku G-Code","Zadajte URL súboru G-code"],"file":["Název souboru","Dateiname","File name","Nombre del archivo","Nom de fichier","Nome file","파일명","Failo pavadinimas","Bestandsnaam","Nazwa pliku","Názov súboru"],"file-hint":["Zadejte název souboru","Dateiname eingeben","Type file name","Escribe nombre de archivo","Tapez le nom du fichier","Digitare nome file","파일명을 입력하십시오","Įveskite failo pavadinimą","Type de bestandsnaam","Wpisz nazwę pliku","Zadajte názov súboru"]},"direct":{"choose":["Vyberte {{file}} nebo jej přetáhněte sem.","Klicke um eine {{file}} Datei auszuwählen oder ziehe sie hier hin","Click to choose a {{file}} file or drag it here","Haz clic para elegir un archivo {{file}} o arrástralo hasta aquí","Cliquer pour choisir un fichier {{file}} ou déposez le ici","Fare clic per scegliere un file {{file}} o trascinarlo qui","선택한 {{file}} 파일을 클릭하거나 여기로 드래그하십시오","Pasirinkite {{file}} failą arba vilkite jį čia","Klik om een {{file}}-bestand te kiezen of sleep het hierheen","Kliknij, aby wybrać plik {{file}} lub przeciągnij go tutaj","Kliknutím vyberte súbor {{file}} alebo ho sem potiahnite."]}},"download":{"dl-started":["Začátek stahování","Herunterladen Gestartet","Download Started","Se inició la descarga","téléchargement démarré","Scaricamento Avviato","다운로드가 시작됨","Atsisiuntimas pradėtas","Downloaden gestart","Pobieranie rozpoczęte","Sťahovanie začalo"],"start-pt":["Spustit tisk","Autostart","Autostart","Inicio automático","Démarrage automatique","Avvio automatico","자동시작","Automatinis paleidimas","Autostart","Autostart","Spustiť tlač"]},"temps":{"title":["Teploty","Temperaturen","Temperatures","Temperaturas","Températures","Temperature","온도","Temperatūros","Temperatuur","Temperatury","Teploty"]},"version":{"title":["Verze","Version","Version",null,"version",null,"버전","Versija","Versie",null,"Verzia"],"api":["API","API","API",null,"api",null,"API","API","API",null,"API"],"hostname":["Hostname","Hostname","Hostname",null,"nom d\'hôte",null,"호스트명","Hostname","Hostnaam",null,"Hostname"],"firmware":["Firmware","Firmware","Firmware",null,"micrologiciel",null,"펌웨어","Firmware","Firmware",null,"Firmware"],"server":["Server","Server","Server",null,"serveur",null,"서버","Serveris","Server",null,"Server"],"text":["Text","Text","Text",null,"texte",null,"텍스트","Tekstas","Tekst",null,"Text"],"sdk":["SDK","SDK","SDK",null,"sdk",null,"SDK","SDK","SDK",null,"SDK"],"fe":["Frontend","Frontend","Frontend",null,"frontend",null,"프론트엔드","Frontendas","Frontend",null,"Frontend"]},"sys-version":{"title":["Verze systému","Systemversion","System Version",null,"version du système",null,"시스템버전","Sistemos versija","Systeenversie",null,"Verzia systému"],"python":["Python","Python","Python","Python","python","Python","파이썬","Python","Python","Python","Python"],"description":["Popis","Beschreibung","Description","Descripción","description","Descrizione","설명","Aprašymas","Beschrijving","Opis","Popis"],"id":["ID","ID","ID","ID","ID","ID","ID","ID","ID","ID","ID"],"os":["OS","OS","OS","OS","Système d\'exploitation","S.O.","OS","OS","OS","OS","OS"]},"updates":{"title":[null,null,"System Updates",null,null,null,null,"Sistemos atnaujinimai",null,null,null]},"user":{"title":["Uživatel","Benutzer","User",null,"utilisateur",null,"유저","Vartotojas","Gebruiker",null,"Používateľ"],"username":["Uživatelské jméno","Benutzername","User Name","Nombre de usuario","nom d\'utilisateur","Nome Utente","유저명","Vartotojo vardas","Gebruikersnaam","Nazwa użytkownika","Používateľské meno"],"format":{"name":["Uživatelské jméno musí obsahovat alespoň 3 znaky.","Der Benutzername muss mindestens 3 Zeichen lang sein.","Username length must be at least 3 characters long.","El nombre de usuario debe tener al menos 3 caracteres.","La longueur du nom d\'utilisateur doit être d\'au moins 3 caractères.","La lunghezza del nome utente deve essere di almeno 3 caratteri.","유저명은 최소 3자리 이상 입력하십시오.","Vartotojo vardo ilgis turi būti mažiausiai 3 simboliai.","De gebruikersnaam moet minimaal 3 karakters lang zijn.","Długość nazwy użytkownika musi mieć co najmniej 3 znaki.","Používateľské meno musí obsahovať aspoň 3 znaky."],"password-1":["Heslo nesmí začínat či končit mezerami, a zároveň musí splňovat jednu z následujících podmínek:","Das Passwort darf weder am Anfang noch am Ende Leerzeichen enthalten und muss mindestens eine der folgenden Optionen erfüllen:","Password can\'t contain spaces on the beggining nor the end and must meet at least one of these options:","La Contraseña no puede empezar o terminar con espacios y debe cumplir al menos una de estas opciones:","Le mot de passe ne peut pas contenir d\'espaces au début ni à la fin et doit répondre à au moins l\'une de ces options :","La password non può contenere spazi né all\'inizio né alla fine e deve soddisfare almeno una di queste opzioni:","암호는 시작부분에 공백을 둘 수 없으며 다음옵션 중 하나이상을 충족해야 합니다.","Slaptažodis negali turėti tarpų pradžioje arba pabaigoje ir turi atitikti bent vieną iš šių variantų:","Het wachtwoord mag geen spaties aan het begin of het einde bevatten en moet aan minstens één van deze opties voldoen:","Hasło nie może zawierać spacji na początku ani na końcu i musi spełniać przynajmniej jeden z poniższych warunków:","Heslo nesmie začínať ani končiť medzerami a musí spĺňať aspoň jednu z týchto podmienok:"],"password-2":["- Heslo musí obsahovat minimálně 8 znaků, zahrnujících alespoň 1 malé písmeno, 1 velké písmeno a 1 číslo","- Minimale Länge 8 Zeichen, davon ein Kleinbuchstabe, ein Großbuchstabe und eine Zahl","- Minimal length 8 characters, including one lowercase letter, one uppercase letter and one number","- Longitud mínima 8 caracteres, incluyendo una minúscula, una mayúscula y un número","- Longueur minimale de 8 caractères, dont une lettre minuscule, une lettre majuscule et un chiffre","- Lunghezza minima 8 caratteri, di cui una lettera minuscola, una lettera maiuscola e un numero","- 최소 길이 8자(소문자 1개, 대문자 1개, 숫자 1개 포함)","- 8 simbolių ilgio minimalus, įskaitant vieną mažąją raidę, vieną didžiąją raidę ir vieną skaičių","- Minimaal 8 karakters lang, met tenminste een kleine letter, een hoofdletter en een nummber","- Minimalna długość 8 znaków, w tym jedna mała litera, jedna duża litera i jedna cyfra","- Heslo musí obsahovať minimálne 8 znakov, vrátane aspoň 1 malého písmena, 1 veľkého písmena a 1 číslice"],"password-3":["- Heslo musí obsahovat minimálně 8 znaků, zahrnujících alespoň 1 speciální symbol (např. @)","- Mindestlänge 8 Zeichen, einschließlich eines nicht alphanumerischen Zeichens (z. B. @)","- Minimal length 8 characters, including one non-alphanumeric character (e.g. @)","- Longitud mínima 8 caracteres, incluyendo los no alfanuméricos (como @)","- Longueur minimale de 8 caractères, dont un caractère non alphanumérique (par exemple @)","- Lunghezza minima 8 caratteri, compreso un carattere non alfanumerico (es. @)","- 영숫자가 아닌 문자(예: @) 1개를 포함한 최소 길이 8자","- 8 simbolių ilgio minimalus, įskaitant vieną neteisingą simbolį (pvz., @)","- Minimaal 8 karakters lang, met tenminste één niet-alfanumeriek karakter (bijv. @)","- Minimalna długość 8 znaków, w tym jeden znak niealfanumeryczny (np. @)","- Heslo musí obsahovať minimálne 8 znakov, vrátane aspoň 1 špeciálneho symbolu (napr. @)"],"password-4":["- Heslo musí obsahovat minimálně 15 znaků","- Minimale Länge 15 Zeichen","- Minimal length 15 characters","- Longitud mínima 15 caracteres","- Longueur minimale 15 caractères","- Lunghezza minima 15 caratteri","- 최소 길이 15자","- 15 simbolių ilgio minimalus","- Minimaal 15 karakters lang","- Minimalna długość 15 znaków","- Heslo musí obsahovať minimálne 15 znakov"]},"new-password":["Nové heslo","Neues Passwort","New Password","Nueva Contraseña","nouveau mot de passe","Nuova Password","신규 암호","Naujas slaptažodis","Nieuw wachtwoord","Nowe hasło","Nové heslo"],"re-password":["Zopakujte heslo","Passwort wiederholen","Repeat Password","Repetir Contraseña","répéter le mot de passe","Ripeti Password","암호 재입력","Pakartokite slaptažodį","Herhaal wachtwoord","Powtórz hasło","Zopakujte heslo"],"password":["Heslo","Passwort","Password","Contraseña","mot de passe","Password","암호","Slaptažodis","Wachtwoord","Hasło","Heslo"]},"serial":{"label":["Sériové číslo","Seriennummer","Serial Number","Número de serie","numéro de série","Numero Seriale","시리얼넘버","Serijinis numeris","Serienummer","Numer seryjny","Sériové číslo"]},"api_key":{"label":["","API Key","API Key","Clave API","Clé API","Chiave API","API KEY","API raktas","API-sleutel","Klucz API",""]},"logs":{"title":["Logy","Protokolle","Logs",null,"logs",null,"로그","Žurnalai","Logbestanden",null,"Logy"],"select-file":["Vyberte soubor","Datei auswählen","Select File",null,"Sélectionnez une fichier",null,"파일 선택","Pasirinkti failą","Selecteer bestand",null,"Vyberte súbor"],"not-selected":["Není vybrán soubor logů!","Es ist keine Protokolldatei ausgewählt!","No log file is selected!","¡No se ha seleccionado archivo de registro!","Pas de fichier de log sélectionné!","Nessun file di registro selezionato!","로그 파일이 선택되지 않았습니다!","Nepasirinktas joks žurnalų failas!","Geen logbestand geselecteerd!","Nie wybrano żadnego pliku logu!","Nie je vybraný žiadny logovací súbor!"],"select-file-placeholder":["Vyberte soubor logů","Protokolldatei auswählen","Select log file","Selecciona archivo de registro","selectionnez un fichier de log","Selezionare un file di registro","로그 파일 선택","Pasirinkti žurnalų failą","Selecteer logbestand","Wybierz plik logu","Vyberte logovací súbor"],"empty-file":["Soubor je prázdný!","Die Protokolldatei ist leer!","Log file is empty!","¡El archivo de registro está vacío!","Le fichier de log est vide!","Il file di registro è vuoto!","로그파일이 비어있음!","Žurnalų failas yra tuščias!","Logbestand is leeg!","Plik logu jest pusty!","Logovací súbor je prázdny!"],"file-too-large":["Soubory logů o velikosti větší než {{size}} jsou k dispozici pouze ke stažení!","Protokolldateien, die größer als {{size}} sind, stehen nur zum Herunterladen zur Verfügung.","Log files of size larger than {{size}} are available only for downloading.","Los archivos de registro mayores de {{size}} sólo se pueden descargar.","Les fichiers de log d\'une taille supérieure à {{size}} ne sont disponibles que pour le téléchargement.","I file di registro di dimensioni superiori a {{size}} sono disponibili solo per il download.","로그 파일을 다운로드 하기 위해서는 최소 {{size}} 이상의 용량이 필요합니다.","Žurnalų failai, didesni nei {{size}}, yra prieinami tik atsiunčiant.","Logbestanden groter dan {{size}} kunnen alleen gedownload worden.","Pliki logów o rozmiarze większym niż {{size}} są dostępne tylko do pobrania.","Logovacie súbory s veľkosťou väčšou ako {{size}} sú k dispozícii len na stiahnutie.!"]},"":[null,null,null,null,null,null,null,null,null,null,null],"ntf":{"success":["Požadavek byl úspěšný","Erfolg","The request was successful","Éxito","la demande a été traitée avec succès","Successo","요청이 성공했습니다.","Užklausa buvo sėkminga","De aanvraag was succesvol","Sukces","Žiadosť bola úspešná"],"settings-suc":["Nastavení bylo úspěšně změněno.","Die Einstellungen wurden erfolgreich geändert.","Settings was changed successfully.","Los ajustes se han cambiado correctamente.","Paramètres modifiés avec succès.","Impostazioni modificate correttamente","설정이 성공적으로 변경되었습니다.","Nustatymai sėkmingai pakeisti.","Instelling succesvol gewijzigd.","Ustawienia zostały zmienione pomyślnie","Nastavenia boli úspešne zmenené."],"camera-suc":["","Kamera Steuerungsanfrage wurde gesendet","Camera control request has been sent","La petición de control de cámara se ha enviado","La demande de contrôle de la caméra a été envoyée","È stata inviata una richiesta di controllo della fotocamera","카메라 조작 요청이 전송되었습니다.","Kameros valdymo užklausa buvo išsiųsta","Aanvraag voor camerabesturing is verzonden","Wysłano żądanie sterowania kamerą",""],"camera-config-success":["Konfigurace kamery byla aktualizovaná","Kamerakonfiguration wurde aktualisiert","Camera configuration has been updated","La configuración de la cámara se ha actualizado","La configuration de la caméra a été mise à jour","La configurazione della fotocamera è stata aggiornata","카메라 구성이 업데이트되었습니다.","Kameros konfigūracija buvo atnaujinta","Cameraconfiguration is geüpdatet","Konfiguracja kamery została zaktualizowana",""],"upld-suc":["Soubor {{file_name}} byl úspěšně nahrán.","Das Hochladen des Projekts {{file_name}} war erfolgreich.","The file {{file_name}} was uploaded successfully.","El envío del proyecto {{file_name}} se completó.","Le projet {{file_name}} a été téléversé correctement.","Caricamento del progetto {{file_name}} riuscito.","{{file_name}}파일이 성공적으로 업로드되었습니다.","Failas {{file_name}} sėkmingai įkeltas.","Het bestand {{file_name}} is succesvol geüpload.","Przesyłanie projektu {{file_name}} powiodło się.","Súbor {{file_name}} bol úspešne nahraný."],"error":["Chyba","Fehler","Error","Error","Erreur","Errore","에러","Klaida","Fout","Błąd","Chyba"],"upld-unsuc":["Nahrání souboru {{file_name}} selhalo.","Das Hochladen des Projekts {{file_name}} war nicht erfolgreich.","The file {{file_name}} upload was unsuccessful.","El envío del proyecto {{file_name}} ha fallado.","Le téléversement du projet {{file_name}} a échoué.","Caricamento del progetto {{file_name}} non riuscito.","{{file_name}}파일의 업로드가 실패하였습니다.","Failo {{file_name}} įkėlimas nepavyko.","Het bestand {{file_name}} is niet succesvol geüpload.","Przesyłanie projektu {{file_name}} nie powiodło się.","Nahrávanie súboru {{file_name}} zlyhalo."],"upld-start":["Požadavek na nahrání souboru byl přijat","Upload-Anfrage wurde angenommen","Upload request has been accepted","Se acepto la petición de subida","La demande de téléchargement a été acceptée","Richiesta di caricamento accettata","업로드 요청이 수락되었습니다.","Įkėlimo užklausa priimta","Uploadverzoek is geaccepteerd","Żądanie przesłania zostało zaakceptowane","Žiadosť o odoslanie bola prijatá"]},"upgrade":{"success":{"title":["Aktualizovat","Aktualisieren erfolgreich","Upgrade Successful","Actualización con Éxito","Mise à niveau Réussie","Aggiornamento riuscito","업그레이드 성공","Atnaujinta sėkmingai","",null,""],"message":["Stránka bude aktualizovaná za 5 sekund","Seite wird in 5 Sekunden erneut geladen","Page will be reloaded in 5 seconds","La página se recargará en 5 segundos","La page sera rechargée dans 5 secondes","La pagina verrà ricaricata tra 5 secondi","페이지가 5초 뒤 다시 시작됩니다.","Puslapis bus atnaujintas po 5 sekundžių","","Strona zostanie przeładowana za 5 sekund",""]}},"sort":{"by-name":["Název","Name","Name","Nombre","Nom","Nome","이름으로 정렬하기","Pavadinimas","Naam","Nazwa",""],"by-date":["Datum","Datum","Date","Fecha","Date","Data","날짜로 정렬하기","Data","Datum","Data",""],"by-size":["Velikost","Größe","Size","Tamaño","Taille","Dimensioni","크기로 정렬하기","Dydis","Grootte","Rozmiar",""]},"unit":{"h":["h","h","h","h","h","h","h","h","u","g","h"],"min":["min","min","min","min","min","min","min","min","min","min","min"],"ml":["ml","ml","ml","ml","mL","ml","ml","ml","ml","ml","ml"],"rpm":["RPM","UPM","RPM","RPM","TPM","RPM","RPM","RPM","RPM","Obr./min","RPM"],"b":["B","B","B","B","B","B","B","B","B","B","B"],"kb":["KB","KB","KB","KB","KB","KB","KB","KB","kB","KB","KB"],"mb":["MB","MB","MB","MB","MB","MB","MB","MB","MB","MB","MB"],"gb":["GB","GB","GB","GB","GB","GB","GB","GB","GB","GB","GB"]},"exp-times":{"exp-time":["Doba osvitu [s]","Belichtung [s]","Exposure [s]","Exposición [s]","Exposition [s]","Esposizione [s]","[s]초 노출","Ekspozicija [s]","Belichting [s]","Czas naświetlania [s]","Osvit [s]"],"inc":["Navýšení expozice (s)","Belichtungszeit inkr. [s]","Exposure time incr. [s]","Incremento tiempo exp. [s]","Incr. du temps d\'exposition [s]","Incremento tempo di esposizione [s]","[s]초 노출 시간 증가","Ekspozicijos laiko padidėjimas [s]","Belichtingstijd verhogen [s]","Przyrost czasu naświetl. [s]","Prírastok osvitu (s)"],"layer-1st":["Osvit první vrstvy [s]","Erste Schicht Bel. [s]","First Layer Expo. [s]","Primera Capa Expo. [s]","Première couche Expo. [s]","Esposizione Primo layer [s]","첫번째 레이어 노출시간 [s]초","Pirmojo sluoksnio ekspozicija [s]","Belichtingstijd eerste laag [s]","Naśw. 1. warstwy [s]","Osvit prvej vrstvy [s]"],"profile":["Tiskový profil","Druckprofil","Print profile","Perfil de Impresión","Profil d\'Impression","Profilo di stampa","출력 프로필","Spausdinimo profilis","Printprofielen","Profil druku","Tlačový profil"],"faster":["Rychlejší","Schneller","Faster","Rápido","Plus rapide","Più veloce","빠르게","Greičiau","Sneller","Szybciej","Rýchlejšie"],"slower":["Pomalejší","Langsamer","Slower","Lento","Plus lent","Più lento","느리게","Lėčiau","Langzamer","Wolniej","Pomalšie"],"high-viscosity":["Velmi Viskózní","Hohe Viskosität","High Viscosity","Alta Viscosidad","Haute viscosité","Alta Viscosità","고점도","Aukštas klampumas","Hoge viscositeit","Wysoka lepkość","Vysoká viskozita"]}}}')}},t={};function a(i){var s=t[i];if(void 0!==s)return s.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.p="",(()=>{"use strict";var e=a(8751),t=a(8495),i=a(6648);const s=()=>{document.getElementById("menu").addEventListener("click",(()=>{document.getElementById("menu").classList.contains("burger-open")?n():(document.getElementById("menu").classList.add("burger-open"),document.getElementById("navbar").classList.remove("burger-menu"))})),document.getElementById("navbar").querySelectorAll("a[href]").forEach((e=>{e.addEventListener("click",n)}))};function n(){document.getElementById("menu").classList.remove("burger-open"),document.getElementById("navbar").classList.add("burger-menu")}var o=a(7780),r=a(1351),l=a(5412);const d=(e,t)=>{const a=l.L.init(e,t);a&&(a.setOptions((0,o.Vb)()),a.value=(0,o.G3)(),a.onselect=e=>{(0,o.m0)(e),window.location.reload()})};let c=!1;const u={status:{get:()=>(0,i.LK)("/api/v1/status"),init:!0,update:!0}};async function p(e){const t=(new Date).getTime(),a=Object.fromEntries(Object.entries(u).map((([a,i])=>[a,(()=>{if(!e)return i.init;if(i.update){if(!i.updateInterval)return!0;if(i.timestamp||(i.timestamp=t+i.updateInterval),t>=i.timestamp)return i.timestamp=t+i.updateInterval,!0}})()?i.get():void 0])).filter((([,e])=>void 0!==e))),i=Object.values(a),s=await Promise.all(i.map((e=>e.then((e=>({ok:!0,payload:e}))).catch((e=>({ok:!e.code&&null,error:e}))))));return Object.fromEntries(Object.entries(a).map((([e],t)=>[e,s[t]])))}async function m(e){let a=!1;for(;;){let i=!1;try{const t=await p(a);t.status&&(c=null===t.status.ok),Object.values(t).forEach((({ok:e,error:t})=>{var a;e||(i=!0,null!==e&&(a=t,(0,r.S)(a,{fallbackMessage:{title:"API error",message:"Cannot connect to printer"}})))})),a?g(t):i||(v({...t,printer:e}),a=!0)}catch(e){h(e)}t.Z.setConnected(!c),await new Promise((e=>setTimeout(e,1e3)))}}function v(a){try{t.Z.init(a),window.onpopstate=t=>t&&(0,e.g9)(t.currentTarget.location.hash||"#dashboard"),(0,e.g9)(window.location.hash||"#dashboard")}catch(e){h(e)}}function g(e){try{t.Z.update(e)}catch(e){h(e)}}function h(e){(0,r.S)(e,{fallbackMessage:{title:"Application error",message:"Something bad happened on application side"}}),console.error(e)}window.onload=()=>{console.log("PrusaLink v.3.12.0 #b'edb8912'"),s(),d("lang-dropdown","lang-dropdown"),(0,o.ot)(),document.querySelectorAll("a[href]").forEach((t=>{t.addEventListener("click",(a=>{(0,e.c4)(t.href)&&a.preventDefault()}))})),(0,i.Z5)().then((e=>{e&&m(e)}))}})()})(); diff --git a/prusa/link/static/main.44fd519fe74a820d5363.js b/prusa/link/static/main.44fd519fe74a820d5363.js new file mode 100644 index 00000000..c7816871 --- /dev/null +++ b/prusa/link/static/main.44fd519fe74a820d5363.js @@ -0,0 +1 @@ +(()=>{var e={5862:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"f844a0a85dde310826fce450c3e149d3.svg"},340:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"d0ce7d704590cb0b868ae92249ee86e8.svg"},3246:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"e6e0734bc2dad609a3e92f1873412f11.svg"},6730:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"557f3616d5a1b407b59795b8328bb51f.svg"},8065:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"2e842fcb7b83af8e1e0d26afd80f8fd9.svg"},8920:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"24c2502c54c43441d0bb4bbc17e10a83.svg"},2456:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"f6a7f34a841f532dd1e3e4d610d164f6.svg"},9819:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"53df9c11e268c2390b147239f9ee8796.svg"},7038:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"9332c323b291ba7226ddcdabb0c8e7c4.svg"},1656:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"79e90794ba3b36a64a12414decda0932.svg"},9594:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"a443dadfc7e114c74dae6cd64a74db9d.svg"},931:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"926f52aea63cfd597b30096bfe4077c6.svg"},7336:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"44b654f4ca724e154a9bc60335e98847.svg"},9387:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"8657650f85be23655543d28f58941616.svg"},5300:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"ea93bcffb8771234f8c641f3b7e9f848.svg"},3482:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"ccd215a92d0427a21339a8c38e2a40f3.svg"},5515:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"997c391425907810b4a6e42663d11fd4.svg"},4578:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"24e2e49c87df140cf16aa18b4e261f12.svg"},2e3:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"58151992d28dfb34ee417e0ebf6a66b6.svg"},2290:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"c8a0ca767f73685bbe06863f81e9d3cb.svg"},3174:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"39e93870e6b8fd4ef2d9ed668f8c1545.svg"},8796:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"1218694688ee15ee97bcded9e1a75cc8.svg"},1373:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"dfb811cc28f8e3d7c14bcedbe7ef35b8.svg"},4622:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});const i=a.p+"b891ace1622f34bac5a2b4edb7adc733.svg"},5464:(e,t,a)=>{var i=a(7091),s=a(8065),n=a(4622),o=a(6730),r='

    • Camera Name

      -

    • Snapshot Time

      -

      ';e.exports=r},3478:(e,t,a)=>{var i=a(7091),s=a(340),n=a(5862),o=a(1656),r=i(s),l=i(n),d=i(o),c='

      printer coordinates

      X axis

      0 mm

      Y axis

      0 mm

      Z axis

      0 mm

      stepper motors

      heated bed X and Y move

      move step [mm]

      nozzle Z move

      extruder

      extrude/retract step [mm]

      nozzle temperature

      0°C

      speed

      100%

      heated bed temperature

      0°C

      flow

      100%

      ';e.exports=c},2373:(e,t,a)=>{var i=a(7091),s=a(2e3),n=a(2290),o=a(3246),r=a(4578),l=a(7038),d=a(2456),c=a(9819),u=a(9387),p=a(5300),m=a(3482),v=a(4622),g=a(6730),h=a(3174),b=a(8796),f=i(s),y=i(n),w=i(o),k=i(r),x=i(l),z=i(d),S=i(c),E=i(u),P=i(p),L=i(m),N=i(v),_=i(g),I='

      Upload file

      Add file from

       

      Click to choose a *.sl1 file or drag it here

      Source URL

      Type URL of G-CODE file

      File name

      Type or edit file name

      Progress

      NA

      Size

      NA

      Download Started

      NA

      Remaining Time

      NA

      Autostart

      NA

      Temperatures

      Cameras

      • -

      • -

      ';e.exports=I},7189:(e,t,a)=>{var i=a(7091),s=a(2e3),n=a(2290),o=a(3246),r=a(4578),l=a(7038),d=a(2456),c=a(9819),u=a(9387),p=a(5300),m=a(3482),v=a(4622),g=a(6730),h=a(931),b=a(5515),f=a(3174),y=a(8796),w=a(9594),k=a(8065),x=a(8920),z=i(s),S=i(n),E=i(o),P=i(r),L=i(l),N=i(d),_=i(c),I=i(u),T=i(p),j=i(m),C=i(v),A=i(g),D=i(h),B=i(b),O=i(f),q=i(y),M=i(w),R=i(k),H=i(x),U='

      Local

      0%

      0 GB of 0 GB free

      Add file from

       

      Click to choose a *.sl1 file or drag it here

      Source URL

      Type URL of G-CODE file

      File name

      Type or edit file name

      Progress

      NA

      Size

      NA

      Download Started

      NA

      Remaining Time

      NA

      Autostart

      NA

      ';e.exports=U},5198:(e,t,a)=>{var i=a(7091),s=a(4622),n=a(6730),o='

      ';e.exports=o},2936:(e,t,a)=>{var i=a(7091),s=a(7038),n=a(7336),o=a(1373),r=a(4622),l=a(6730),d=i(s),c=i(n),u=i(o),p='

      version

      api

      hostname

      firmware

      server

      text

      sdk

      frontend

      3.12.0

      system version

      updates

      connection

      PRUSA CONNECT

      connection status

      Successfully connected

      3D printer connection status

      Successfully connected

      printer

      printer name

      printer location

      network error chime

      user

      username

      new password

      repeat password

      current password

      serial number

      serial number

      api key

      api key

      logs

      select file

      • No log file is selected!
      ';e.exports=p},7091:e=>{"use strict";e.exports=function(e,t){return t||(t={}),"string"!=typeof(e=e&&e.__esModule?e.default:e)?e:(t.hash&&(e+=t.hash),t.maybeNeedQuotes&&/[\t\n\f\r "'=<>`]/.test(e)?'"'.concat(e,'"'):e)}},6648:(e,t,a)=>{"use strict";a.d(t,{LK:()=>l,Z5:()=>v,gJ:()=>p,iT:()=>d,wU:()=>o});var i=a(8236),s=a(1351);const n=()=>new Promise(((e,t)=>{(0,i.o)((e=>t=>{const a=document.getElementById("modal-apiKey"),i=document.importNode(a.content,!0);return i.getElementById("apiKey").addEventListener("keydown",(a=>{"Enter"==a.key&&(t(),e(a.target.value))})),i.getElementById("login").addEventListener("click",(a=>{a.preventDefault();let i=document.getElementById("apiKey").value;t(),e(i)})),i})(e),{timeout:0,closeOutside:!1})})).then((e=>sessionStorage.setItem("apiKey",e))),o=(e="application/json")=>"ApiKey"==sessionStorage.getItem("authType")?{"X-Api-Key":sessionStorage.getItem("apiKey"),Accept:e}:{Accept:e},r=()=>new Promise(((e,t)=>(sessionStorage.setItem("auth","pending"),fetch("/api/v1/info",{headers:o()}).then((t=>{if(401==t.status){const a=t.headers.get("WWW-Authenticate").split(" ")[0];return sessionStorage.setItem("authType",a),sessionStorage.removeItem("apiKey"),"ApiKey"==a?n().then((()=>r().then((t=>e(t))))):r().then((t=>e(t)))}{const e=t.json();return 200!=t.status&&e.then((e=>(0,s.S)({data:e}))),e}})).then((t=>{sessionStorage.setItem("auth","true"),e(t)}))))),l=(e,t={})=>c(e,t,"application/json","json"),d=(e,t={})=>c(e,t,"text/plain","text");async function c(e,t={},a,i){if("true"!=sessionStorage.getItem("auth"))throw{code:401};{t.headers={...t.headers,...o(a)};const s=await fetch(e,t),n=s.status,r={code:n,eTag:s.headers.get("etag")};switch(n){case 401:throw sessionStorage.setItem("auth","false"),r;case 204:case 304:return r;default:const e=await s.text();if(!s.ok){if(e.length>0)try{r.data=JSON.parse(e)}catch{}throw r.data=r.data||{title:`Error ${n}`,message:s.statusText},r}return r.data="json"===i?0===e.length?{}:JSON.parse(e):e,r}}}const u=(e,t,a)=>new Promise(((i,s)=>{"true"==sessionStorage.getItem("auth")?(t.headers={...o(),...t.headers},fetch(a?`${e}?ct=${a}`:e,t).then((e=>{401==e.status&&(sessionStorage.setItem("auth","false"),s(e)),e.ok?e.blob().then((t=>i({url:URL.createObjectURL(t),headers:e.headers}))):s(e)})).catch((e=>s(e)))):s()})),p=(e,t,a={})=>u(e,{...a,headers:{...a.headers,Accept:"image/*"}},t),m=e=>{const t=document.getElementById("modal-welcome"),a=document.importNode(t.content,!0);return a.querySelector(".close-button").addEventListener("click",e),a},v=()=>null==localStorage.getItem("showWelcome")?new Promise(((e,t)=>{(0,i.o)(m,{closeCallback:()=>{localStorage.setItem("showWelcome",!0),e()}})})).then((()=>r())):r()},1972:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=function(e,t){let a=document.createElement("a");a.href=e,a.download=t||"",a.click(),a.remove()}},646:(e,t,a)=>{"use strict";function i(e,t=!0){e&&(t&&!e.hasAttribute("hidden")&&e.setAttribute("hidden",!0),!t&&e.hasAttribute("hidden")&&e.removeAttribute("hidden"))}function s(e,t=!0){i(e,!t)}function n(e,t=!0){e&&(t&&!e.hasAttribute("disabled")&&e.setAttribute("disabled",!0),!t&&e.hasAttribute("disabled")&&e.removeAttribute("disabled"))}function o(e,t=!0){return n(e,!t)}function r(){s(document.querySelector("#job .loading-overlay"))}function l(){i(document.querySelector("#job .loading-overlay"))}function d(e,...t){const a=i=>{if(t)for(const e of t)if(e&&e.contains(i.target))return;e&&e(),window.removeEventListener("pointerup",a)};window.addEventListener("pointerup",a)}a.d(t,{H:()=>n,QH:()=>i,QP:()=>r,Ti:()=>d,Zk:()=>l,gL:()=>o,yx:()=>s})},5537:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=function(e){return"string"==typeof e?document.getElementById(e):e||document.body}},9741:e=>{e.exports=function(e,t){let a=t.split("."),i=e;for(const e of a)if(i=i[e],!i)break;return i}},7780:(e,t,a)=>{"use strict";a.d(t,{G3:()=>v,Iu:()=>h,Vb:()=>g,m0:()=>m,ot:()=>f});var i=a(5537),s=a(9741),n=a.n(s);const o=a(4977),r=o.langs,l=o.texts,d=r.indexOf("en");let c,u;function p(){return navigator.language||navigator.userLanguage||""}function m(e){const t=r.indexOf(e);return-1!==t&&(u=t,c=e,localStorage.setItem("lang",c),!0)}function v(){return c}function g(){return[...r]}function h(e,t){let a=n()(l,`${e}.${u}`);if(!a)return a=n()(l,`${e}.${d}`),a||(a=e),b(a,t),a;let i=null;if(t&&(i=Object.assign({},t),delete i.query,delete i.ref),i&&Object.keys(i).length>0){let e,i=a,s=/{{(.*?)}}/g;for(;e=s.exec(a);){let s=a.substr(e.index+2,e[0].length-4);if("query"!==s&&"ref"!==s)if(s in t){let a=t[s];i=i.replace(e[0],a)}else 0}a=i}return b(a,t),a}function b(e,t){if(t)if(t.ref){t.ref.innerHTML=e}else if(t.query){let a=document.querySelector(t.query);a?a.innerHTML=e:console.warn(`cannot find element with "${t.query}" query`)}}function f(e){(0,i.Z)(e).querySelectorAll('[data-label]:not([data-label=""])').forEach((e=>{const t=h(e.getAttribute("data-label")),a=e.getAttribute("data-label-target");a?e.setAttribute(a,t):e.innerHTML=t}))}m(localStorage.getItem("lang"))||m(p().toLowerCase())||m(p().toLowerCase().split("-")[0])||m("en")},2451:(e,t,a)=>{"use strict";a.d(t,{Z:()=>L});var i=a(6648),s=a(646),n=a(7780),o=a(3707),r=a(8236),l=a(5412),d=a(1351);let c,u=!1,p=[];const m={TEN_SEC:"TEN_SEC",THIRTY_SEC:"THIRTY_SEC",SIXTY_SEC:"SIXTY_SEC",EACH_LAYER:"EACH_LAYER",FIFTH_LAYER:"FIFTH_LAYER",MANUAL:"MANUAL"},v=e=>{switch(e){case m.TEN_SEC:return(0,n.Iu)("cameras.trigger-scheme.ten-sec");case m.THIRTY_SEC:return(0,n.Iu)("cameras.trigger-scheme.thirty-sec");case m.SIXTY_SEC:return(0,n.Iu)("cameras.trigger-scheme.sixty-sec");case m.EACH_LAYER:return(0,n.Iu)("cameras.trigger-scheme.each-layer");case m.FIFTH_LAYER:return(0,n.Iu)("cameras.trigger-scheme.fifth-layer");case m.MANUAL:return(0,n.Iu)("cameras.trigger-scheme.manual");default:return`${e}`}},g=()=>(0,o.Vp)((0,n.Iu)("ntf.success"),(0,n.Iu)("ntf.camera-suc")),h=(e,t=E)=>{void 0===c&&(c=e.camera.id),u=e.link.connect.ok,(0,i.LK)("/api/v1/cameras").then((e=>{const a=(e?.data?.camera_list||[]).map((e=>{let t=p.find((t=>t.id===e.camera_id))||{};return e.camera_id===c&&(e.connected||(c=null)),{id:e.camera_id,config:e.config,connected:e.connected,detected:e.detected,stored:e.stored,registered:e.registered,nextSnapshotAt:t?.nextSnapshotAt,lastSnapshotAt:t?.lastSnapshotAt,lastSnapshotUrl:t?.lastSnapshotUrl}})),i=p.filter((e=>!a.find((t=>e.id===t.id))));t&&t(a,i),p=a})).catch(d.S),p.filter((e=>e.connected)).forEach((e=>y(e.id)))},b=e=>`camera_${e}`,f=e=>document.getElementById(b(e)),y=e=>{const t=p.find((t=>t.id===e));if(!t)return;const a=new Date;t.lastSnapshotAt&&t.nextSnapshotAt&&a{const n=p.find((t=>t.id===e)),o=b(e),r=document.querySelector(`#${o} .camera__no-snapshot`),l=document.querySelector(`#${o} .camera__snapshot`);if(r&&(0,s.yx)(r,!1),l&&((0,s.yx)(l,!0),l.src=t),n){const e=`${i.get("cache-control")}`.match(/max-age=(\d+)/);let s;e&&(s=parseInt(e[1],10)),s||(s=11);const o=i.get("expires"),r=i.get("last-modified"),l=e=>{const t=new Date;return new Date(t.getTime()+1e3*e)};n.nextSnapshotAt=o?new Date(o):l(s),n.nextSnapshotAt{e||(e=c);const t=e?p.find((t=>t.id===e)):null,a=document.getElementById("camera-snapshot-picture"),i=document.getElementById("camera-snapshot-time"),s=document.getElementById("camera-snapshot-name"),[n,o,r,l]=t?.lastSnapshotAt?[t.id,t.config.name,t.lastSnapshotAt.toLocaleString(),t.lastSnapshotUrl]:[null,"-","-",""];c=n,a&&(a.src=l),i&&(i.innerText=r),s&&(s.innerText=o)},k=(e,t,a=!1)=>{e.querySelector(".camera__name").innerText=t.config.name,e.querySelector(".camera__path").innerText=t.config.path,e.querySelector(".camera__driver").innerText=t.config.driver,e.querySelector(".camera__cloud").innerText=t.registered?(0,n.Iu)("camera.cloud.linked"):(0,n.Iu)("camera.cloud.not-linked");const i=e.querySelector(".camera__register"),o=e.querySelector(".camera__unregister"),r=e.querySelector(".camera__add"),l=e.querySelector(".camera__remove"),d=e.querySelector(".camera__settings");(0,s.yx)(i,u&&t.connected&&!t.registered),(0,s.yx)(o,u&&t.connected&&t.registered),(0,s.yx)(r,!1),(0,s.yx)(l,!t.connected),(0,s.yx)(d,t.connected),a&&(r.title=(0,n.Iu)("camera.btn.connect"),d.title=(0,n.Iu)("camera.btn.settings"),i.title=(0,n.Iu)("camera.btn.link"),o.title=(0,n.Iu)("camera.btn.unlink"),r.addEventListener("click",(e=>{e.stopPropagation(),z(t.id)}),!1),l.addEventListener("click",(e=>{e.stopPropagation(),S(t.id)}),!1),d.addEventListener("click",(e=>{e.stopPropagation(),P(t.id)}),!1),i.addEventListener("click",(e=>{e.stopPropagation(),x(t.id,"POST")}),!1),o.addEventListener("click",(e=>{e.stopPropagation(),x(t.id,"DELETE")}),!1))},x=(e,t)=>{(0,i.LK)(`/api/v1/cameras/${e}/connection`,{method:t}).then((()=>g())).catch(d.S)},z=e=>{const t=p.find((t=>t.id===e));t&&(0,i.LK)(`/api/v1/cameras/${t.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:t.config})}).then((()=>g())).catch(d.S)},S=e=>{const t=p.find((t=>t.id===e));t&&(0,i.LK)(`/api/v1/cameras/${t.id}`,{method:"DELETE"}).then((()=>g())).catch(d.S)},E=(e,t)=>{const a=document.getElementById("cameras-list");t.forEach((e=>{const t=f(e.id);t&&a.removeChild(t)})),e.sort(((e,t)=>t.connected-e.connected)).forEach((e=>{const t=f(e.id);if(t)k(t,e);else{const t=(e=>{const t=document.getElementById("camera-list-item")?.content;if(!t)return null;const a=document.importNode(t,!0),i=a.querySelector("li"),o=e.id;return i.addEventListener("click",(e=>{const t=p.find((e=>e.id===o));t&&t.connected&&w(t.id),e.preventDefault()}),!1),i.id=b(e.id),a.querySelector(".camera__path__label").innerText=(0,n.Iu)("camera.path"),a.querySelector(".camera__driver__label").innerText=(0,n.Iu)("camera.driver"),a.querySelector(".camera__cloud__label").innerText=(0,n.Iu)("camera.cloud.label"),(0,s.yx)(a.querySelector(".camera__snapshot"),!1),k(a,e,!0),a})(e);t&&a.appendChild(t)}}))},P=e=>new Promise(((t,a)=>{(0,r.o)(((e,t)=>t=>{const a=`/api/v1/cameras/${e}`,s=document.getElementById("modal-camera-settings"),r=document.importNode(s.content,!0),c=r.getElementById("camera-settings__name"),u=l.L.init(r.getElementById("camera-settings__resolution"),"camera-settings__resolution"),p=l.L.init(r.getElementById("camera-settings__trigger-scheme"),"camera-settings__trigger-scheme"),g=r.getElementById("yes");return(0,i.LK)(a).then((e=>{const s=e.data,r=s.available_resolutions.sort(((e,t)=>e.width===t.width?t.height-e.height:t.width-e.width)).map(((e,t)=>`${e.width}x${e.height}`)),l=Object.keys(m),h=l.map((e=>v(e)));c.value=s.name,u.setOptions(r),u.value=`${s.resolution.width}x${s.resolution.height}`,p.setOptions(h),p.value=v(s.trigger_scheme),g.addEventListener("click",(()=>{const[e,s]=u.value.split("x").map((e=>parseInt(e))),r=l[h.indexOf(p.value)];(0,i.LK)(`${a}/config`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.value,resolution:{width:e,height:s},trigger_scheme:r})}).then((()=>(0,o.Vp)((0,n.Iu)("ntf.success"),(0,n.Iu)("ntf.camera-config-success")))).catch(d.S).finally(t)}))})).catch(d.S),r.getElementById("no").addEventListener("click",(()=>t())),r})(e),{timeout:0,closeOutside:!1})})).then((()=>{lastUpdated=null,h()})),L={load:e=>{p=[],(0,n.Iu)("cameras.link",{query:"#title-status-label"}),h(e)},update:h,getCameraNode:f,getCameraNodeId:b,updateCurrentCamera:w}},732:(e,t,a)=>{"use strict";a.d(t,{Z:()=>v});var i=a(7780),s=a(646),n=a(5489),o=a(6648);var r=a(1351),l=a(4800);a(8463);let d=1,c=1;const u=e=>{(0,n.ZP)("control",e),function(e){const t=e.state,a=document.querySelectorAll("#control button"),i=["extrude","retract"],n=["flowrate","bed","nozzle","speed"],o=[...n,...i,"move-step","extrude-retract-step","heated-bed-xy-move"];if([l.PT.PRINTING||l.PT.BUSY||l.PT.PAUSED].includes(t)){const e=t===l.PT.PAUSED?o:n;a.forEach((t=>{const a=t.id||t.parentNode.id||t.parentNode.parentNode.id;(0,s.H)(t,!e.includes(a))}))}const r=e.telemetry.temperature.nozzle.current||0,d=e.printer.minExtrusionTemp||0,c=r&&d&&r>=d;i.forEach((e=>(0,s.H)(document.getElementById(e),!c)))}(e)};function p(e,t){if("move"===e){(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"jog",...e})}))(function(e){const t=e.includes("-"),a=e.replace(RegExp("[+-]"),"");return a?{[a]:t?-d:d}:(console.error(`"${e}" is not valid direction`),{})}(t)).catch((e=>(0,r.S)(e)))}else if("home"===e){(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"home",axes:e})}))(t.split(",")).catch((e=>(0,r.S)(e)))}}function m(e,t,a){function i(e){return Number.parseFloat(e.getAttribute("data-step"))}if(e){const n=e.querySelectorAll("button[data-step]"),o=e=>{n.forEach((t=>{i(t)===e?((0,s.H)(t),t.setAttribute("selected",!0)):((0,s.gL)(t),t.hasAttribute("selected")&&t.removeAttribute("selected"))}))};n.forEach((e=>{const t=i(e);isNaN(t)||(e.onclick=()=>{o(t),a(t)})})),o(t)}}const v={load:e=>{(0,i.Iu)("control.title",{query:"#title-status-label"}),function(e){function t(e,t){switch(e){case"bed":return i=t,(0,o.LK)("/api/printer/bed",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"target",target:i})});case"flowrate":return a=t,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"flowrate",factor:a})});case"nozzle":return(e=>(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"target",targets:{tool0:e}})}))(t);case"speed":return(e=>(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"speed",factor:e})}))(t);default:throw Error("Unknown property!")}var a,i}e&&e.querySelectorAll(".input-wrapper").forEach((e=>{const a=e.querySelector("input"),i=e.querySelector("button");if(a){const e=()=>{const e=a.getAttribute("data-action"),i=Number.parseFloat(a.value);isNaN(i)||t(e,i).then((e=>{a.value=""})).catch((e=>(0,r.S)(e)))};a.onkeyup=t=>{"Enter"===t.key&&(e(),a.blur())},i&&(i.onclick=e)}}))}(document.querySelector("#control")),m(document.querySelector("#control #move-step"),d,(e=>d=e)),m(document.querySelector("#control #extrude-retract-step"),c,(e=>c=e)),function(){const e=document.querySelector("#control #disable-steppers");e&&(e.onclick=()=>{(0,o.LK)("/api/printer/printhead",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"disable_steppers"})}).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #extrude");e&&(e.onclick=()=>{var e;(e=c,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"extrude",amount:e})})).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #retract");e&&(e.onclick=()=>{var e;(e=c,(0,o.LK)("/api/printer/tool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"extrude",amount:-e})})).catch((e=>(0,r.S)(e)))})}(),function(){const e=document.querySelector("#control #heated-bed-xy-move");e&&e.querySelectorAll("button[data-action]").forEach((e=>{e.onclick=()=>{p(e.getAttribute("data-action"),e.getAttribute("data-value"))}}))}(),function(){const e=document.querySelector("#control #nozzle-z-move");e&&e.querySelectorAll("button[data-action]").forEach((e=>{e.onclick=()=>{p(e.getAttribute("data-action"),e.getAttribute("data-value"))}}))}(),u(e)},update:u}},5502:(e,t,a)=>{"use strict";a.d(t,{Z:()=>S});var i=a(7780);const s=(0,i.Iu)("prop.at"),n=(0,i.Iu)("unit.h"),o=(0,i.Iu)("prop.less-than"),r=(0,i.Iu)("unit.min"),l=((0,i.Iu)("unit.ml"),(0,i.Iu)("unit.rpm")),d=(0,i.Iu)("prop.today-at"),c=(0,i.Iu)("prop.tmw-at"),u=(0,i.Iu)("unit.b"),p=(0,i.Iu)("unit.kb"),m=(0,i.Iu)("unit.mb"),v=(0,i.Iu)("unit.gb"),g=(0,i.Iu)("prop.true"),h=(0,i.Iu)("prop.false");function b(e,t=!0,a=1){return e>0?t?e.toFixed(a):e:0}function f(e){const t=new Date(1e3*e);var a=localStorage.getItem("lang");return(t.toLocaleDateString(a,{year:"numeric",month:"numeric",day:"numeric"})+" "+t.toLocaleTimeString(a,{hour:"numeric",minute:"numeric"})).substring(0,25)}function y(e){let t="00:00";if(e){let a=new Date,i=new Date(a.getTime()+1e3*e),n=new Date(a);n.setDate(n.getDate()+1);let o="";if(i.getDate()==a.getDate()&&i.getMonth()==a.getMonth())o=`${d} `;else if(i.getDate()==n.getDate()&&i.getMonth()==n.getMonth())o=`${c} `;else{let e={month:"numeric",day:"numeric"};o=`${i.toLocaleString(window.navigator.language,e)} ${s} `}t=o+("0"+i.getHours()).substr(-2)+":"+("0"+i.getMinutes()).substr(-2)}return t}function w(e){if(e<60)return o;const t=Math.floor(e/60%60),a=Math.floor(e/3600);return(a>0?`${a} ${n}`:"")+(t>0?` ${t} ${r}`:"")}function k(e){let t=e;const a=[u,p,m,v];for(let e=0;e{if(void 0===t||null===t&&"progress"!==e)return(0,i.Iu)("prop.na");switch(e){case"number":return b(t);case"temp":return b(t)+" °C";case"temp_int":return b(t,0)+"°C";case"fan":return b(t)+` ${l}`;case"print":case"progressPct":return b(t||0,!0,0)+"%";case"pos":return b(t)+" mm";case"date":return f(t);case"time":return w(t);case"timeEst":return y(t);case"progress":return b(100*(t||0),!0,0)+"%";case"percent":return`${b(t||0,!0,0)}%`;case"material":return t||(0,i.Iu)("prop.na");case"size":return k(t);case"boolean":return x(t);case"diameter":return b(t,!0,2)+" mm";default:return t}},S=(e,t)=>z(e,t)},5412:(e,t,a)=>{"use strict";a.d(t,{L:()=>s});var i=a(5537);class s{set value(e){this._value=e,this.updateLabel()}get value(){return this._value}constructor(e,t,a){const i=this;this._label=t,this._ul=a,this._value=t.innerHTML,this.is_open=!1,this._options=[],this._onKeyDown=e=>{if(i.is_open){switch(e.key.toLowerCase()){case"escape":return void i.close();case"arrowdown":let e=!1;for(const t of this._ul.childNodes){if(e){this._highlight(t);break}t.classList?.contains("select")&&(e=!0)}break;case"arrowup":let t=null;for(const e of this._ul.childNodes){if(e.classList?.contains("select")){t&&this._highlight(t);break}t=e}break;case"enter":for(const e of this._ul.childNodes)if(e.classList.contains("select")){const t=e.innerText;this.value=t,this.onselect&&this.onselect(t),this.close();break}}e.preventDefault()}},this._onClick=t=>{const a=t.target.parentNode;if(!i.is_open)return!0;a!==e&&i.close()},window.addEventListener("keydown",this._onKeyDown,!1),window.addEventListener("click",this._onClick,!1),this.onselect=void 0,e.onclick=e=>{e.preventDefault(),this.is_open?this.close():this.open()}}_highlight(e){this._ul.childNodes.forEach((t=>{t===e?t.classList.add("select"):t.classList.remove("select")}))}destructor(){window.removeEventListener("keypress",this._onKeyPress),window.removeEventListener("click",this._onClick)}static init(e,t){let a=(0,i.Z)(e);const n=document.getElementById("dropdown-template"),o="dropdown"===a.getAttribute("data-type")?a:a.querySelector('select[data-type="dropdown"]');if(!o)return;o.after(document.importNode(n.content,!0));const r=o.nextElementSibling;r.id=t,o.remove();const l=r.querySelector(".dropdown-btn"),d=l.querySelector(".dropdown-label"),c=r.querySelector(".dropdown-content ul");return l&&d&&c?new s(l,d,c):void 0}setOptions(e){this._options=e}updateLabel(){this._label.innerHTML=this._value}select(e){this._label.innerHTML=e}open(){this._ul.classList.contains("open")||(this._options.forEach((e=>{const t=document.createElement("li");e===this._value&&(t.className="select selected"),t.innerText=e,t.onclick=()=>{this.select(e),this.value=e,this.onselect&&this.onselect(e),this.close()},t.onmouseover=()=>this._highlight(t),this._ul.appendChild(t)})),this._ul.classList.add("open")),this.is_open=!0}close(){for(this._ul.classList.remove(["open"]);this._ul.firstChild;)this._ul.removeChild(this._ul.firstChild);this.is_open=!1}}},1351:(e,t,a)=>{"use strict";a.d(t,{S:()=>n});var i=a(3707);let s={};function n(e,t){let a=e?.data?.title||t?.fallbackMessage?.title||"Error",n=e?.data?.message||t?.fallbackMessage?.message||"Action can not be performed",o=!1;if(e?.data){const t=e.data;t.code&&(a+=`- ${t.code}`,"7"==`${t.code}`[3]&&(o=!0)),t.url&&(n+=`
      more info`)}const r=e?.data?.code||`${a}\n${n}`;if(s[r])return;s[r]=!0;const l=()=>s[r]=!1;o?(0,i.Kp)(a,n,l):(0,i.vU)(a,n,l)}},8236:(e,t,a)=>{"use strict";a.d(t,{o:()=>n});var i=a(7780);const s={count:0,current:0},n=(e,t={})=>{const a=Object.assign({timeout:5500,closeOutside:!0},t),n=s.count;s.count=s.count+1;const o=document.querySelector(".modal-box");t.className&&o.classList.add(t.className);const r=o.parentElement;for(;o.firstChild;)o.removeChild(o.firstChild);const l=()=>{n==s.current&&r.classList.contains("show-modal")&&(r.classList.remove("show-modal"),a.closeCallback&&a.closeCallback())},d=e=>{e.target===r&&l()};a.closeOutside&&window.addEventListener("click",d);const c=e(l);s.current=n,o.appendChild(c),(0,i.ot)(o),r.classList.add("show-modal"),a.timeout>0&&setTimeout(l,a.timeout)}},5951:(e,t,a)=>{"use strict";function i(e,t,a="right"){if(!e)return;const i=e.querySelector(".fill");if(i){const e=`${["top","right","bottom","left"].map((e=>(e=>e===a?100-(t||0)+"%":0)(e))).join(" ")}`;i.style.inset=e}}a.d(t,{g:()=>i})},2957:(e,t,a)=>{"use strict";a.d(t,{Z:()=>w});var i=a(7780),s=a(5489),n=a(6648),o=a(646),r=a(1351);var l=a(3707),d=a(8236);let c=null,u=null;const p=a(5493).Z,m=()=>(0,l.Vp)((0,i.Iu)("ntf.success"),(0,i.Iu)("ntf.settings-suc"));function v(e){const t=document.getElementById("api_key");t&&(t.innerText=e)}function g(e,t){(0,s.ZP)("con-settings",e.link),function(e,t){const a=document.getElementById("conn-prusa-connect-status"),i=document.getElementById("conn-prusa-connect-url"),s=document.getElementById("edit-connect-del"),n="FINISHED"===e.connect.registration,{hostname:r,tls:l,port:d}=e.connect.settings,{ok:c,message:u}=e.connect,p=c&&n,m=document.getElementById("conn-prusa-connect-status-"+(p?"ok":"not-ok")),v=`${l?"https":"http"}://${r}${d||""}`,g=`(${v})`;t&&(i.value=v);(0,o.QH)(i.parentNode.parentNode,n),s&&(0,o.yx)(s,n||!c);h(a,m,p,u,g)}(e.link,t),function(e,t){const a=document.getElementById("conn-printer-status"),{port:i,baudrate:s}=t.printer.settings,{ok:n,message:o}=t.printer,r=document.getElementById("conn-printer-status-"+(n?"ok":"not-ok"));h(a,r,n,o,`(${i||"/dev/ttyACM0"} @ ${s||0}bps)`)}(e.state,e.link)}function h(e,t,a,s,n){e&&e.setAttribute("ok",Boolean(a)),t&&(t.innerHTML=(a?(0,i.Iu)("conn.suc"):s)+"
      "+n)}function b(e){switch(e.toLowerCase()){case"python":return(0,i.Iu)("sys-version.python");case"description":return(0,i.Iu)("sys-version.description");case"id":return(0,i.Iu)("sys-version.id");case"os":return(0,i.Iu)("sys-version.os");default:return e}}const f=(e,t,a)=>{const s=document.getElementById("modal-sysupgrade"),l=document.importNode(s.content,!0),d=l.getElementById("modal-sysupgrade__target"),c=l.getElementById("modal-sysupgrade__current"),p=l.getElementById("modal-sysupgrade__version"),m=l.getElementById("modal-sysupgrade__status"),v=l.getElementById("modal-sysupgrade__spinner"),g=l.getElementById("yes"),h=l.getElementById("no");return d.innerText=t,c.innerText=u,p.innerText=a,g.addEventListener("click",(t=>{t.preventDefault(),(0,o.H)(g,!0),(0,o.H)(h,!0),(0,o.yx)(g,!1),(0,o.yx)(h,!1),(0,o.yx)(v,!0),m.innerText=(0,i.Iu)("msg.sysupgrade.pending"),(0,n.LK)("/api/v1/update/prusalink",{method:"POST"}).then((()=>(m.innerText=(0,i.Iu)("msg.sysupgrade.wait-for-printer"),y(a)))).catch((e=>(0,r.S)(e))).finally((()=>{e(),window.location.href="/"}))})),h.addEventListener("click",(()=>e())),l},y=e=>new Promise(((e,t)=>{const a=()=>(0,n.LK)("/api/version").then((t=>{e()})).catch((e=>setTimeout(a,2500)));setTimeout(a,5e3)})),w={load:e=>{(0,i.Iu)("settings.title",{query:"#title-status-label"}),(0,n.LK)("api/version?system=1").then((e=>{const t={version:e.data};u=t.version.server,(0,s.ZP)("settings",t),function(e){const t=document.querySelector("#sys-version .table");if(t)for(const[a,i]of Object.entries(e.version.system)){const e=document.createElement("div");e.className="row";const s=document.createElement("div");s.className="col txt-sm",s.innerHTML=`

      ${b(a)}

      `,e.appendChild(s);const n=document.createElement("div");n.className="col txt-md",n.innerHTML=`

      ${i}

      `,e.appendChild(n),t.appendChild(e)}}(t)})).catch((e=>(0,r.S)(e))),function(){const e=document.getElementById("updates-check"),t=document.getElementById("updates-check__spinner"),a=a=>{a&&document.querySelectorAll(".update-pkg").forEach((e=>{e.parentNode.removeChild(e)})),(0,o.yx)(t,a),(0,o.gL)(e,!a)};e&&t&&(e.onclick=()=>{a(!0),(0,n.LK)("/api/v1/update/prusalink").then((t=>{const a=t.data?.new_version,s=[{name:"PrusaLink",new_version:a}],n=e.parentNode.parentNode.parentNode;s.forEach((e=>{const t=document.createElement("div"),a=document.createElement("div"),s=document.createElement("p"),o=document.createElement("div"),r=document.createElement("p"),l=document.createElement("div"),c=document.createElement("span"),p=document.createElement("span"),m=document.createElement("span"),v="PrusaLink";if(t.className="row update-pkg",a.className="col",o.className="col",l.className="col",s.className="txt-bold txt-grey txt-sm",r.className="txt-md",c.className="txt-grey txt-sm",m.className="txt-grey txt-sm",s.innerText=v,p.innerHTML=" → ",e.new_version){c.innerText=u,m.innerText=e.new_version;const t=document.createElement("button"),a=document.createElement("p");a.innerText=(0,i.Iu)("btn.upgrade"),t.className="action",t.appendChild(a),l.appendChild(t),t.onclick=()=>(0,d.o)((t=>f(t,v,e.new_version)),{timeout:0,closeOutside:!1})}else m.innerText="The package is up to date";r.appendChild(c),r.appendChild(p),r.appendChild(m),a.appendChild(s),o.appendChild(r),t.appendChild(a),t.appendChild(o),t.appendChild(l),n.appendChild(t)}))})).catch((e=>(0,r.S)(e))).finally((()=>a(!1)))})}(),function(e){g(e,!0),document.getElementById("edit-connect-del").addEventListener("click",(t=>{(0,n.LK)("api/connection",{method:"DELETE"}).then(m).catch((e=>(0,r.S)(e))).finally((()=>e.updateConnection()))}));const t=document.getElementById("edit-connect-set"),a=document.getElementById("edit-connect-set__spinner"),i=e=>{e&&document.querySelectorAll(".update-pkg").forEach((e=>{e.parentNode.removeChild(e)})),(0,o.yx)(a,e),(0,o.gL)(t,!e)};t.addEventListener("click",(t=>{i(!0);const a=document.getElementById("conn-prusa-connect-url")?.value;if(!a)return;const s=new URL(a);(0,n.LK)("api/connection",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connect:{hostname:s.hostname,port:s.port?parseInt(s.port):0,tls:s.protocol.startsWith("https")?1:0}})}).then((t=>{const a=t?.data?.url;a&&window.open(a,"_blank"),setTimeout((()=>{e.updateConnection().finally((()=>i(!1)))}),5e3)})).catch((e=>{i(!1),(0,r.S)(e)}))}))}(e),(0,n.LK)("api/settings").then((e=>{const t=e.data;!function(e){const t=document.querySelector("#settings #printer-name"),a=document.querySelector("#settings #printer-location"),i=document.querySelector("#settings #printer-network_error_chime"),s=document.querySelector("#settings #edit-printer"),l=()=>{(0,o.gL)(s,t.value.length>0&&a.value.length>0)};t.oninput=l,a.oninput=l,i.oninput=l,t.value=e.printer?.name||"",a.value=e.printer?.location||"",i.checked=!!e.printer?.network_error_chime,"api-key"in e&&v(e["api-key"]),s.onclick=()=>{(({name:e,location:t,network_error_chime:a})=>(0,n.LK)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({printer:{name:e,location:t},network_error_chime:a})}))({name:t.value,location:a.value,network_error_chime:i.checked}).then((()=>m())).catch((e=>(0,r.S)(e)))},l()}(t),function(e){const t=document.querySelector("#settings #username"),a=document.querySelector("#settings #password"),i=document.querySelector("#settings #new-password"),s=document.querySelector("#settings #re-password"),l=document.querySelector("#settings #edit-user"),d=()=>{(0,o.gL)(l,a.value.length>0&&(t.value.length>0||i.value.length>0&&s.value.length>0))};t.oninput=d,a.oninput=d,i.oninput=d,s.oninput=d,t.value=e.username||"",d(),l.onclick=()=>{((e,{username:t,newPassword:a,rePassword:i})=>(0,n.LK)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:{password:e,username:t,new_password:a,new_repassword:i}})}))(a.value,{username:t.value||void 0,newPassword:i.value||void 0,rePassword:s.value||void 0}).then((()=>m())).catch((e=>(0,r.S)(e)))}}(t)})).catch((e=>(0,r.S)(e))),function(){const e=document.querySelector("#settings #serial"),t=document.querySelector("#settings #edit-serial"),a=()=>{if(e&&t){c&&(e.value=`${c}`);const i=()=>{(0,o.gL)(t,!c&&e.value.length>0),(0,o.yx)(t,!c)};i(),e.oninput=i,(0,o.gL)(e,!c);const s=()=>{var t;(t=e.value,(0,n.LK)("/api/settings/sn",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serial:t})})).then((e=>{c=e.data.serial,m()})).catch((e=>(0,r.S)(e))).finally((()=>a()))};e.onkeyup=t=>{"Enter"===t.key&&(s(),e.blur())},t.onclick=s}};(0,n.LK)("/api/settings/sn",{headers:{"Content-Type":"application/json"}}).then((e=>{c=e.data.serial})).catch((e=>(0,r.S)(e))).finally((()=>a()))}(),function(){const e=document.getElementById("api_key-reset");e&&e.addEventListener("click",(()=>{(0,n.LK)("api/settings/apikey",{method:"POST"}).then((e=>{v(e.data["api-key"]),m()})).catch((e=>(0,r.S)(e)))}),!1)}(),p?.load(),e.updateConnection()},update:e=>{p?.update(),g(e,!1)}}},5493:(e,t,a)=>{"use strict";a.d(t,{Z:()=>v});var i=a(7780),s=a(6648),n=a(1972),o=a(5412),r=a(1351),l=a(5502);let d=null,c=null;const u=67108864;function p(e){return`
    • ${e}
    • `}const m=()=>{(0,s.LK)("api/logs").then((e=>{const t=e.data.files;if(d){const e=t.find((e=>e.name===d));e&&(!c||e.date>c)&&(c=e.date,e.size>u?function(){const e=document.querySelector("ul.logs"),t=(0,i.Iu)("logs.file-too-large",{size:(0,l.Z)("size",u)});e&&(e.innerHTML=p(t))}():(a=d,(0,s.iT)(`api/logs/${a}`).then((e=>{const t=document.querySelector("ul.logs");t&&(e.data?t.innerHTML=e.data.split("\n").map((e=>p(e))).join(""):t.innerHTML=p((0,i.Iu)("logs.empty-file")))}))))}var a})).catch((e=>(0,r.S)(e)))},v={load:()=>{(0,s.LK)("api/logs").then((e=>{const t=e.data.files,a=o.L.init("settings","log-list"),s=t.map((e=>e.name)),r=(0,i.Iu)("logs.select-file-placeholder");a.setOptions(s),a.select(r),a.onselect=e=>{!function(e){d=e,c=null,document.getElementById("download-log").onclick=()=>{(0,n.Z)(`api/logs/${e}`,e)},m()}(e)}})).catch((e=>(0,r.S)(e)))},update:m}},3707:(e,t,a)=>{"use strict";a.d(t,{Kp:()=>o,Vp:()=>r,vU:()=>l});const i=document.getElementById("prusa-toast"),s={info:10500,success:10500,warning:10500,error:10500};function n({title:e,message:t,type:a,onClose:n}){const o=((e,t,a)=>{const i=document.getElementById("toast"),s=document.importNode(i.content,!0),n=s.querySelector("article");return n.className=a,s.querySelector("p").innerHTML=e,s.querySelector(".toast-body").innerHTML=t,n})(e,t,a),r=()=>{i.removeChild(o),n?.()};o.querySelector("span").addEventListener("click",(e=>{e.preventDefault(),r()}));const l=s[a];l&&setTimeout(r,l),i.appendChild(o)}function o(e,t,a){n({type:"warning",title:e,message:t,onClose:a})}function r(e,t,a){n({type:"success",title:e,message:t,onClose:a})}function l(e,t,a){n({type:"error",title:e,message:t,onClose:a})}},5489:(e,t,a)=>{"use strict";a.d(t,{NA:()=>s,ZP:()=>o,zR:()=>n});var i=a(5502);const s=(e,t)=>{try{const a=e.split(".");let i=t;for(;a.length;)i=i[a.shift()];return i}catch(e){return}},n=(e,t)=>{document.querySelectorAll(`[data-type="${e}"]`).forEach((e=>{const a=e.dataset.where,n=a?s(a,t):t;e.innerHTML=(0,i.Z)(e.dataset.format,n)}))},o=n},2038:(e,t,a)=>{"use strict";a.d(t,{i:()=>o});var i=a(8236),s=a(646),n=a(4800);const o=e=>{e.addEventListener("change",(t=>{e.checked&&e.getAttribute("data-link-state")!==n.PT.READY&&(0,i.o)((t=>((e,t)=>{const a=document.getElementById("modal-confirm"),i=document.importNode(a.content,!0),n=i.getElementById("yes"),o=i.getElementById("no");return n.addEventListener("click",(a=>{a.preventDefault(),(0,s.H)(n,!0),(0,s.H)(o,!0),t.checked=!0,e()})),o.addEventListener("click",(()=>{t.checked=!1,e()})),i})(t,e)),{timeout:0,closeOutside:!1})}))}},7049:(e,t,a)=>{"use strict";a.d(t,{Z:()=>w});var i=a(6648),s=a(1351),n=a(646),o=a(3707),r=a(7780),l=a(5951),d=a(2038),c=a(5489),u=a(4800),p=a(8495);let m=!1,v=null;function g(e){const t=p.Z.getContext(),a=u.cG.includes(e),i=document.querySelector("#upld-remote-start-pt");if(i&&(i.setAttribute("data-link-state",e),a||(i.checked=!1),(0,n.H)(i,!a)),t.transfer?.id){y("uploading"),(0,c.ZP)("download",t.transfer);const e=document.querySelector("#upld-remote .progress-bar");(0,l.g)(e,t.transfer.progress||0)}else y("choose")}function h(e){const t=e.data;if(![200,201,204].includes(e.code))return(0,s.S)(e),void f();if(t){if("FROM_WEB"===t.type){y("uploading"),(0,c.ZP)("download",{...t,time_start:t.time_transferring?Math.round((new Date).getTime()/1e3)-t.time_transferring:null});const e=document.querySelector("#upld-remote .progress-bar");(0,l.g)(e,t.progress||0)}}else{if(m)return function(){const e=(0,r.Iu)("ntf.success"),t=(0,r.Iu)("ntf.upld-suc",{file_name:""});(0,o.Vp)(e,t)}(),void f();y("choose")}}const b=(e,t,a,s)=>{if("local"===t)return e=e.split("?")[0].split("&")[0].split("#")[0],(0,i.LK)(`/api/download/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e,destination:a,...s})}).then((e=>function(e){y("uploading");const t=document.querySelector("#upld-remote .progress-bar");(0,l.g)(t,0);const a=(0,r.Iu)("ntf.success"),i=(0,r.Iu)("ntf.upld-start");(0,o.Vp)(a,i)}())).catch((e=>h(e)));(0,o.vU)("Can't upload to "+t,"You can upload only to local storage via remote upload!")};function f(){y("choose"),function(e){const t=document.querySelector("#upld-remote .progress-bar");t&&(0,l.g)(t,e||0)}(0),(0,c.ZP)("download",{}),v=null}function y(e){m="uploading"==e;const t=document.getElementById("upld-remote");t&&t.setAttribute("data-state",e)}const w={init:function(e,t){const a=document.getElementById("upld-remote");if(a){const i=a.querySelector("#remote-url"),s=a.querySelector("#remote-file-name"),o=a.querySelector("#upld-file"),r=a.querySelector("#upld-remote-start-pt");r&&(0,d.i)(r),o.onclick=()=>b(i.value,e,t,{to_print:r.checked,rename:s.value});const l=()=>{(0,n.H)(o,""===i.value)};l(),i.oninput=l}g()},update:g,get isUploading(){return m}}},8463:(e,t,a)=>{"use strict";a.r(t),a.d(t,{context:()=>Ke,default:()=>Je});var i=a(7780);const s=500;let n=100,o=new Map;const r=(e,t)=>{o=e,n=t};function l(){const e=document.getElementById("graph");e&&(0==e.childElementCount&&function(){const e=document.getElementById("graph-template"),t=document.importNode(e.content,!0);document.getElementById("graph").appendChild(t),(0,i.ot)("graph")}(),o.forEach(((e,t)=>{!function(e,t){const a=(new Date).getTime();let i=[];if(e.length>1){let t=e[0],o=s-2.66*(a-t[0]-1e4)/1e3;for(let e=1;e1&&e[1][0]{var n=new XMLHttpRequest;const o=()=>{s(void 0)};!function(e,t){if(t){const a=e=>{if(!e.lengthComputable)return;let a=Math.round(e.loaded/e.total*100);t({loaded:e.loaded,total:e.total,percentage:a})};e.upload.addEventListener("progress",a,!1)}}(n,a.onProgress),n.addEventListener("load",(e=>{const t=function(e){function t(e){try{return JSON.parse(e)}catch{return}}return{status:e.status,statusText:e.statusText,ok:e.status>=200&&e.status<=299,data:t(e.response)}}(e.target);t.ok?i(t):s(t)}),!1),n.addEventListener("error",o,!1),n.addEventListener("abort",o,!1),n.open("PUT",e),a.print&&n.setRequestHeader("Print-After-Upload","?1"),n.setRequestHeader("Content-Type","text/x.gcode");for(const[e,t]of Object.entries((0,m.wU)()))n.setRequestHeader(e,t);n.send(t)}))};var g=a(2038),h=a(4800);let b=!1,f=0;function y(e,t,a,i,s){const n=document.querySelector(e);n&&(n.setAttribute("accept",i.join(", ")),n.onchange=()=>{if(n.files.length>0&&!b){let e=n.files[0];x(e,t,a,s?.checked||!1)}})}function w(e){b="uploading"===e;const t=document.getElementById("upld-direct");t&&t.setAttribute("data-state",e)}function k(e){f=e;const t=document.getElementById("upld-progress");t&&(t.innerHTML=`${e} %`)}const x=(e,t,a,s)=>{const n=["/api/v1/files",t,a,e.name].filter((e=>!!e)).join("/");e.arrayBuffer().then((t=>{w("uploading"),k(0),v(n,t,{onProgress:e=>{return t=e.percentage,w("uploading"),void k(t);var t},print:s}).then((()=>function(e){const t=(0,i.Iu)("ntf.success"),a=(0,i.Iu)("ntf.upld-suc",{file_name:e});(0,c.Vp)(t,a)}(e.display_name||e.name))).catch((t=>function(e,t){if(t)(0,u.S)(t);else{const t=(0,i.Iu)("ntf.error"),a=(0,i.Iu)("ntf.upld-unsuc",{file_name:e});(0,c.vU)(t,a)}}(e.display_name||e.name,t))).finally((()=>function(){const e=document.querySelector('#upld-direct input[type="file"]');e&&(e.value=""),k(0),w("choose")}()))}))};const z={init:function(e,t,a){(0,i.Iu)("upld.direct.choose",{query:"#upld-direct p",file:a.join(", ")}),function(e,t,a){const i=document.getElementById("upld-direct-start-pt");i&&(0,g.i)(i);const s=document.getElementById("drop-zone");s&&(document.ondragenter=e=>(0,p.yx)(s,!0),s.ondragleave=e=>(0,p.yx)(s,!1),document.ondrop=e=>(0,p.yx)(s,!1),y('#drop-zone input[type="file"]',e,t,a,i));y('#upld-direct input[type="file"]',e,t,a,i)}(e,t,a),b&&(w("uploading"),k(f))},update:function(e){const t=h.cG.includes(e),a=document.querySelector("#upld-direct-start-pt");a&&(a.setAttribute("data-link-state",e),t||(a.checked=!1),(0,p.H)(a,!t))},get isUploading(){return b},initInputByQuery:y};const S=class{get selected(){return this._selected}get isLocked(){return this._isLocked}lock(){this._isLocked=!0,this._root&&this._root.querySelectorAll("[data-tab-btn]").forEach((e=>{e.getAttribute("data-tab-btn")!==this.selected&&e.setAttribute("locked",!0)}))}unlock(){this._isLocked=!1,this._root&&this._root.querySelectorAll("[data-tab-btn]").forEach((e=>{e.hasAttribute("locked")&&e.removeAttribute("locked")}))}constructor(){this._root=null,this._selected=null,this._isLocked=!1}init(e){this._root=e,this._root&&(e.querySelectorAll("[data-tab-btn]").forEach((e=>{e.onclick=()=>{if(!this._isLocked){const t=e.getAttribute("data-tab-btn");t===this._selected||(this.closeTab(),this.openTab(t))}}})),this.openTab(this._selected,!0))}openTab(e){if(this._root&&e){const t=this._root.querySelector(`[data-tab="${e}"]`);t&&t.setAttribute("opened",!0);const a=this._root.querySelector(`[data-tab-btn="${e}"]`);a&&a.setAttribute("selected",!0),this._selected=e}}closeTab(){if(this._root&&this._selected){const e=this._root.querySelector(`[data-tab="${this._selected}"]`);e&&e.setAttribute("opened",!1);const t=this._root.querySelector(`[data-tab-btn="${this._selected}"]`);t&&t.setAttribute("selected",!1),this._selected=null}}},E=a(7049).Z,P=new S;function L(){z.isUploading?(P.openTab("direct"),P.lock()):E?.isUploading?(P.openTab("remote"),P.lock()):(P.unlock(),P.selected||P.openTab("direct"))}const N={init:function(e,t="",a){z.init(e,t,a),E?.init(e,t),P.init(document.getElementById("upld")),L()},update:function(e){z?.update(e),E?.update(e),L()},hide:function(e){(0,p.QH)(document.getElementById("upld"),e)}};var _=a(2451),I=a(5489),T=a(8236),j=a(8751);const C=e=>(0,m.LK)(e,{method:"POST",headers:{"Content-Type":"application/json"}}),A=e=>(0,m.LK)(`/api/v1/job/${e}/resume`,{method:"PUT"}).catch((e=>(0,u.S)(e))),D=(e,t)=>{(0,T.o)((a=>((e,t,a)=>{const s=document.getElementById("modal-question"),n=document.importNode(s.content,!0);n.getElementById("modal-question-label").innerText=(0,i.Iu)("msg.cancel");const o=n.getElementById("yes"),r=n.getElementById("no");return o.addEventListener("click",(i=>{i.preventDefault(),t.onConfirm(),(0,p.H)(o,!0),(0,p.H)(r,!0),(0,m.LK)(`/api/v1/job/${a}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}).catch((e=>{t.onError(),(0,u.S)(e)})),e()})),r.addEventListener("click",e),n})(a,t,e)),{timeout:0,closeOutside:!1})},B=(e,t)=>{e?(0,T.o)((e=>((e,t)=>{const a=document.getElementById("modal-confirm"),i=document.importNode(a.content,!0),s=i.getElementById("yes"),n=i.getElementById("no");return s.addEventListener("click",(a=>{a.preventDefault(),(0,p.H)(s,!0),(0,p.H)(n,!0),C(t).then((()=>(0,j.c4)("#dashboard"))).catch((e=>(0,u.S)(e))).finally((()=>e()))})),n.addEventListener("click",e),i})(e,t)),{timeout:0,closeOutside:!1}):C(t).then((()=>(0,j.c4)("#dashboard"))).catch((e=>(0,u.S)(e)))},O=()=>(0,m.LK)("/api/job",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:"cancel"})}).catch((e=>(0,u.S)(e)));var q=a(1972);const M=(e,t,a)=>{(0,q.Z)(e,t),a()},R=(e,t,a,s,n=!1)=>{const o=document.getElementById("modal-question"),r=document.importNode(o.content,!0);r.getElementById("modal-question-label").innerText=n?(0,i.Iu)("msg.del-folder",{folder_name:a}):(0,i.Iu)("msg.del-proj",{file_name:a});const l=r.getElementById("yes"),d=r.getElementById("no");return d.addEventListener("click",e),l.addEventListener("click",(a=>{a.preventDefault(),(0,p.H)(l,!0),(0,p.H)(d,!0),(0,m.LK)(t,{method:"DELETE",headers:{force:"?1"}}).then((()=>s&&s())).catch((e=>(0,u.S)(e))).finally((t=>e()))})),r},H=(e,t,a)=>{(0,T.o)((i=>R(i,e,t,a)),{timeout:0,closeOutside:!1})},U=(e,t)=>{(0,T.o)((a=>((e,t,a)=>{const i=document.getElementById("modal-file-name"),s=document.importNode(i.content,!0),n=s.getElementById("modal-file-name__input"),o=s.getElementById("yes"),r=s.getElementById("no");return r.addEventListener("click",e),o.addEventListener("click",(i=>{i.preventDefault();const s=n.value;if(s){const i=t(s);(0,p.H)(o,!0),(0,p.H)(r,!0),(0,m.LK)(i,{method:"PUT",headers:{"create-folder":"?1"}}).then((()=>a&&a())).catch((e=>(0,u.S)(e))).finally((t=>e()))}})),s})(a,e,t)),{timeout:0,closeOutside:!1})};function K(e){return`inset(${100-e}% 0% 0% 0%)`}var Z=a(5951);const V={},F=()=>{V.title=null,V.questionChildren=null,V.yes=null,V.no=null,(0,j.g9)(V.next)},$={load:()=>{V.title||(0,j.c4)("#dashboard"),document.getElementById("title-status-label").innerHTML=V.title;const e=document.getElementById("question"),t=V.questionChildren;Array.isArray(t)?t.forEach((t=>e.appendChild(t))):e.innerHTML=t;for(let e of["yes","no"]){const t=document.getElementById(e),a=V[e];t.querySelector("p").innerHTML=V[e+"Text"],t.addEventListener("click",(e=>{e.stopPropagation(),a(F)}))}}};(0,i.Iu)("exp-times.exp-time"),(0,i.Iu)("exp-times.inc"),(0,i.Iu)("exp-times.layer-1st"),(0,i.Iu)("exp-times.profile");const G=e=>{const t=e.querySelector("img");(0,p.gL)(e,!1),t&&(t.setAttribute("data-src",t.src),t.src=document.querySelector(".loading-overlay img").src)},W=e=>{const t=e.querySelector("img");if((0,p.gL)(e,!0),t){const e=t.getAttribute("data-src");e&&(t.src=e,t.setAttribute("data-src",""))}};var Y=a(8495);let J=null,Q=null;function X(e,t=!1){const a=ee(e,t);J&&J.state!==e.state&&(J=null),a&&te(e,t)}function ee(e,t){const a=document.getElementById("job");if(!a)return!1;const i=t?!!e.files.selected:!!e.job?.id;return(0,p.yx)(a,i),i}function te(e,t){const a=t?e.files.selected:e.job,s=a?.file?.resource;e.state;var n;if(a.file?(0,p.Zk)():(0,p.QP)(),function(e,t){const a=document.querySelector(".progress-bar"),i=document.querySelector(".progress-pct"),s=document.querySelector(".preview-img-wrapper"),n=void 0!==t;(function(e,t,a){if(!e)return;const i=t?.url&&t.ready?t.url:document.querySelector(".thumbnail-fallback")?.src;if(e.getAttribute("data-src")!==i){for(;e.firstChild;)e.removeChild(e.firstChild);e.setAttribute("data-src",i);const t=document.createElement("div");t.className="progress-img";const s=document.createElement("img");s.src=i,s.className="background",t.appendChild(s);const n=document.createElement("img");n.src=i,n.className="foreground",n.style.clipPath=K(a??100),t.appendChild(n),e.appendChild(t)}else{const t=e.querySelector(".foreground");t&&(t.style.clipPath=K(a))}})(s,e,t),(0,Z.g)(a,t,"top"),(0,p.yx)(a,n),(0,p.yx)(i,n)}(a.thumbnail,a.progress),n=t,(0,p.QH)(document.querySelector("#job #pnt-time"),n),(0,p.QH)(document.querySelector("#job #rem-time"),n),(0,I.ZP)("job",a),s&&a.file){const s=t?null:a.id;!function(e,t,a){const i=t.file;(function(e,t){const a=document.querySelector("#job #stop"),i=document.querySelector("#job-close"),s=h.PT.fromApi(e),n=h.cG.includes(s),o=!J&&h.Dt.includes(e),r=Y.Z.getContext();if((0,p.gL)(a,o),a&&t){const i=t||!1;(0,p.yx)(a,i),a.onclick=()=>{D(t,{onConfirm:()=>{J={code:"stop",state:e},(0,p.gL)(a,!1)},onError:()=>J=null})}}i&&((0,p.yx)(i,n||!t),i.onclick=t?O:()=>r.selectFile(null))})(e,a),function(e,t,a){const i=document.querySelector("#job #start"),s=h.cG.includes(e);i&&((0,p.yx)(i,s),(0,p.gL)(i,s),i.onclick=()=>B(e!==h.PT.READY,t.resource))}(e,i),ae(e,i,a),function(e,t,a){const i=document.querySelector("#job #download");if(i){const e=!a&&t.refs?.download&&(!Q||Q===t.refs.download),s=t.display_name||t.name;(0,p.yx)(i,e),e&&(i.onclick=()=>{Q=t.refs.download,G(i),M(t.refs.download,s,(()=>{Q=null,W(i)}))})}}(0,i,a),!a||(function(e,t,a){const i=document.querySelector(a),s=e===h.PT.PRINTING;(0,p.yx)(i,s),(0,p.gL)(i,!J&&s),i&&(i.onclick=()=>{(0,p.gL)(i,!1),J={code:"pause",state:e},(e=>(0,m.LK)(`/api/v1/job/${e}/pause`,{method:"PUT"}).catch((e=>(0,u.S)(e))))(t).catch((()=>J=null))})}(e,a,"#job #pause"),function(e,t){const a=document.querySelector("#job #resume"),i=e===h.PT.PAUSED;(0,p.yx)(a,i),(0,p.gL)(a,!J&&i),a&&(a.onclick=()=>{(0,p.gL)(a,!1),J={code:"resume",state:e},A(t).catch((()=>J=null))})}(e,a))}(e.state,a,s),(0,I.ZP)("file",a.file),function(e,t){const a=(0,i.Iu)("prop.na");document.getElementById("job").querySelectorAll(".job-details .job-prop").forEach((e=>{const t=e.querySelector(".job-prop-grid").children;let i=!0;for(const e of t){var s=e.querySelector("[data-type]")?.innerHTML.trim()===a;(0,p.QH)(e,s),s||(i=!1)}(0,p.QH)(e,i)}))}()}}function ae(e,t,a){const i=document.querySelector("#job #delete");if(i){const s=t.display_name||t.name;(0,p.gL)(i,!t.readOnly&&t.resource),(0,p.yx)(i,!a||e===h.cG.includes(e)),i.onclick=()=>{H(t.resource,s,(()=>{a||Ke.selectFile(null)}))}}}p.QP,p.Zk;const ie=e=>[...e].filter((e=>!!e)).map((e=>e.trim())).join(" - "),se=e=>{if(!e.printer)return;const t=e.state;X(e),N.update(t),_.Z.update(e,null)},ne={load:e=>{(0,i.Iu)("home.link",{query:"#title-status-label"}),l(),se(e),_.Z.update(e,null),_.Z.updateCurrentCamera(),(0,m.LK)("/api/v1/storage").then((t=>{const a=t.data.storage_list.find((e=>e.available&&!e.read_only));if(a){const t=a.path.replace("/","");N.init(t,"",e.fileExtensions)}}))},update:se};var oe=a(5502);const re=function(e,t="smooth"){if(!e)return;const a=e.getBoundingClientRect(),i=document.body.getBoundingClientRect(),s=a.top-(i.top+function(){const e=document.querySelector(".header");return e&&"sticky"===getComputedStyle(e).position?e.getBoundingClientRect().height:0}());(a.bottom>window.innerHeight||a.top<0)&&window.scroll({top:s,behavior:t})};var le=a(5537);const de=e=>{const t=(0,le.Z)(e).querySelector(".kebab"),a=t.querySelector(".kebab-menu"),i=t.querySelector("ul");a.addEventListener("click",(e=>{e.stopPropagation(),function(e){return e&&e.classList.contains("open")}(i)?ce(i):function(e,t){e.classList.add("open"),(0,p.Ti)((()=>ce(e)),e,t)}(i,a)})),i.querySelectorAll("li").forEach((e=>{e.addEventListener("click",(()=>ce(i)))}))};function ce(e){e.classList.remove("open")}const ue=e=>{const t=document.querySelectorAll(".storage-select-content li");t&&t.forEach((t=>t.setAttribute("selected",t.getAttribute("data-storage")===e)))},pe=e=>{const t=document.querySelector("#node-storage .storage-select-btn-inner");t&&(t.innerHTML=e)},me=(e,t)=>{e&&t&&(t.classList.toggle("open"),(0,p.Ti)((()=>{t?.classList.remove("open")}),e,t))},ve=e=>{const t=document.querySelector(".node-storage-space");if(!t)return;const a=e.available&&!!e.totalSpace;if((0,p.yx)(t,a),a){const a=e.freeSpace,s=e.totalSpace,n=s-a,o=Math.round(100*(s?n/s:0)),r=(0,i.Iu)("prop.storage-used-space",{used:(0,oe.Z)("size",n),free:(0,oe.Z)("size",a),total:(0,oe.Z)("size",s)});(0,Z.g)(t,o),document.getElementById("storage-pct").innerHTML=(0,oe.Z)("percent",o),document.getElementById("storage-space").innerHTML=r}},ge=()=>{const e=document.querySelector("#node-storage .storage-select-btn");e&&(e.onclick=t=>{t.stopPropagation(),me(e,dropdownContent)})},he=(e,t,a,i=!1)=>{const s=document.querySelector(".storage-select-content");document.querySelectorAll(".storage-select-content li").forEach((i=>{const n=i.getAttribute("data-storage");let o=!1;if(n in e){const r=e[n],l=i.querySelector("p");o=!0,r.name&&(l.innerText=r.name),i.setAttribute("selected",n===t),i.onclick=e=>{e.stopPropagation(),pe(i.innerHTML),ue(n),s.classList.remove("open"),ve(r),a(n)}}(0,p.yx)(i,o)})),i&&ve(e[t])},be="FOLDER",fe="PRINT_FILE",ye="FIRMWARE",we=["name","date","size"];let ke=null;const xe={origin:null,current_path:[],storages:{},files:[],eTag:null,sort:{field:"date",order:"desc"}};function ze(){const e=xe.origin;return xe.storages[e]}function Se(){return xe.current_path.map((e=>e.path)).join("/")}function Ee(e){const t=ze(),a=Se();return Pe(t.path,a,e)}function Pe(e,t,a){const i=["/api/v1/files",e,t,a].filter((e=>!!e)).join("/");return a?i:`${i}/`}const Le=(e={})=>{(0,m.LK)("/api/v1/storage",{}).then((t=>{const a=t.data?.storage_list;let i=!!e.redraw,s=!!e.redraw;if(a&&a.forEach((e=>{const t=e.type,a={name:e.name,path:e.path.replaceAll("/",""),available:e.available,readOnly:e.read_only,freeSpace:e.free_space,totalSpace:e.total_space};if(t in xe.storages){const e=xe.storages[t];e.available!==a.available&&(i=!0),e.freeSpace!==a.freeSpace&&xe.origin===t&&(s=!0)}else i=!0,s=!0;xe.storages[t]=a})),!xe.origin){let e=Object.keys(xe.storages).find((e=>xe.storages[e].available));e||(e=Object.keys(xe.storages).find((()=>!0))),e&&Be(e)}i&&he(xe.storages,xe.origin,Be,s)}))},Ne=(e={})=>{if(!ze())return;const t=Ee();let a=xe.eTag;e.force&&(xe.eTag=null,a=null,function(e){const t=ze(),a=Se();N.init(t.path,a,e?.fileExtensions),N.hide(!!t?.readOnly)}(Y.Z.getContext())),(0,m.LK)(t,{headers:{"If-None-Match":a}}).then((i=>{if(t!==Ee())return;const s=i.eTag;if(!s||s!==a){xe.eTag=s;const t=i.data.children||[];if(!s&&!e.force){const e=(e,t)=>e.display_name.localeCompare(t.display_name);if(JSON.stringify([...xe.files].sort(e))===JSON.stringify(t.sort(e)))return}xe.files=t,_e(),Ie()}}))},_e=()=>{const e=document.getElementById("files");if(e){for(;e?.firstChild;)e.removeChild(e.firstChild);e.appendChild(function(){const e=[ze().name,...xe.current_path.map((e=>e.name))],t=Te("node-current",e.pop()||"Root");t.getElementById("path").innerHTML=`${e.join("/")}/`;const a=t.getElementById("create");a&&(a.onclick=e=>{e.stopPropagation(),U(Ee)});t.querySelector("#sort-by-name p").innerText=(0,i.Iu)("sort.by-name"),t.querySelector("#sort-by-date p").innerText=(0,i.Iu)("sort.by-date"),t.querySelector("#sort-by-size p").innerText=(0,i.Iu)("sort.by-size");return t.querySelector(`#sort-by-${xe.sort.field}`).classList.add(xe.sort.order),we.forEach((e=>{t.getElementById(`sort-by-${e}`).addEventListener("click",(t=>{const a=document.getElementById(`sort-by-${e}`);document.getElementById(`sort-by-${xe.sort.field}`).classList.remove(xe.sort.order);const i=xe.sort.field===e&&"asc"===xe.sort.order?"desc":"asc";a.classList.add(i),xe.sort.field=e,xe.sort.order=i,_e(),Ie()}),!1)})),t}()),xe.current_path.length&&e.appendChild(function(){const e=Te("node-up","",(()=>{xe.current_path.pop(),_e(),Ne({force:!0})}));return(0,i.ot)(e),e}())}},Ie=()=>{const e=document.getElementById("files");let t;if(e)for(let a of(e=>(e.sort(((e,t)=>{if(e.type===be&&t.type!==be)return-1;if(e.type!==be&&t.type===be)return 1;const a="desc"===xe.sort.order?-1:1;switch(xe.sort.field){case"date":return a*((e.m_timestamp||0)-(t.m_timestamp||0));case"size":return a*((e.size||0)-(t.size||0));default:return a*e.display_name.localeCompare(t.display_name)}})),e))(xe.files)){switch(a.type.toUpperCase()){case be:t=je(a,{files:void 0,folders:void 0});break;case fe:t=Ae(a);break;case ye:t=De(a,"firmware");break;default:t=De(a,"file")}e.appendChild(t)}};function Te(e,t,a){const i=document.getElementById(e).content,s=document.importNode(i,!0);return a&&s.querySelector(".node").addEventListener("click",(e=>{a(e),e.preventDefault()})),s.querySelector("#name")?.appendChild(document.createTextNode(t)),s}function je(e,t){const a=e.display_name||e.name,i=e.name,s=Ee(i),n=Te("node-folder",a,(()=>{xe.current_path.push({path:i.replace("/",""),name:a}),_e(),Ne({force:!0})})),o=[t?.files?`${t.files} files`:null,t?.folders?`${t.folders} folders`:null].filter((e=>null!=e)).join(" | ");n.getElementById("details").innerHTML=o;const r=n.getElementById("delete");(0,p.H)(r,e.read_only||e.ro),r&&(r.onclick=e=>{var t,i,n;e.stopPropagation(),t=s,i=a,n=()=>{},(0,T.o)((e=>R(e,t,i,n,!0)),{timeout:0,closeOutside:!1})});const l=n.getElementById("rename");return l&&(l.onclick=e=>{e.stopPropagation(),console.log("renameFolder")}),n}const Ce=e=>{!function(e){const t=Y.Z.getContext(),a=t.files.selected,i=Se(),s=Ee(e.name);if(a===i)return;t.selectFile({...e,path:i,resource:s});const n=document.getElementById("job");n&&re(n)}(e)};function Ae(e){const t=Te("node-file",e.display_name||e.name,(t=>Ce(e))),a=t.querySelector(".node-details");a.querySelectorAll(".details").forEach((t=>{(0,i.ot)(t);const s=(0,I.NA)(t.dataset.where,e);if(s){const e=(0,oe.Z)(t.dataset.format,s);t.querySelector("p[data-value]").innerHTML=e}else a.removeChild(t)}));const s=e?.refs?.thumbnail;if(s){const a=t.querySelector("img.node-img");a.setAttribute("data-src",e.date?`${s}?ct=${e.date}`:s),ke.observe(a)}return de(t),function(e,t){const a=Ee(e.name),i=e.display_name||e.name,s=t.getElementById("details");s&&(s.onclick=t=>{Ce(e)});const n=t.getElementById("start");n&&(n.onclick=e=>{e.stopPropagation(),console.log("startPrint")});const o=t.getElementById("rename");o&&(o.onclick=e=>{e.stopPropagation(),console.log("renameFile")});const r=t.getElementById("delete");r&&((0,p.gL)(r,!(e.read_only||e.ro)),r.onclick=e=>{H(a,i),e.stopPropagation()});const l=t.getElementById("download");l&&((0,p.gL)(l,e.refs?.download),l.onclick=t=>{G(l),M(e.refs?.download,i,(()=>W(l))),t.stopPropagation()})}(e,t),(0,i.ot)(t),t}function De(e,t){const a=Te("node-file",e.display_name||e.name,(e=>{})),s=a.querySelector(".node-details");s.querySelectorAll(".details").forEach((t=>{(0,i.ot)(t);const a=(0,I.NA)(t.dataset.where,e);if(a){const e=(0,oe.Z)(t.dataset.format,a);t.querySelector("p[data-value]").innerHTML=e}else s.removeChild(t)}));const n=a.querySelector("img.node-img");if(t){const e=n.getAttribute(`data-${t}`);e&&(n.src=e),ke.observe(n)}else(0,p.yx)(n,!1);return function(e){["details","start","rename","delete","download"].forEach((t=>{const a=e.getElementById(t);a&&(0,p.yx)(a,!1)}))}(a),a}function Be(e){if(e in xe.storages){const t=xe.storages[e];xe.origin=e,xe.current_path=[],_e(),t.available&&Ne({force:!0})}}const Oe={load:function(e){if(xe.eTag=null,(0,i.Iu)("proj.link",{query:"#title-status-label"}),!ke){ke=new IntersectionObserver(((e,t)=>{e.forEach((e=>{if(e.isIntersecting){const t=e.target.getAttribute("data-src");(0,m.gJ)(t).then((({url:t})=>{e.target.src=t})).catch((()=>{}))}}))}),{rootMargin:"0px 0px 50px 0px",threshold:0})}e||(e=Y.Z.getContext());const t=e.files.selected;if(t){(function(e,t){if(!e||!t)return null;let a=xe.files.find((t=>t.origin===e));const i=t.split("/").filter((e=>e)).slice(1);for(const e of i){if(!a)break;a=a.children.find((t=>t.name===e))}return"machinecode"===a?.type?a:null})(t.origin,t.path)||e.selectFile(null)}X(e,!0),ge(),Le({redraw:!0}),Ne({force:!0})},update:e=>{const t=e.state;Le(),Ne(),X(e,!0),N.update(t)},getApiPath:Pe};let qe=0,Me=null;const Re=()=>{const e=e=>{const t=document.getElementById("offline-screen"),a=document.importNode(t.content,!0);return["not-responsing","please-wait"].forEach((e=>{const t=a.getElementById(`offline-screen.${e}`);t&&(t.innerHTML=(e=>{switch(e){case"not-responsing":return(0,i.Iu)("msg.offline.not-responsing");case"please-wait":return(0,i.Iu)("msg.offline.please-wait");default:return""}})(e))})),Me={node:a,close:()=>{e(),Me=null}},a};(0,T.o)((t=>e(t)),{timeout:0,closeOutside:!1,className:"offline-screen"})},He=({link:e,isConnected:t})=>{const a=["connect"];for(const t in e){const{ok:s,message:n}=e[t],o=document.getElementById(`conn-status-${t}-msg`);o&&(o.innerHTML=s&&"connect"===t?"ok"===n.toLowerCase()?(0,i.Iu)("conn.connect.linked"):(0,i.Iu)("conn.connect.not-linked"):n);const r=document.getElementById(`conn-status-${t}`),l=r.querySelector(".icon-success"),d=r.querySelector(".icon-warning"),c=s&&!a.includes(t);(0,p.QH)(r,c),c||((0,p.QH)(l,!s),(0,p.QH)(d,s))}const s=e=>{qe<3?qe+=1:(e?Re():Me.close(),qe=0)};t?Me&&s(!1):!Me&&s(!0)};const Ue=e=>{return{resource:e.resource??(t=e.path,a=e.name,`${t}${t.endsWith("/")?"":"/"}${a}`),name:e.name,displayName:e.display_name??e.name,path:e.path,displayPath:e.display_path??e.path,size:e.size,refs:{download:e.refs?.download,icon:e.refs?.icon,thumbnail:e.refs?.thumbnail},lastModified:e.m_timestamp||0,meta:{filamentType:e.meta?.filament_type,layerHeight:e.meta?.layer_height,estimatedPrintTime:e.meta?.estimated_print_time},readOnly:e.read_only||e.ro};var t,a},Ke=new class{constructor(){this.state=void 0,this.printer=void 0,this.job=void 0,this.transfer=void 0,this.version=void 0,this.storage=[],this.currentStorage=void 0,this.telemetry={temperature:{nozzle:{current:0,target:0},bed:{current:0,target:0}}},this.flow=0,this.speed=0,this.fan={hotend:0,print:0},this.link={connect:{ok:!0,message:"OK",settings:{hostname:"",tls:!0,port:0}},printer:{ok:!0,message:"OK",settings:{port:"",baudrate:115200}}},this.files={location:"/",selected:{file:void 0,thumbnail:void 0}},this.fileExtensions=[".gcode"],this.updateConnection()}updateConnection(){return(0,m.LK)("/api/connection",{method:"GET"}).then((e=>{this.link.connect.settings={hostname:e.data.connect.hostname,port:e.data.connect.port,tls:e.data.connect.tls},this.link.connect.registration=e.data.connect.registration,this.link.printer.settings={port:e.data.current.port,baudrate:e.data.current.baudrate}}))}update({status:e,printer:t}){e?.ok&&e.payload&&this.updateStatus(e.payload.data),t&&this.updatePrinter(t)}updateStatus(e){this.updateTelemetry(e.printer),this.updateJob(e.job),this.updateStorage(e.storage),this.updateTransfer(e.transfer),this.updateCamera(e.camera)}updatePrinter(e){this.printer={name:e.name,location:e.location,farmMode:e.farm_mode,nozzleDiameter:e.nozzle_diameter,minExtrusionTemp:e.min_extrusion_temp,serial:e.serial,hostname:e.hostname,port:e.port}}updateTelemetry(e){this.state=h.PT.fromApi(e.state.toUpperCase()),this.telemetry={temperature:{nozzle:{current:e.temp_nozzle,target:e.target_nozzle},bed:{current:e.temp_bed,target:e.target_bed}},axis:{x:e.axis_x,y:e.axis_y,z:e.axis_z},flow:e.flow,speed:e.speed,fan:{hotend:e.fan_hotend,print:e.fan_print}},this.link.connect.message=e.status_connect.message,this.link.connect.ok=e.status_connect.ok,this.link.printer.message=e.status_printer.message,this.link.printer.ok=e.status_printer.ok}updateJob(e){const t=this.job?.id||null,a=e?.id||null;if(t!==a){if(!a)return void(this.job=void 0);(0,m.LK)("/api/v1/job").then((e=>{const t=e.data;t.id===this.job.id&&(this.job={...this.job,file:Ue(t.file),thumbnail:{source:!t.file.refs?.thumbnail,ready:!t.file.refs?.thumbnail,url:void 0}},this.job.thumbnail.ready||(0,m.gJ)(this.job.file.refs.thumbnail).then((({url:e})=>{this.job.id===a&&(this.job.thumbnail.url=e)})).catch((e=>console.error("Failed to fetch thumbnail",e))).finally((()=>this.job.thumbnail.ready=!0)))})).catch((e=>(0,u.S)(e)))}if(a){const t=this.job?.timeRemaining,s=e.time_remaining,n=t!=s?(i=s,Math.round(Date.now()/1e3)+i):this.job?.estimatedEnd;this.job={file:void 0,...this.job,timePrinting:e.time_printing,id:a,progress:e.progress,timeRemaining:e.time_remaining,estimatedEnd:n}}var i}updateStorage(e){Object.keys(e).forEach((e=>{const t={path:e.path,name:e.name,readOnly:e.readOnly,freeSpace:e.freeSpace},a=this.storage.findIndex((e=>e.path===t.path));-1!==a?this.storage[a]=t:this.storage.push(t)}))}updateTransfer(e){const t=this.transfer?.id||null,a=e?.id||null;if(t!==a){if(!a)return void(this.transfer=void 0);(0,m.LK)("/api/v1/transfer").then((e=>{const t=e.data;this.transfer={...this.transfer,file:{displayName:t.display_name??t.name,path:t.path,size:t.size,toPrint:t.to_print}}})).catch((e=>(0,u.S)(e)))}if(a){const t=Math.round(Date.now()/1e3),i=this.transfer?.file?.size||0,s=e.time_transferring,n=void 0!==s?t-s:void 0,o=e.data_transferred,r=i-o,l=s>0&&r>=0?r/(o/s):void 0;this.transfer={...this.transfer,timeTransferring:s,timeStarted:n,timeRemaining:l,id:a,progress:e.progress,dataTransferred:o}}}updateCamera(e){this.camera={id:e?.id}}selectFile(e){if(!e)return void(this.files.selected=null);const t=e.refs?.thumbnail;if(this.files.selected={file:Ue(e),thumbnail:{source:t,ready:!t,url:void 0},timeRemaining:e.meta?.estimated_print_time},!e.meta){const e=this.files.selected.file.resource;(0,m.LK)(e).then((t=>{const a=Ue({...t.data,resource:e});this.files.selected.file.resource===e&&(this.files.selected.file.meta=a.meta,this.files.selected.timeRemaining=a.meta?.estimatedPrintTime)}))}t&&(0,m.gJ)(t).then((({url:e})=>{t===this.files.selected.thumbnail.source&&(this.files.selected.thumbnail.url=e)})).catch((()=>{})).finally((()=>{t===this.files.selected.thumbnail.source&&(this.files.selected.thumbnail.ready=!0)}))}},Ze=e=>{const t=e.load;return e.load=()=>{(()=>{const e=document.getElementById("title-printer");e&&(e.innerHTML=Ve())})(),t(Ke)},e},Ve=()=>(e=>ie([e.printer?.location,e.printer?.name]))(Ke);let Fe=ne;const $e={routes:[{path:"dashboard",html:a(2373),module:Ze(ne),getTitle:()=>(0,i.Iu)("home.link")},{path:"question",html:a(5198),module:Ze($)},{path:"files",html:a(7189),module:Ze(Oe),getTitle:()=>(0,i.Iu)("proj.storage")},{path:"settings",html:a(2936),module:Ze(a(2957).Z),getTitle:()=>(0,i.Iu)("settings.title")},{path:"control",html:a(3478),module:Ze(a(732).Z),getTitle:()=>(0,i.Iu)("control.link")},{path:"cameras",html:a(5464),module:Ze(a(2451).Z),getTitle:()=>(0,i.Iu)("cameras.link")}].filter((e=>null!=e)),init:e=>{Ke.update(e),Ge()},update:e=>{Ke.update(e);const t=(0,j.nC)(),a=(e=>{const t=e.state;let a=(0,h.ny)(t);switch(t){case"IDLE":return"";case"PRINTING":return`${a} ${Math.round(e?.job?.progress||0)}%`;default:return a}})(Ke);var i;document.title=(i=[a,$e.routes.find((e=>e.path===t)).getTitle()],ie([...i,Ve(),"PrusaLink"])),(0,I.zR)("telemetry",Ke),(e=>{const t=e,a=document.getElementById("printer-status");a&&(a.innerHTML=(0,h.ny)(t))})(Ke.state),We(Ke.telemetry),Ye()},setConnected:e=>{He({link:Ke.link,isConnected:e})},setModule:e=>{Fe=e},getContext:()=>Ke},Ge=()=>{let e=new Map([["temp-line-blue",[]],["temp-line-orange",[]]]);r(e,300),l()},We=e=>{const t=(new Date).getTime();d("temp-line-blue",[t,e.temperature.bed.current]),d("temp-line-orange",[t,e.temperature.nozzle.current]),l()},Ye=()=>{Fe&&Fe.update&&Fe.update(Ke)},Je=$e},8495:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});const i=a(8463).default},8751:(e,t,a)=>{"use strict";a.d(t,{c4:()=>l,g9:()=>d,nC:()=>o});var i=a(7780),s=a(8495);const n=e=>{const[t,a]=e.split("#");return a||"dashboard"},o=()=>n(window.location.hash);function r(e,t){const a=n(e),o=s.Z.routes.find((e=>e.path===a));if(!o)return!1;t&&function(e){window.location.hash!=e&&history.pushState(null,"",e)}("#"+a);const r=document.getElementById("root");var l;return function(e,t){t.innerHTML="",(new DOMParser).parseFromString(e,"text/html").body.childNodes.forEach((e=>t.appendChild(e)))}(o.html,r),(0,i.ot)(r),function(e){const t=document.querySelector(`a[href="#${e}"]`);t&&(document.getElementById("navbar").childNodes.forEach((e=>{"li"===e.nodeName.toLowerCase()&&e.classList.remove(["active"])})),t.parentNode.className="active")}(a),(l=o.getTitle)&&(document.title=l()),window.scrollTo({top:0}),o.module.load(),s.Z.setModule(o.module),!0}const l=e=>r(e,!0),d=e=>r(e,!1)},4800:(e,t,a)=>{"use strict";a.d(t,{Dt:()=>o,PT:()=>s,cG:()=>n,ny:()=>r});var i=a(7780);const s={UNKNOWN:"UNKNOWN",IDLE:"IDLE",READY:"READY",BUSY:"BUSY",PRINTING:"PRINTING",PAUSED:"PAUSED",FINISHED:"FINISHED",STOPPED:"STOPPED",ERROR:"ERROR",ATTENTION:"ATTENTION",fromApi:e=>{switch(e){case"IDLE":return s.IDLE;case"READY":return s.READY;case"BUSY":return s.BUSY;case"PRINTING":return s.PRINTING;case"PAUSED":return s.PAUSED;case"FINISHED":return s.FINISHED;case"STOPPED":return s.STOPPED;case"ERROR":return s.ERROR;case"ATTENTION":return s.ATTENTION;default:return console.error(`Unsupported state: ${e}`),s.UNKNOWN}}},n=[s.IDLE,s.READY,s.FINISHED],o=[s.PRINTING,s.PAUSED],r=e=>{switch(e){case s.IDLE:return(0,i.Iu)("prop.st-idle");case s.READY:return(0,i.Iu)("prop.st-ready");case s.BUSY:return(0,i.Iu)("prop.st-busy");case s.PRINTING:return(0,i.Iu)("prop.st-printing");case s.PAUSED:return(0,i.Iu)("prop.st-paused");case s.FINISHED:return(0,i.Iu)("prop.st-finished");case s.STOPPED:return(0,i.Iu)("prop.st-stopped");case s.ERROR:return(0,i.Iu)("prop.st-error");case s.ATTENTION:return(0,i.Iu)("prop.st-attention");default:return console.error(`Unsupported state: ${e}`),(0,i.Iu)("prop.st-unknown")}}},4977:e=>{"use strict";e.exports=JSON.parse('{"langs":["cs","de","en","es","fr","it","kr","lt","nl","pl","sk"],"texts":{"home":{"link":["Přehled","Dashboard","Dashboard","Panel principal","Tableau de bord","Dashboard","대쉬보드","Darbastalis","Dashboard","Panel kontrolny","Prehľad"],"title":["Stav tiskárny","Druckerstatus","Printer Status","Estado de la impresora","État de l\'imprimante","Stato della stampante","프린터 상태","Spausdintojo būsena","Printerstatus","Stan drukarki","Stav tlačiarne"]},"proj":{"link":["Úložiště","Projekte","Storage","Proyectos","Projets","Progetti","저장장치","Saugykla","Opslag","Projekty","Úložisko"],"storage":["Úložiště","Speicher","Storage","Almacenamiento","Stockage","Archivio","저장장치","Saugykla","Opslag","Projekty","Úložisko"],"add-from":{"title":["Nahrát soubor z","Datei hinzufügen von","Add file from","Añadir archivo desde","Ajouter un fichier à partir de","Aggiungi file da","에서 파일 추가하기","Pridėti failą iš","Bestanden toevoegen van","Dodaj plik z","Nahrať súbor z"],"local":["Lokálního úložiště","Lokaler Speicher","Local storage","Almacenamiento local","Stockage local","Archivio locale","로컬 저장장치","Vietinis saugykla","Lokale opslag","Magazyn lokalny","Lokálneho úložiska"],"remote":["Vzdálené url","Remote-URL","Remote url","Eliminar url","URL distante","Url remoto","원격 URL","Nuotolinis URL","Externe URL","Zdalny URL","Vzdialenej URL"]},"details":["Detaily souboru","Datei-Details","File details","Detalles del archivo","Détails du fichier","Dettagli file","파일 상세정보","Failo informacija","Bestandseigenschappen","Szczegóły pliku","Detaily súboru"],"del":["Smazat","Datei löschen","Delete","Borrar archivo","Supprimer le Fichier","Elimina File","삭제","Ištrinti","Verwijderen","Usuń plik","Zmazať"],"download":["Stáhnout","Herunterladen","Download","Descargar","Télécharger","Download","다운로드","Atsisiųsti","Downloaden","Pobierz","Stiahnuť"],"up-folder":["nadřazená složka","übergeordneter Ordner","parent folder","carpeta contenedora","dossier parent","cartella superiore","상위폴더","tėvinis aplankas","Bovenliggende map","folder nadrzędny","nadradený priečinok"]},"control":{"link":["Ovládání","Kontrolle","Control","Control","Contrôle","Controllo","제어","Valdymas","Bediening","Sterowanie","Ovládanie"],"coordinates":["Souřadnice tiskárny","Drucker-Koordinaten","Printer Coordinates","Coordenadas de la Impresora","Coordonnées de l\'imprimante","Coordinate Stampante","프린터 좌표","Spausdintojo koordinatės","Printercoördinaten","Współrzędne drukarki","Súradnice tlačiarne"],"axis":{"x":["Osa X","X-Achse","X axis","Eje X","axe X","Asse X","X축","X ašis","X-as","Oś X","Os X"],"y":["Osa Y","Y-Achse","Y axis","Eje Y","axe Y","Asse Y","Y축","Y ašis","Y-as","Oś Y","Os Y"],"z":["Osa Z","Z-Achse","Z axis","Eje Z","axe Z","Asse Z","Z축","Z ašis","Z-as","Oś Z","Os Z"]},"stepper-motors":["Krokové motory","Schrittmotoren","Stepper Motors","Motores Paso-a-paso","moteurs","Motori Passo-Passo","스텝 모터","Sustojimo varikliai","Stappenmotors","Silniki krokowe","Krokové motory"],"heated-bed-move":["Pohyb podložky v ose X a Y","Heizbett X und Y bewegen","Heated Bed X and Y Move","Base Calefactable Mover X e Y","Mouvement en x/y","Spostamento X e Y Piano Riscaldato","히트베드 X 및 Y 이동","Šildomojo patalo X ir Y poslinkis","Beweeg verwarmd bed in X en Y","Ruch stołu grzewczego X i Y","Pohyb podložky v osi X a Y"],"move-step":["Krok pohybu [mm]","Schrittweite [mm]","Move Step [mm]","Mover Paso [mm]","déplacement [mm]","Sposta Passo [mm]","[mm]mm 스텝 이동","Poslinkis [mm]","Beweegafstand [mm]","Krok ruchu [mm]","Krok pohybu [mm]"],"nozzle-z-move":["Pohyb extrudéru v ose Z","Düse Z Bewegung","Nozzle Z Move","Boquilla Mover Z","déplacement en z","Spostamento Z Ugello","노즐 Z 이동","Antgalio Z poslinkis","Beweeg omhoog/omlaag","Ruch dyszy w osi Z","Pohyb extruderu v osi Z"],"extruder":["Extrudér","Extruder","Extruder","Extrusor","extrudeur","Estrusore","익스트루더","Ištraukiklis","Extruder","Ekstruder","Extruder"],"extrude-retract-step":["Krok vytlačení/vtažení [mm]","Extrudieren/Zurückziehen Schritt [mm]","Extrude/Retract Step [mm]","Distancia Extruir/Retraer [mm]","longueur d\'extrusion ou de rétractation [mm]","Passo Estrusione/Retrazione [mm]","[mm]mm 스텝 압출/철회","Ištrauka/atgalinimas [mm]","Extrude/retract-afstand [mm]","Krok ekstruzji/retrakcji [mm]","Krok vysunutia/zasunutia [mm]"],"nozzle-temp":["Teplota trysky","Düsentemperatur","Nozzle Temperature","Temperatura Boquilla","température de la buse","Temperatura Ugello","노즐 온도","Antgalio temperatūra","Temperatuur nozzle","Temperatura dyszy","Teplota trysky"],"speed":["Rychlost","Geschwindigkeit","Speed","Velocidad","vitesse","Velocità","속도","Greitis","Snelheid","Prędkość","Rýchlosť"],"heated-bed-temp":["Teplota vyhřívané podložky","Temperatur des Heizbettes","Heated Bed Temperature","Temperatura de la Base Calefactable","Température du lit","Temperatura piano riscaldato","히트베드 온도","Šildomojo patalo temperatūra","Temperatuur verwarmd bed","Temperatura stołu","Teplota vyhrievanej podložky"],"flow":["Průtok","Flow","Flow","Flujo","flux","Flusso","흐름","Srautas","Extrusiefactor","Przepływ","Prietok"],"title":["Ovládání tiskárny","Druckersteuerung","Printer Control","Control de la Impresora","Contrôle de l\'imprimante","Controllo Stampante","프린터 제어","Spausdintojo valdymas","Printerbediening","Sterowanie drukarką","Ovládanie tlačiarne"]},"cameras":{"link":["Kamery","Kameras","Cameras","Cámaras","Caméras","Fotocamere","카메라","Kameros","Camera\'s","Kamery",""],"trigger-scheme":{"ten-sec":["Každých 10 sekund","Alle 10 Sekunden","Every 10 seconds","Cada 10 segundos","Toutes les 10 secondes","Ogni 10 secondi","매 10초","Kas 10 sekundžių","Elke 10 seconden","Co 10 sekund",""],"thirty-sec":["Každých 30 sekund","Alle 30 Sekunden","Every 30 seconds","Cada 30 segundos","Toutes les 30 secondes","Ogni 30 secondi","매 30초","Kas 30 sekundžių","Elke 30 seconden","Co 30 sekund",""],"sixty-sec":["Každých 60 sekund","Alle 60 Sekunden","Every 60 seconds","Cada 60 segundos","Toutes les 60 secondes","Ogni 60 secondi","매 60초","Kas 60 sekundžių","Elke minuut","Co 60 sekund",""],"each-layer":["Při změně vrstvy","Beim Schichtwechsel","On layer change","Al cambiar de capa","Au changement de couche","Al cambio layer","매 레이어","Pakeitus sluoksnį","Bij laagwissel","Przy zmianie warstwy",""],"fifth-layer":["Každou pátou vrstvu","Alle 5 Schichten","Every fifth layer","Cada cinco capas","Toutes les cinq couches","Ogni cinque layer","매 5레이어","Kas penktas sluoksnis","Elke 5 lagen","Co piąta warstwa",""],"manual":["Ručně","Manuell","Manual","Manual","Manuel","Manuale","수동","Rankinis","Handmatig","Ręcznie",""]}},"settings":{"title":["Nastavení","Einstellungen","Settings","Ajustes","Réglages","Impostazioni","세팅","Nustatymai","Instellingen","Ustawienia","Nastavenie"]},"conn":{"prusa-connect-status":["Stav připojení PrusaConnect","PrusaConnect Status","PrusaConnect Status","Estado de PrusaConnect","Informations de connexion à PrusaConnect","Stato PrusaConnect","프루사커넥트 상태","PrusaConnect būsena","Status van PrusaConnect","Stan PrusaConnect","Stav pripojenia PrusaConnect"],"printer-status":["Stav připojení 3D tiskárny","3D-Drucker Verbindungsstatus","3D Printer Connection Status","Estado Conexión Impresora 3D","Informations de connexion à l\'imprimante 3D","Stato Connessione Stampante 3D","3D 프린터 연결 상태","3D spausdintojo prisijungimo būsena","Verbindingsstatus van 3D-printer","Status połączenia z drukarką 3D","Stav pripojenia 3D tlačiarne"],"title":["připojení","Verbindung","Connection",null,"connexion",null,"연결","Prisijungimas","Verbinding",null,"pripojenie"],"prusa-connect-url":["Adresa PRUSA CONNECT","PRUSA CONNECT Adresse","PRUSA CONNECT Address",null,null,null,"프루사커넥트 주소","PRUSA CONNECT adresas","Adres van PRUSA CONNECT",null,"Adresa PrusaConnect"],"suc":["Úspěšně připojeno","Erfolgreich verbunden","Successfully connected","Correctamente conectado","Connecté avec succès","Connessione riuscita","연결 성공","Prisijungta sėkmingai","Succesvol verbonden","Połączono pomyślnie","Úspešne pripojené"],"connect":{"linked":["","Verbunden","Linked","Enlazado","Associée","Collegato","연결됨","Susieta","Verbonden","Połączono",""],"not-linked":[null,"Nicht verbunden","Not Linked","No enlazado","Non Associée","Non collegato","연결안됨","Nesusieta","Niet verbonden","Nie połączono",""]}},"prop":{"temp-nozzle":["Teplota trysky","Düsentemperatur","Nozzle Temperature","Temperatura del nozzle","Température de la buse","Temperatura ugello","노즐 온도","Nozzle Temperature","Nozzletemperatuur","Temperatura dyszy","Teplota trysky"],"temp-bed":["Vyhřívaná podložka","Heizbett","Heatbed","Base calefactable","Plateau chauffant","Piano riscaldato","히트베드","Dėklo temperatūra","Verwarmd bed","Stół","Vyhrievaná podložka"],"speed":["Rychlost tisku","Druckgeschwindigkeit","Printing Speed","Velocidad de impresión","Vitesse d\'impression","Velocità di stampa","출력속도","Spausdinimo greitis","Printsnelheid","Prędkość drukowania","Rýchlosť tlače"],"z-height":["Výška Z","Z-Höhe","Z-Height","Altura-Z","Hauteur en z","Altezza-Z","Z높이","Z-Height","Z-Hoogte","Wysokość Z","Výška Z"],"nozzle-diameter":["Velikost trysky","Düsendurchmesser","Nozzle Diameter","Diámetro de Boquilla","Diamètre de la Buse","Diametro ugello","노즐지름","Galvutės skersmuo","Nozzlediameter","Średnica dyszy","Veľkosť trysky"],"rem-time":["Zbývající čas","Restzeit","Remaining time","Tiempo restante","Temps restant","Tempo residuo","남은시간","Likęs laikas","Resterende tijd","Pozostały czas","Zostávajúci čas"],"time-est":["Odhad doby tisku","Druckzeit Schätzen","Print Time Estimate","Tiempo Estimado de Impresión","Estimation du temps d\'impression","Stima del Tempo di Stampa","예상 출력 시간","Print Time Estimate","Geschatte printtijd","Szacowany Czas Druku","Odhad času tlače"],"est-end":["Odhadovaný konec","Erwartetes Ende","Estimated end","Fin estimado","Fin d\'impression estimée","Fine prevista","예상완료","Numatomas pabaiga","geschatte eindtijd","Szacowane zakończenie","Odhadovaný koniec"],"pnt-time":["Doba tisku","Druckzeit","Printing time","Tiempo de impresión","Temps d\'impression","Tempo di stampa","출력시간","Spausdinimo laikas","Printtijd","Czas druku","Čas tlače"],"last-mod":["Naposledy upraveno","Zuletzt Geändert","Last Modified","Ultima Modificación","Dernière Modification","Ultima Modifica","최종 수정됨","Paskutinis modifikavimas","Laatst gewijzigd","Ostatnio Zmodyfikowany","Posledná úprava"],"material":["Materiál","Material","Material","Material","Matériau","Materiale","재료","Medžiaga","Materiaal","Materiał","Materiál"],"layer-ht":["Výška vrstvy","Schichthöhe","Layer Height","Altura de Capa","Hauteur de Couche","Altezza Layer","레이어 높이","Sluoksnio storis","Laagdikte","Wysokość Warstwy","Výška vrstvy"],"size":["Velikost souboru","Größe der Datei","File size","Tamaño de archivo","Taille du fichier","Dimensione file","파일크기","Failo dydis","Bestandsgrootte","Rozmiar pliku","Veľkosť súboru"],"progress":["Postup","Fortschritt","Progress","Progreso","Progression","Progresso","진행","Eiga","Voortgang","Postęp","Progres"],"st-idle":["Nečinná","Leerlauf","Idle","En espera","Repos","Inattivo","대기","Pramoginė veikla","Inactief","Oczekuje","Nečinná"],"st-ready":["Připravena","Bereit","Ready","Lista","Prête","Pronto","준비","Pasirengęs","Gereed voor gebruik","Gotowe","Pripravené"],"st-busy":["Zaneprázdeněná","Beschäftigt","Busy","Ocupada","Occupée","Occupato","작업중","Užsiėmęs","Bezig","Zajęty","Zaneprázdnená"],"st-printing":["Probíhá tisk","Druckt","Printing","Imprimiendo","Impression","Stampa","출력중","Spausdinama","Printen","Drukowanie","Prebieha tlač"],"st-paused":["Pozastavena","Pausiert","Paused","Pausado","En pause","In pausa","일시정지","Pristabdyta","Gepauzeeerd","Pauza","Pozastavená"],"st-finished":["Dokončeno","Beendet","Finished","Terminado","Terminé","Completato","완료됨","Užbaigta","Klaar","Zakonczono","Dokončené"],"st-stopped":["Zastaveno","Gestoppt","Stopped","Parada","Arrêtée","Arrestato","정지됨","Sustabdytas","Gestopt","Zatrzymano","Zastavené"],"st-error":["Chyba","Fehler","Error","Error","Erreur","Errore","에러","Klaida","Fout","Błąd","Chyba"],"st-attention":["Vyžaduje pozornost","Achtung","Attention","Atención","Attention","Attenzione","주의","Dėmesio","Attentie","Uwaga","Pozor"],"st-unknown":["Neznámý","Unbekannt","Unknown","Desconocido","Inconnu","Sconosciuto","알수없음","Nežinoma","Onbekend","Nieznane","Neznáme"],"at":["v","um","at","a las","à","alle","에서","iš","op","o","v"],"less-than":["Méně než minuta","Weniger als eine Minute","Less than a minute","Menos de un minuto","Moins d\'une minute","Meno di un minuto","1분 미만","Mažiau nei minutė","Minder dan een minuut","Mniej niż minuta","Menej ako minúta"],"today-at":["Dnes v","Heute um","Today at","Hoy a las","Aujourd\'hui à","Oggi alle","오늘","Šiandien","Vandaag om","Dzisiaj o","Dnes o"],"tmw-at":["Zítra v","Morgen um","Tomorrow at","Mañana a las","Demain à","Domani alle","내일","Rytoj","Morgen om","Jutro o","Zajtra o"],"true":["Ano","Ja","Yes","Si","Oui","Si","예","Taip","Ja","Tak","Áno"],"false":["Ne","Nein","No","No","Non","No","아니오","Ne","Nee","Nie","Nie"],"na":["N/A","NV","NA","NA","NA","ND","없음","NA","N.v.t.","N/D","N/A"],"cover-closed":["Uzavřené","Geschlossen","Closed","Cerrada","Fermé","Chiuso","닫힘","Uždarytas","Gesloten","Zamknięta","Zavreté"],"cover-opened":["Otevřené","Geöffnet","Opened","Abierta","Ouvert","Aperto","열림","Atidarytas","Open","Otwarta","Otvorené"],"storage-used-space":["Použito {{used}} z {{total}} ({{free}} volných)","{{used}} benutzt von {{total}} ({{free}} frei)","Used {{used}} of {{total}} ({{free}} free)","Usados {{used}} de {{total}} ({{free}} libres)","{{used}} utilisés sur {{total}} ({{free}} libre)","Usato {{used}} di {{total}} ({{free}} liberi)","{{total}} 중 {{used}} 사용중({{free}} 남음)","","","Zajęte {{used}} z {{total}} ({{free}} wolne)",""]},"msg":{"modal-p1":["Vítejte na webovém rozhraní vaší","Willkommen zur Weboberfläche Ihres","Welcome to the web interface of your","Bienvenido a la interfaz web de tu","Bienvenue dans l\'interface web de votre","Benvenuto nell\'interfaccia web del tuo","당신의 웹 인터페이스에 오신 것을 환영합니다.","Sveiki atvykę į savo","Welkom bij de webinterface van uw","Witaj w interfejsie Twojej","Vitajte vo webovom rozhraní vašej"],"modal-p2":["Upozornění: některé hodnoty jsou zobrazeny pouze v průběhu tisku.","Bitte beachten Sie, dass die Werte nur angezeigt werden, wenn der Drucker gerade druckt.","Please note that values are shown only when the printer is printing.","Tenga en cuenta que los valores se muestran solo cuando la impresora está imprimiendo.","Veuillez noter que les valeurs sont affichées uniquement lorsque l\'imprimante imprime.","Si noti che i valori vengono visualizzati solo durante la stampa.","프린터가 출력중일 경우에만 값이 표시됩니다.","Prašome atkreipti dėmesį, kad reikšmės rodomos tik tada, kai spausdintuvas spausdina.","De waarden worden alleen getoond tijdens het printen.","Wartości będą wyświetlane tylko podczas drukowania.","Upozornenie: niektoré hodnoty sú zobrazené len počas tlače."],"api-key-1":["Vítejte ve webovém rozhraní PrusaLink Web!","Willkommen auf der Web-Oberfläche von PrusaLink Web.","Welcome to the PrusaLink Web web interface.","Bienvenido a la interfaz web de PrusaLink Web.","Bienvenue sur l\'interface web locale de PrusaLink Web.","Benvenuti nell\'interfaccia web di PrusaLink Web.","프루사 커넥트 웹 웹인터페이스에 오신 것을 환영합니다.","Sveiki atvykę į PrusaLink Web interneto sąsają.","Welkom bij de PrusaLink Web webinterface.","Witaj w interfejsie sieciowym PrusaLink Web.","Vitajte vo webovom rozhraní PrusaLink Web!"],"api-key-2":["Vložte API klíč.","Bitte geben Sie den API-Schlüssel ein.","Please insert the API key.","Por favor introduce la clave API.","Veuillez insérer la clé API.","Si prega di inserire la chiave API.","API키를 입력하십시오.","Prašome įvesti API raktą.","Voer de API-sleutel in","Wpisz klucz API.","Vložte API kľúč."],"api-key-3":["Otevřete menu Nastavení -> Síť -> PrusaLink.","Sie finden ihn in Einstellungen -> Netzwerk -> PrusaLink.","You can find it in Settings -> Network -> PrusaLink.","Puedes encontrarla en Ajustes -> Red -> PrusaLink.","Vous pouvez la trouver dans Réglages -> Réseau -> Informations de connexion.","È possibile trovarla in Impostazioni -> Rete -> PrusaLink","설정 -> 네트워크 -> 프루사링크에서 찾을 수 있습니다.","Jį galite rasti Nustatymai -> Tinklas -> PrusaLink.","Deze kan gevonden worden bij Settings -> -> Network -> PrusaLink.","Możesz znaleźć go w sekcji Ustawienia -> Sieć -> PrusaLink.","Nájdete ho v Nastavenia -> Sieť -> PrusaLink."],"offline":{"not-responsing":["Tiskárna nereaguje.","Der Drucker antwortet nicht.","Printer is not responding.","La impresora no responde.","L\'imprimante ne répond pas.","La stampante non risponde.","프린터가 응답하지 않습니다.","Spausdintuvas neatsako.","Printer reageert niet.","Drukarka nie odpowiada.","Tlačiareň nereaguje."],"please-wait":["Prosím, čekejte...","Bitte warten...","Please wait...","Espera, por favor...","Veuillez patienter...","Attendere...","기다려주십시오...","Prašome palaukti...","Even geduld...","Proszę czekać...","Prosím, čakajte..."]},"drop-zone":{"label":["Přetažením souboru zahájíte nahrávání","Datei hier ablegen, um den Upload zu starten","Drop file here to start the uploading","Arrastra archivo aquí para subirlo","Déposez le fichier ici pour commencer le téléchargement","Trascina il file qui per iniziare il caricamento","파일을 여기로 끌어놓으면 업로드가 시작됩니다.","Tempti failą čia, kad predėti įkrovimą","Sleep het bestand hierheen om het te uploaden","Upuść plik tutaj, aby rozpocząć przesyłanie.",""]},"create-folder":["Nová složka","Neuer Ordner","New Folder","Nueva Carpeta","","Nuova Cartella","새 폴더","","","Nowy folder",""],"create-folder-name":["Název složky","Ordnername","Folder Name","Nombre de la Carpeta","","Nome cartella","폴더 이름","","","Nazwa folderu",""],"sysupgrade":{"title":["Aktualizovat systémový balíček?","Systempaket aktualisieren?","Upgrade System Package?","¿Actualizar el Paquete del Sistema?","","Aggiornare il pacchetto di sistema?","","","","Zaktualizować paczkę systemową?",""],"remark":["Aktualizace může trvat několik minut.","Das Upgrade kann mehrere Minuten dauern.","The upgrade could last for several minutes.","La actualización puede durar varios minutos.","","L\'aggiornamento potrebbe durare diversi minuti.","","","","Aktualizacja może trwać kilka minut.",""],"pending":["Probíhá aktualizace... Nevypínejte tiskárnu.","Upgraden... Schalten Sie den Drucker nicht aus.","Upgrading... Do not switch the printer off.","Actualizando... No apagues la impresora.","","Aggiornamento... Non spegnere la stampante.","","","","Aktualizacja... Nie wyłączaj drukarki.",""],"wait-for-printer":["Čeká se na tiskárnu...","Warten auf den Drucker...","Waiting for the printer...","Esperando a la impresora...","","In attesa della stampante...","","","","Oczekiwanie na drukarkę...",""]},"sla-pour-resin":["Nalijte do vaničky dostatečné množství resinu pro vybraný soubor a zavřete víko. Minimální objem resinu je zobrazen na dotykovém displeji tiskárny.","Füllen Sie genügend Harz für die ausgewählte Datei in den Tank und schließen Sie den Deckel. Die minimale Menge des Harzes wird auf dem Touchscreen angezeigt.","Pour enough resin for selected file into the tank and close the lid. Minimal amount of the resin is displayed on the touchscreen.","Vierte suficiente resina para el archivo seleccionado y cierra la tapa.\\nLa mínima cantidad necesaria se muestra en la pantalla táctil.","Versez suffisamment de résine dans le réservoir pour le projet sélectionné et fermez le capot.","Versare nel serbatoio la quantità di resina sufficiente per il file selezionato e chiudere il coperchio. La quantità minima di resina viene visualizzata sul touchscreen.","선택한 파일을 위한 레진을 탱크에 붓고 뚜껑을 닫습니다. 터치스크린에 최소량의 레진이 표시됩니다.","Įpilkite pakankamai dervos pasirinktam failui ir uždarykite dangtį. Mažiausias dervos kiekis yra rodomas ant ekrano.","Doe genoeg resin voor het geselcteerde bestand in het vat en sluit de kap. De minimale hoeveelheid resin wordt aangegeven op het touchscreen.","Wlej do zbiornika wystarczającą ilość żywicy dla wybranego pliku i zamknij pokrywę. Minimalna ilość żywicy jest wyświetlana na ekranie dotykowym.","Do nádržky nalejte dostatočné množstvo resinu pre vybraný súbor a zatvorte veko. Minimálne množstvo resinu sa zobrazí na dotykovom displeji."],"del-folder":["Opravdu chcete smazat {{folder_name}} a ho obsah?","Möchten Sie wirklich {{folder_name}} und seinen Inhalt löschen?","Do you really want to delete {{folder_name}} and its contents?","¿Realmente deseas borrar {{folder_name}} y su contenido?","Voulez-vous vraiment supprimer {{folder_name}} et son contenu ?","Vuoi davvero cancellare la cartella {{folder_name}} e il suo contenuto?","정말 {{folder_name}} 폴더 및 내용을 지우시겠습니까?","","","Czy naprawdę chcesz usunąć {{folder_name}} i jego zawartość?",""],"del-proj":["Opravdu chcete smazat {{file_name}}?","Wollen Sie wirklich {{file_name}} löschen?","Do you really want to delete {{file_name}}?","¿Realmente deseas borrar {{file_name}}?","Voulez-vous vraiment supprimer le fichier {{file_name}} ?","Vuoi davvero eliminare il file {{file_name}}?","{{file_name}}을 정말로 삭제하겠습니까?","Ar tikrai norite ištrinti {{file_name}}?","Weet u zeker dat u {{file_name}} wilt verwijderen?","Czy na pewno chcesz usunąć plik {{file_name}}?","Naozaj chcete zmazať {{file_name}}?"],"cancel":["Chcete opravdu zrušit tisk?","Wollen Sie den Druck wirklich abbrechen?","Do you really want to cancel print?","¿Realmente quieres cancelar la impresión?","Voulez-vous vraiment annuler l\'impression ?","Vuoi davvero annullare la stampa?","출력을 취소하겠습니까?","Ar tikrai norite atšaukti spausdinimą?","Weet u zeker dat u de print wilt stoppen?","Czy na pewno chcesz anulować wydruk?","Chcete naozaj zrušiť tlač?"]},"btn":{"login":["Přihlášení","Login","Login","Iniciar sesión","Connexion","Accedi","로그인","Prisijungti","Login","Zaloguj","Prihlásenie"],"confirm":["Potvrdit","Bestätigen","Confirm","Confirmar","Confirmer","Conferma","결정","Patvirtinti","Bevestigen","Potwierdzam","Potvrdiť"],"cancel":["Zrušit","Abbrechen","Cancel","Cancelar","Annuler","Annulla","취소","Atšaukti","Annuleren","Anuluj","Zrušiť"],"disable-steppers":["Vypnout motory","Schrittmotoren deaktivieren","Disable Steppers","Desactivar motores","Desactiver les moteurs","Disabilita motori","모터 정지","Išjungti stoperius","Stappenmotors uitschakelen","Wyłącz silniki krokowe","Vypnúť motory"],"extrude":["Vytlačit","Extrudieren","Extrude","Extruye","extruder","Estrudi","압출","Ištraukti","Extrudeer","Ekstruzja","Vysunúť"],"retract":["Vtáhnout","Zurückziehen","Retract","Retraer","Retracter","Retrai","리트렉트","Atitraukti","Retract","Retrakcja","Zasunúť"],"set":["Nastavit","Setzen","Set","Ajuste","Régler","Imposta","설정","Nustatyti","Instellen","Ustaw","Nastaviť"],"del":["Smazat","löschen","Delete","borrar","supprimer","elimina","삭제","Ištrinti","Verwijderen","usuń","Zmazať"],"download":["Stáhnout","Herunterladen","Download","Descargar","télécharger","Download","다운로드","Atsisiųsti","Download","Pobierz","Stiahnuť"],"pause-pt":["Pozastavit tisk","Druck pausieren","Pause Print","Pausar Impresión","Mettre l\'impression en pause","Pausa Stampa","출력 일시 정지","Pristabdyti spausdinimą","Pauzeer print","Wstrzymaj drukowanie","Pozastaviť tlač"],"resume-pt":["Pokračovat v tisku","Druck fortsetzen","Resume Print","Continuar Impresión","Redémarrer l\'impression","Riprendi stampa","출력 복귀","Tęsti spausdinimą","Hervat print","Wznów drukowanie","Pokračovať v tlači"],"start-pt":["Start tisku","Druck starten","Start Print","Empezar impresión","Lancer l\'impression","Inizia stampa","출력 시작","Pradėti spausdinimą","Start print","Start druku","Štart tlače"],"stop-print":["Zrušit tisk","Druck abbrechen","Stop Print","Cancelar impresión","Annuler l\'impression","Annulla stampa","출력 정지","Sustabdyti spausdinimą","Stop print","Anuluj wydruk","Zrušiť tlač"],"upld-file":["Nahrát soubor","Datei hochladen","Upload File","Cargar Archivo","Télécharger un Fichier","Carica file","파일 업로드","Įkelti failą","Upload bestand","Prześlij plik","Nahrať súbor"],"yes":["Ano","Ja","Yes","Sí","Oui","Sì","예","Taip","Ja","Tak","Áno"],"no":["Ne","Nein","No","No","Non","No","아니오","Ne","Nee","Nie","Nie"],"check-updates":["Kontrola aktualizací","Updates suchen","Check Updates","Comprobar actualizaciones","Vérifier les Mises à Jour","Controlla aggiornamenti","업데이트 체크","Tikrinti atnaujinimus","","Sprawdź aktualizacje",""],"connect":{"link":[null,"Verbinden","Link","Enlace","Associer","Collegamento","연결","Susieti","Verbinden","Link",""],"unlink":["Odpojit","Trennen","Unlink","Desenlazar","Dissocier","Scollegato","연결끊기","Atsieti","Verbinding verbreken","Odłącz",""]},"chg":["Změnit","Ändern","Change","Cambia","Mettre à jour","Cambia","변경","Pakeisti","Wijzig","Zmień","Zmeniť"],"reset":["","Reset","Reset","Reset","Réinitialiser","Reset","리셋","Perkrauti","Reset","Reset",""],"upgrade":["Aktualizovat","Aktualisieren","Upgrade","Actualización","Mise à niveau","Aggiorna","업그레이드","Atnaujinti","","Aktualizacja",""],"chg-print-set":["Tisková nastavení","Druckeinstellungen","Print Settings","Ajustes de la Impresora","Réglages d\'Impression","Impostazioni di stampa","프린트 설정","Spausdinimo nustatymai","Printinstellingen","Ustawienia druku",""],"save-chgs":["Uložit změny","Änderungen speichern","Save changes","Guardar cambios","Enregistrer les modifications","Salva le modifiche","변경내용 저장","Išsaugoti pakeitimus","Wijzigingen opslaan","Zapisz zmiany","Uložiť zmeny"]},"camera":{"settings":["Nastavení kamery","Kamera-Einstellungen","Camera Settings","Ajustes de la Cámara","Paramètres de la Caméra","Impostazioni Fotocamera","카메라 세팅","Kameros nustatymai","Camera-instellingen","Ustawienia kamery",""],"name":["Název kamery","Kameraname","Camera Name","Nombre de la Cámara","Nom de la Caméra","Nome Fotocamera","카메라 명칭","Kameros pavadinimas","Cameranaam","Nazwa kamery",""],"resolution":["Rozlišení","Auflösung","Resolution","Resolución","Résolution","Risoluzione","해상도","Raiška","Resolutie","Rozdzielczość",""],"trigger-scheme":["","Auslöse-Schema","Trigger Scheme","Modo de Disparo","Mode de Déclenchement","Schema di attivazione","트리거 계획","Paleisti schemą","Triggerschema","Schemat wyzwalania",""],"title":["Kamery","Kameras","Cameras","Cámaras","Caméras","Fotocamere","카메라","Kameros","Camera\'s","Kamery",""],"time":["Čas snímku","Zeit der Momentaufnahme","Snapshot Time","Hora de la Foto","Heure de la Capture","Tempo Istantanea","스냅샷 시간","Momentinis vaizdas","Snapshot-tijd","Czas migawki",""],"cloud":{"linked":["Připojeno","Verbunden","Linked","Enlazado","Associée","Collegato","연결됨","Susieta","Verbonden","Połączono",""],"not-linked":["Nepřipojeno","Unverbunden","Not Linked","No Enlazado","Non Associée","Non collegato","연결되지 않음","Nesusieta","Niet verbonden","Nie połączono",""],"label":["","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT","CONNECT",""]},"btn":{"connect":["Zkusit povolit kameru","Versuche Kamera zu aktivieren","Try to enable camera","Intenta habilitar la cámara","Essayer d\'activer la caméra","Prova ad abilitare la fotocamera","카메라 활성화 시도중","Pabandykite įjungti kamerą","Probeer de camera in te schakelen","Spróbuj aktywować kamerę",""],"settings":["Otevřít nastavení kamery","Öffne Kamera-Einstellungen","Open camera settings","Abrir los ajustes de la cámara","Ouvrir les paramètres de la caméra","Apri impostazioni fotocamera","카메라 설정 열기","Atidaryti kameros nustatymus","Open camera-instellingen","Otwórz ustawienia kamery",""],"link":["Připojit kameru do Connectu","Kamera mit CONNECT verbinden","Link camera to CONNECT","Asocia cámara a CONNECT","Associer la caméra à CONNECT","Collega fotocamera a CONNECT","카메라를 CONNECT에 연결하기","Susieti kamerą su CONNECT","Verbind camera met CONNECT","Połącz kamerę z CONNECT",""],"unlink":["Odpojit kameru z Connectu","Kamera von CONNECT trennen","Unlink camera from CONNECT","Desvincular la cámara de CONNECT","Dissocier la caméra de CONNECT","Scollega fotocamera da CONNECT","카메라를 CONNECT에서 연결 해제하기","Atsieti kamerą nuo CONNECT","Verbreek verbinding van camera met CONNECT","Odłącz kamerę od CONNECT",""]},"path":["Cesta","Pfad","Path","Ruta","Chemin","Percorso","경로","Kelias","Pad","Ścieżka",""],"driver":["Ovladač","Treiber","Driver","Controlador","Driver","Driver","드라이버","Draiveris","Driver","Sterownik",""]},"printer":{"title":["Tiskárna","Drucker","Printer","Impresora","imprimante","Stampante","프린터","Spausdintuvas","Printer","Drukarka","Tlačiareň"],"name":["Název tiskárny","Name des Druckers","Printer name","Nombre de la impresora","nom de l\'imprimante","Nome stampante","프린터 이름","Spausdintuvo pavadinimas","Naam van de printer","Nazwa drukarki","Názov tlačiarne"],"location":["Umístění tiskárny","Standort des Druckers","Printer location","Ubicación de la impresora","localisation de l\'imprimante","Posizione stampante","프린터 위치","Spausdintuvo vieta","Locatie van de printer","Lokalizacja drukarki","Umiestnenie tlačiarne"],"network_error_chime":["Zvukové upozornění při síťové chybě","Netzwerk-Fehlerton","Network Error Chime","Tono Error Red","","Suono di errore di rete","네트워크 에러 차임벨","","","Dźwięk błędu sieci",""]},"print":{"fdm":{"1":["Je tiskárna připravena?","Ist der Drucker bereit?","Is the printer ready?","¿Está lista la impresora?","L\'imprimante est-elle prête ?","La stampante è pronta?","프린터가 준비되었습니까?","Ar spausdintuvas pasirengęs?","Is de printer klaar voor gebruik?","Czy drukarka jest gotowa?","Je tlačiareň pripravená?"],"2":["Je tisková podložka prázdná a čistá?","Ist der Druckbogen leer und sauber?","Is printing sheet empty and clean?","¿Está vacía y limpia la lámina de impresión?","Le surface d\'impression est-elle vide et propre ?","La piastra di stampa è vuota e pulita?","프린트 시트가 비어있고 깨끗합니까?","Ar spausdinimo lapas tuščias ir švarus?","Is het printplatform leeg en schoon?","Czy arkusz druku jest pusty i czysty?","Je tlačová podložka prázdna a čistá?"]}},"upld":{"title":["Nahrát soubor","Projekt hochladen","Upload file","envía proyecto","Téléversement de projet","Carica file","파일업로드","Įkelti failą","Bestand uploaden","prześlij projekt","Nahrať súbor"],"start-pt":["po přenosu zahájit tisk","Druck nach der Übertragung starten","Start print after transfer","Iniciar la impresión tras la transferencia","Démarrer l\'impression après le transfert","Avvia stampa dopo il trasferimento","전송 후 출력 시작","Pradėti spausdinimą po perdavimo","Start print na het omzetten","Rozpocznij drukowanie po przesłaniu","po prenose spustiť tlač"],"remote":{"source":["URL zdroje","Quell-URL","Source URL","URL Fuente","URL de la source","URL fonte","원본 URL","Šaltinio URL","Bron van URL","Źródłowy URL","URL zdroja"],"hint-fdm":["Zadejte URL souboru G-CODE","URL der G-CODE-Datei eingeben","Type URL of G-CODE file","Escribe URL de archivo G-CODE","Entrez l\'URL du fichier G-CODE du projet","Digitare URL del file G-CODE","G코드 파일의 주소를 입력하십시오","Įveskite G-CODE failo URL","Type de URL van het gcode-bestand","Wpisz adres URL pliku G-Code","Zadajte URL súboru G-code"],"file":["Název souboru","Dateiname","File name","Nombre del archivo","Nom de fichier","Nome file","파일명","Failo pavadinimas","Bestandsnaam","Nazwa pliku","Názov súboru"],"file-hint":["Zadejte název souboru","Dateiname eingeben","Type file name","Escribe nombre de archivo","Tapez le nom du fichier","Digitare nome file","파일명을 입력하십시오","Įveskite failo pavadinimą","Type de bestandsnaam","Wpisz nazwę pliku","Zadajte názov súboru"]},"direct":{"choose":["Vyberte {{file}} nebo jej přetáhněte sem.","Klicke um eine {{file}} Datei auszuwählen oder ziehe sie hier hin","Click to choose a {{file}} file or drag it here","Haz clic para elegir un archivo {{file}} o arrástralo hasta aquí","Cliquer pour choisir un fichier {{file}} ou déposez le ici","Fare clic per scegliere un file {{file}} o trascinarlo qui","선택한 {{file}} 파일을 클릭하거나 여기로 드래그하십시오","Pasirinkite {{file}} failą arba vilkite jį čia","Klik om een {{file}}-bestand te kiezen of sleep het hierheen","Kliknij, aby wybrać plik {{file}} lub przeciągnij go tutaj","Kliknutím vyberte súbor {{file}} alebo ho sem potiahnite."]}},"download":{"dl-started":["Začátek stahování","Herunterladen Gestartet","Download Started","Se inició la descarga","téléchargement démarré","Scaricamento Avviato","다운로드가 시작됨","Atsisiuntimas pradėtas","Downloaden gestart","Pobieranie rozpoczęte","Sťahovanie začalo"],"start-pt":["Spustit tisk","Autostart","Autostart","Inicio automático","Démarrage automatique","Avvio automatico","자동시작","Automatinis paleidimas","Autostart","Autostart","Spustiť tlač"]},"temps":{"title":["Teploty","Temperaturen","Temperatures","Temperaturas","Températures","Temperature","온도","Temperatūros","Temperatuur","Temperatury","Teploty"]},"":[null,null,null,null,null,null,null,null,null,null,null],"version":{"title":["Verze","Version","Version",null,"version",null,"버전","Versija","Versie",null,"Verzia"],"api":["API","API","API",null,"api",null,"API","API","API",null,"API"],"hostname":["Hostname","Hostname","Hostname",null,"nom d\'hôte",null,"호스트명","Hostname","Hostnaam",null,"Hostname"],"firmware":["Firmware","Firmware","Firmware",null,"micrologiciel",null,"펌웨어","Firmware","Firmware",null,"Firmware"],"server":["Server","Server","Server",null,"serveur",null,"서버","Serveris","Server",null,"Server"],"text":["Text","Text","Text",null,"texte",null,"텍스트","Tekstas","Tekst",null,"Text"],"sdk":["SDK","SDK","SDK",null,"sdk",null,"SDK","SDK","SDK",null,"SDK"],"fe":["Frontend","Frontend","Frontend",null,"frontend",null,"프론트엔드","Frontendas","Frontend",null,"Frontend"]},"sys-version":{"title":["Verze systému","Systemversion","System Version",null,"version du système",null,"시스템버전","Sistemos versija","Systeenversie",null,"Verzia systému"],"python":["Python","Python","Python","Python","python","Python","파이썬","Python","Python","Python","Python"],"description":["Popis","Beschreibung","Description","Descripción","description","Descrizione","설명","Aprašymas","Beschrijving","Opis","Popis"],"id":["ID","ID","ID","ID","ID","ID","ID","ID","ID","ID","ID"],"os":["OS","OS","OS","OS","Système d\'exploitation","S.O.","OS","OS","OS","OS","OS"]},"updates":{"title":[null,null,"System Updates",null,null,null,null,"Sistemos atnaujinimai",null,null,null]},"user":{"title":["Uživatel","Benutzer","User",null,"utilisateur",null,"유저","Vartotojas","Gebruiker",null,"Používateľ"],"username":["Uživatelské jméno","Benutzername","User Name","Nombre de usuario","nom d\'utilisateur","Nome Utente","유저명","Vartotojo vardas","Gebruikersnaam","Nazwa użytkownika","Používateľské meno"],"format":{"name":["Uživatelské jméno musí obsahovat alespoň 3 znaky.","Der Benutzername muss mindestens 3 Zeichen lang sein.","Username length must be at least 3 characters long.","El nombre de usuario debe tener al menos 3 caracteres.","La longueur du nom d\'utilisateur doit être d\'au moins 3 caractères.","La lunghezza del nome utente deve essere di almeno 3 caratteri.","유저명은 최소 3자리 이상 입력하십시오.","Vartotojo vardo ilgis turi būti mažiausiai 3 simboliai.","De gebruikersnaam moet minimaal 3 karakters lang zijn.","Długość nazwy użytkownika musi mieć co najmniej 3 znaki.","Používateľské meno musí obsahovať aspoň 3 znaky."],"password-1":["Heslo nesmí začínat či končit mezerami, a zároveň musí splňovat jednu z následujících podmínek:","Das Passwort darf weder am Anfang noch am Ende Leerzeichen enthalten und muss mindestens eine der folgenden Optionen erfüllen:","Password can\'t contain spaces on the beggining nor the end and must meet at least one of these options:","La Contraseña no puede empezar o terminar con espacios y debe cumplir al menos una de estas opciones:","Le mot de passe ne peut pas contenir d\'espaces au début ni à la fin et doit répondre à au moins l\'une de ces options :","La password non può contenere spazi né all\'inizio né alla fine e deve soddisfare almeno una di queste opzioni:","암호는 시작부분에 공백을 둘 수 없으며 다음옵션 중 하나이상을 충족해야 합니다.","Slaptažodis negali turėti tarpų pradžioje arba pabaigoje ir turi atitikti bent vieną iš šių variantų:","Het wachtwoord mag geen spaties aan het begin of het einde bevatten en moet aan minstens één van deze opties voldoen:","Hasło nie może zawierać spacji na początku ani na końcu i musi spełniać przynajmniej jeden z poniższych warunków:","Heslo nesmie začínať ani končiť medzerami a musí spĺňať aspoň jednu z týchto podmienok:"],"password-2":["- Heslo musí obsahovat minimálně 8 znaků, zahrnujících alespoň 1 malé písmeno, 1 velké písmeno a 1 číslo","- Minimale Länge 8 Zeichen, davon ein Kleinbuchstabe, ein Großbuchstabe und eine Zahl","- Minimal length 8 characters, including one lowercase letter, one uppercase letter and one number","- Longitud mínima 8 caracteres, incluyendo una minúscula, una mayúscula y un número","- Longueur minimale de 8 caractères, dont une lettre minuscule, une lettre majuscule et un chiffre","- Lunghezza minima 8 caratteri, di cui una lettera minuscola, una lettera maiuscola e un numero","- 최소 길이 8자(소문자 1개, 대문자 1개, 숫자 1개 포함)","- 8 simbolių ilgio minimalus, įskaitant vieną mažąją raidę, vieną didžiąją raidę ir vieną skaičių","- Minimaal 8 karakters lang, met tenminste een kleine letter, een hoofdletter en een nummber","- Minimalna długość 8 znaków, w tym jedna mała litera, jedna duża litera i jedna cyfra","- Heslo musí obsahovať minimálne 8 znakov, vrátane aspoň 1 malého písmena, 1 veľkého písmena a 1 číslice"],"password-3":["- Heslo musí obsahovat minimálně 8 znaků, zahrnujících alespoň 1 speciální symbol (např. @)","- Mindestlänge 8 Zeichen, einschließlich eines nicht alphanumerischen Zeichens (z. B. @)","- Minimal length 8 characters, including one non-alphanumeric character (e.g. @)","- Longitud mínima 8 caracteres, incluyendo los no alfanuméricos (como @)","- Longueur minimale de 8 caractères, dont un caractère non alphanumérique (par exemple @)","- Lunghezza minima 8 caratteri, compreso un carattere non alfanumerico (es. @)","- 영숫자가 아닌 문자(예: @) 1개를 포함한 최소 길이 8자","- 8 simbolių ilgio minimalus, įskaitant vieną neteisingą simbolį (pvz., @)","- Minimaal 8 karakters lang, met tenminste één niet-alfanumeriek karakter (bijv. @)","- Minimalna długość 8 znaków, w tym jeden znak niealfanumeryczny (np. @)","- Heslo musí obsahovať minimálne 8 znakov, vrátane aspoň 1 špeciálneho symbolu (napr. @)"],"password-4":["- Heslo musí obsahovat minimálně 15 znaků","- Minimale Länge 15 Zeichen","- Minimal length 15 characters","- Longitud mínima 15 caracteres","- Longueur minimale 15 caractères","- Lunghezza minima 15 caratteri","- 최소 길이 15자","- 15 simbolių ilgio minimalus","- Minimaal 15 karakters lang","- Minimalna długość 15 znaków","- Heslo musí obsahovať minimálne 15 znakov"]},"new-password":["Nové heslo","Neues Passwort","New Password","Nueva Contraseña","nouveau mot de passe","Nuova Password","신규 암호","Naujas slaptažodis","Nieuw wachtwoord","Nowe hasło","Nové heslo"],"re-password":["Zopakujte heslo","Passwort wiederholen","Repeat Password","Repetir Contraseña","répéter le mot de passe","Ripeti Password","암호 재입력","Pakartokite slaptažodį","Herhaal wachtwoord","Powtórz hasło","Zopakujte heslo"],"password":["Heslo","Passwort","Password","Contraseña","mot de passe","Password","암호","Slaptažodis","Wachtwoord","Hasło","Heslo"]},"serial":{"label":["Sériové číslo","Seriennummer","Serial Number","Número de serie","numéro de série","Numero Seriale","시리얼넘버","Serijinis numeris","Serienummer","Numer seryjny","Sériové číslo"]},"api_key":{"label":["","API Key","API Key","Clave API","Clé API","Chiave API","API KEY","API raktas","API-sleutel","Klucz API",""]},"logs":{"title":["Logy","Protokolle","Logs",null,"logs",null,"로그","Žurnalai","Logbestanden",null,"Logy"],"select-file":["Vyberte soubor","Datei auswählen","Select File",null,"Sélectionnez une fichier",null,"파일 선택","Pasirinkti failą","Selecteer bestand",null,"Vyberte súbor"],"not-selected":["Není vybrán soubor logů!","Es ist keine Protokolldatei ausgewählt!","No log file is selected!","¡No se ha seleccionado archivo de registro!","Pas de fichier de log sélectionné!","Nessun file di registro selezionato!","로그 파일이 선택되지 않았습니다!","Nepasirinktas joks žurnalų failas!","Geen logbestand geselecteerd!","Nie wybrano żadnego pliku logu!","Nie je vybraný žiadny logovací súbor!"],"select-file-placeholder":["Vyberte soubor logů","Protokolldatei auswählen","Select log file","Selecciona archivo de registro","selectionnez un fichier de log","Selezionare un file di registro","로그 파일 선택","Pasirinkti žurnalų failą","Selecteer logbestand","Wybierz plik logu","Vyberte logovací súbor"],"empty-file":["Soubor je prázdný!","Die Protokolldatei ist leer!","Log file is empty!","¡El archivo de registro está vacío!","Le fichier de log est vide!","Il file di registro è vuoto!","로그파일이 비어있음!","Žurnalų failas yra tuščias!","Logbestand is leeg!","Plik logu jest pusty!","Logovací súbor je prázdny!"],"file-too-large":["Soubory logů o velikosti větší než {{size}} jsou k dispozici pouze ke stažení!","Protokolldateien, die größer als {{size}} sind, stehen nur zum Herunterladen zur Verfügung.","Log files of size larger than {{size}} are available only for downloading.","Los archivos de registro mayores de {{size}} sólo se pueden descargar.","Les fichiers de log d\'une taille supérieure à {{size}} ne sont disponibles que pour le téléchargement.","I file di registro di dimensioni superiori a {{size}} sono disponibili solo per il download.","로그 파일을 다운로드 하기 위해서는 최소 {{size}} 이상의 용량이 필요합니다.","Žurnalų failai, didesni nei {{size}}, yra prieinami tik atsiunčiant.","Logbestanden groter dan {{size}} kunnen alleen gedownload worden.","Pliki logów o rozmiarze większym niż {{size}} są dostępne tylko do pobrania.","Logovacie súbory s veľkosťou väčšou ako {{size}} sú k dispozícii len na stiahnutie.!"]},"ntf":{"success":["Požadavek byl úspěšný","Erfolg","The request was successful","Éxito","la demande a été traitée avec succès","Successo","요청이 성공했습니다.","Užklausa buvo sėkminga","De aanvraag was succesvol","Sukces","Žiadosť bola úspešná"],"settings-suc":["Nastavení bylo úspěšně změněno.","Die Einstellungen wurden erfolgreich geändert.","Settings was changed successfully.","Los ajustes se han cambiado correctamente.","Paramètres modifiés avec succès.","Impostazioni modificate correttamente","설정이 성공적으로 변경되었습니다.","Nustatymai sėkmingai pakeisti.","Instelling succesvol gewijzigd.","Ustawienia zostały zmienione pomyślnie","Nastavenia boli úspešne zmenené."],"camera-suc":["","Kamera Steuerungsanfrage wurde gesendet","Camera control request has been sent","La petición de control de cámara se ha enviado","La demande de contrôle de la caméra a été envoyée","È stata inviata una richiesta di controllo della fotocamera","카메라 조작 요청이 전송되었습니다.","Kameros valdymo užklausa buvo išsiųsta","Aanvraag voor camerabesturing is verzonden","Wysłano żądanie sterowania kamerą",""],"camera-config-success":["Konfigurace kamery byla aktualizovaná","Kamerakonfiguration wurde aktualisiert","Camera configuration has been updated","La configuración de la cámara se ha actualizado","La configuration de la caméra a été mise à jour","La configurazione della fotocamera è stata aggiornata","카메라 구성이 업데이트되었습니다.","Kameros konfigūracija buvo atnaujinta","Cameraconfiguration is geüpdatet","Konfiguracja kamery została zaktualizowana",""],"upld-suc":["Soubor {{file_name}} byl úspěšně nahrán.","Das Hochladen des Projekts {{file_name}} war erfolgreich.","The file {{file_name}} was uploaded successfully.","El envío del proyecto {{file_name}} se completó.","Le projet {{file_name}} a été téléversé correctement.","Caricamento del progetto {{file_name}} riuscito.","{{file_name}}파일이 성공적으로 업로드되었습니다.","Failas {{file_name}} sėkmingai įkeltas.","Het bestand {{file_name}} is succesvol geüpload.","Przesyłanie projektu {{file_name}} powiodło się.","Súbor {{file_name}} bol úspešne nahraný."],"error":["Chyba","Fehler","Error","Error","Erreur","Errore","에러","Klaida","Fout","Błąd","Chyba"],"upld-unsuc":["Nahrání souboru {{file_name}} selhalo.","Das Hochladen des Projekts {{file_name}} war nicht erfolgreich.","The file {{file_name}} upload was unsuccessful.","El envío del proyecto {{file_name}} ha fallado.","Le téléversement du projet {{file_name}} a échoué.","Caricamento del progetto {{file_name}} non riuscito.","{{file_name}}파일의 업로드가 실패하였습니다.","Failo {{file_name}} įkėlimas nepavyko.","Het bestand {{file_name}} is niet succesvol geüpload.","Przesyłanie projektu {{file_name}} nie powiodło się.","Nahrávanie súboru {{file_name}} zlyhalo."],"upld-start":["Požadavek na nahrání souboru byl přijat","Upload-Anfrage wurde angenommen","Upload request has been accepted","Se acepto la petición de subida","La demande de téléchargement a été acceptée","Richiesta di caricamento accettata","업로드 요청이 수락되었습니다.","Įkėlimo užklausa priimta","Uploadverzoek is geaccepteerd","Żądanie przesłania zostało zaakceptowane","Žiadosť o odoslanie bola prijatá"]},"sort":{"by-name":["Název","Name","Name","Nombre","Nom","Nome","이름으로 정렬하기","Pavadinimas","Naam","Nazwa",""],"by-date":["Datum","Datum","Date","Fecha","Date","Data","날짜로 정렬하기","Data","Datum","Data",""],"by-size":["Velikost","Größe","Size","Tamaño","Taille","Dimensioni","크기로 정렬하기","Dydis","Grootte","Rozmiar",""]},"unit":{"h":["h","h","h","h","h","h","h","h","u","g","h"],"min":["min","min","min","min","min","min","min","min","min","min","min"],"ml":["ml","ml","ml","ml","mL","ml","ml","ml","ml","ml","ml"],"rpm":["RPM","UPM","RPM","RPM","TPM","RPM","RPM","RPM","RPM","Obr./min","RPM"],"b":["B","B","B","B","B","B","B","B","B","B","B"],"kb":["KB","KB","KB","KB","KB","KB","KB","KB","kB","KB","KB"],"mb":["MB","MB","MB","MB","MB","MB","MB","MB","MB","MB","MB"],"gb":["GB","GB","GB","GB","GB","GB","GB","GB","GB","GB","GB"]},"exp-times":{"exp-time":["Doba osvitu [s]","Belichtung [s]","Exposure [s]","Exposición [s]","Exposition [s]","Esposizione [s]","[s]초 노출","Ekspozicija [s]","Belichting [s]","Czas naświetlania [s]","Osvit [s]"],"inc":["Navýšení expozice (s)","Belichtungszeit inkr. [s]","Exposure time incr. [s]","Incremento tiempo exp. [s]","Incr. du temps d\'exposition [s]","Incremento tempo di esposizione [s]","[s]초 노출 시간 증가","Ekspozicijos laiko padidėjimas [s]","Belichtingstijd verhogen [s]","Przyrost czasu naświetl. [s]","Prírastok osvitu (s)"],"layer-1st":["Osvit první vrstvy [s]","Erste Schicht Bel. [s]","First Layer Expo. [s]","Primera Capa Expo. [s]","Première couche Expo. [s]","Esposizione Primo layer [s]","첫번째 레이어 노출시간 [s]초","Pirmojo sluoksnio ekspozicija [s]","Belichtingstijd eerste laag [s]","Naśw. 1. warstwy [s]","Osvit prvej vrstvy [s]"],"profile":["Tiskový profil","Druckprofil","Print profile","Perfil de Impresión","Profil d\'Impression","Profilo di stampa","출력 프로필","Spausdinimo profilis","Printprofielen","Profil druku","Tlačový profil"],"faster":["Rychlejší","Schneller","Faster","Rápido","Plus rapide","Più veloce","빠르게","Greičiau","Sneller","Szybciej","Rýchlejšie"],"slower":["Pomalejší","Langsamer","Slower","Lento","Plus lent","Più lento","느리게","Lėčiau","Langzamer","Wolniej","Pomalšie"],"high-viscosity":["Velmi Viskózní","Hohe Viskosität","High Viscosity","Alta Viscosidad","Haute viscosité","Alta Viscosità","고점도","Aukštas klampumas","Hoge viscositeit","Wysoka lepkość","Vysoká viskozita"]}}}')}},t={};function a(i){var s=t[i];if(void 0!==s)return s.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.p="",(()=>{"use strict";var e=a(8751),t=a(8495),i=a(6648);const s=()=>{document.getElementById("menu").addEventListener("click",(()=>{document.getElementById("menu").classList.contains("burger-open")?n():(document.getElementById("menu").classList.add("burger-open"),document.getElementById("navbar").classList.remove("burger-menu"))})),document.getElementById("navbar").querySelectorAll("a[href]").forEach((e=>{e.addEventListener("click",n)}))};function n(){document.getElementById("menu").classList.remove("burger-open"),document.getElementById("navbar").classList.add("burger-menu")}var o=a(7780),r=a(1351),l=a(5412);const d=(e,t)=>{const a=l.L.init(e,t);a&&(a.setOptions((0,o.Vb)()),a.value=(0,o.G3)(),a.onselect=e=>{(0,o.m0)(e),window.location.reload()})};let c=!1;const u={status:{get:()=>(0,i.LK)("/api/v1/status"),init:!0,update:!0}};async function p(e){const t=(new Date).getTime(),a=Object.fromEntries(Object.entries(u).map((([a,i])=>[a,(()=>{if(!e)return i.init;if(i.update){if(!i.updateInterval)return!0;if(i.timestamp||(i.timestamp=t+i.updateInterval),t>=i.timestamp)return i.timestamp=t+i.updateInterval,!0}})()?i.get():void 0])).filter((([,e])=>void 0!==e))),i=Object.values(a),s=await Promise.all(i.map((e=>e.then((e=>({ok:!0,payload:e}))).catch((e=>({ok:!e.code&&null,error:e}))))));return Object.fromEntries(Object.entries(a).map((([e],t)=>[e,s[t]])))}async function m(e){let a=!1;for(;;){let i=!1;try{const t=await p(a);t.status&&(c=null===t.status.ok),Object.values(t).forEach((({ok:e,error:t})=>{var a;e||(i=!0,null!==e&&(a=t,(0,r.S)(a,{fallbackMessage:{title:"API error",message:"Cannot connect to printer"}})))})),a?g(t):i||(v({...t,printer:e}),a=!0)}catch(e){h(e)}t.Z.setConnected(!c),await new Promise((e=>setTimeout(e,1e3)))}}function v(a){try{t.Z.init(a),window.onpopstate=t=>t&&(0,e.g9)(t.currentTarget.location.hash||"#dashboard"),(0,e.g9)(window.location.hash||"#dashboard")}catch(e){h(e)}}function g(e){try{t.Z.update(e)}catch(e){h(e)}}function h(e){(0,r.S)(e,{fallbackMessage:{title:"Application error",message:"Something bad happened on application side"}}),console.error(e)}window.onload=()=>{console.log("PrusaLink v.3.12.0 #b'7d3168c'"),s(),d("lang-dropdown","lang-dropdown"),(0,o.ot)(),document.querySelectorAll("a[href]").forEach((t=>{t.addEventListener("click",(a=>{(0,e.c4)(t.href)&&a.preventDefault()}))})),(0,i.Z5)().then((e=>{e&&m(e)}))}})()})(); diff --git a/prusa/link/static/main.97b8f9c3a3e4f084379b.css b/prusa/link/static/main.97b8f9c3a3e4f084379b.css new file mode 100644 index 00000000..f02b9c11 --- /dev/null +++ b/prusa/link/static/main.97b8f9c3a3e4f084379b.css @@ -0,0 +1 @@ +@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@-webkit-keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}html{font-size:32pt;font-family:Helvetica,sans-serif;overflow:-moz-scrollbars-vertical;overflow-y:scroll}@media only screen and (min-width:992px){html{font-size:14pt}}select{font-family:Helvetica,sans-serif}.txt-bold,select{font-weight:700}.txt-italic{font-style:italic}.uppercase{text-transform:uppercase}.txt-orange{color:#fa6831}.txt-grey{color:#707070}.txt-black{color:#000!important}.txt-lg{font-size:1.25rem}.txt-md,button>p,nav{font-size:1rem}.txt-sm{font-size:.75rem}.txt-center{text-align:center}button>p{font-family:Helvetica,sans-serif;font-weight:700;width:100%;margin:6px}.flex-row{display:flex}.flex-col,.tel-prop>div{display:flex;flex-direction:column}.grow{flex-grow:1}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.mr-md{margin-right:12px}.ml-md{margin-left:12px}.rounded{border-radius:50%}button.rounded{padding:0;margin:0}button.rounded img{padding:4px;margin:0}button.rounded:hover{background-color:#5b5b5b}button,html,nav>ul a,select{color:#efefef}#upld-direct p,.progress>p,nav>ul a{text-align:left}html{line-height:1.5;-webkit-text-size-adjust:100%}.node-btn-list>li .icon-small,body,p{margin:0}body,body>.header{background-color:#0a0a0a}a,button.rounded{background-color:transparent}a:not([href]){cursor:pointer}a:not([href]):hover{text-decoration:underline}img{border-style:none;height:auto;width:100%;max-width:100%}[hidden]{display:none!important}.icon{width:48px;height:48px;min-width:48px}.icon-small{width:32px;height:32px;min-width:32px;margin-right:4px}button>img{width:36px;height:36px;min-width:36px;margin:2px}button,input{font-family:inherit;font-size:100%;line-height:1.15;margin:0;overflow:visible}button::-moz-focus-inner{border-style:none;padding:0}.header{position:relative}.header__line{position:absolute;bottom:0;width:100%;height:2px;background-color:#707070;z-index:4}#title,.component>p,.line,.line-y{border-bottom:1px solid #bababa;border-radius:0}.component p.title{padding-bottom:.25rem;line-height:1.5;margin-bottom:15px}.line-y{border-top:1px solid #bababa}button:-moz-focusring{outline:ButtonText dotted 1px}progress{vertical-align:baseline}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.header{padding:32px 0}.node:hover,.upld:hover{background-color:#313131;cursor:pointer}.content{display:block;margin:0 auto;max-width:1280px;padding:0 40px}body>.content{margin-top:16px}.component>p{display:flex;margin:0}nav{display:flex;flex-wrap:wrap;min-width:685px;align-items:stretch}nav .logo-wrapper{min-width:240px;display:flex;align-self:flex-start;padding:4px 0 16px;flex-grow:1}nav .brand-logo,nav>ul a{display:flex;align-items:center}nav .brand-logo{order:1;flex-grow:1;justify-content:center}nav .brand-logo img{max-width:75%}nav .navbar-burger,nav>ul{display:flex;flex-direction:column}nav>ul{order:3;align-items:stretch;flex-grow:1;width:100%;margin:0;padding:32px 0}nav>ul>li{display:flex;list-style-type:none}nav>ul>li.active{border-bottom:2px solid #fa6831}nav>ul a{list-style:none;text-decoration:none;width:100%;padding:32px}nav .navbar-burger{order:0;align-items:flex-end;align-self:flex-end;margin-bottom:auto;margin-top:auto}nav .navbar-burger div{transition-duration:.5s;background-color:#efefef;width:100px;height:12px;margin:11px 0;display:flex;opacity:1}.burger-menu{display:none;white-space:nowrap}nav .navbar-burger.burger-open div:first-child{transform:rotateZ(45deg) scaleX(1.25) translate(19px,31px)}nav .navbar-burger.burger-open div:nth-child(2){transition-property:opacity;opacity:0}nav .navbar-burger.burger-open div:last-child{transform:rotateZ(-45deg) scaleX(1.25) translate(13px,-24px)}#lang-dropdown{order:2;text-transform:uppercase}.telemetry{display:block;padding:0;position:sticky;position:-webkit-sticky;top:78px}#lang-dropdown,.tel-prop{display:flex;align-items:center}.tel-prop{padding:12px 0;width:45%}#upld-remote .upld-details>div,.tel-prop>img{margin-right:1rem}.tel-prop>div>p{margin:0;line-height:1.5}.content-wrapper{display:flex;flex-direction:column}.main{display:block;flex-grow:1;padding:12px 0 0}#title{width:100%;padding-bottom:.25rem}.title-printer{margin-left:inherit;margin-bottom:0}#title,.main-wrapper{display:flex;flex-direction:column;justify-content:space-between}.main-wrapper{flex-grow:1;margin:0 0 .75rem}.progress-bar{background:#fff;position:relative;min-height:5px;overflow-y:visible;display:flex;align-items:center;justify-content:center}.progress-bar>.fill{background:#fa6831;position:absolute;z-index:1}.progress-bar>p{z-index:2}.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.connection-status[ok=false] [ok]:not([ok=false]),.connection-status[ok=true] [ok]:not([ok=true]),[data-tab]:not([opened=true]){display:none}[data-tab-btn][selected=true]{color:#fa6831}.component,.separator{flex-grow:1}.component{flex-wrap:wrap;padding-top:64px;line-height:1}.component-inline{padding-top:0}.component-fixed{flex:0 0 auto}.abs-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}#upld a{text-decoration:underline}#upld a:hover{text-decoration:none}#upld .form-row{margin-bottom:24px}#upld .form-submit,#upld-direct-frame div{display:flex;align-items:center}#upld .upld-source{display:flex;align-items:end;flex-wrap:wrap;margin-bottom:24px}#upld .state-choose-checkbox{flex:1 1 0}#upld-direct-frame{position:relative;border:2px dashed #fff;padding:24px}#upld-direct-frame div{flex-direction:row;justify-content:center}#upld-direct input[type=file]{position:absolute;opacity:0;width:100%;height:100%;top:-2.4px;left:-2.4px;padding:2.4px}#upld-direct input[type=file]:hover{cursor:pointer}#upld-direct .state-choose{opacity:0}#upld-direct .state-uploading{display:none;width:100%;height:100%}#drop-zone,#drop-zone div,#upld-direct .state-uploading img{width:100%;height:100%}#upld-direct[data-state=choose] .state-choose{opacity:1}#upld-direct[data-state=uploading] .state-uploading,.kebab>ul.open{display:block}#upld-remote input[type=text]{width:100%;box-sizing:border-box;line-height:1.5;margin:4px 0}#upld-remote .upld-details{display:flex;flex-wrap:wrap;margin-top:1rem}#upld-remote .progress-bar{height:36px;overflow:hidden}#upld-remote .progress-bar p{position:absolute;left:0;right:0;top:50%;transform:translate(0,-50%);padding:2px;overflow-x:auto;overflow-y:hidden;white-space:nowrap}#upld-remote[data-state=choose] .state-uploading,#upld-remote[data-state=uploading] .state-choose{display:none}#drop-zone{position:fixed;top:0;left:0;background-color:#000;opacity:.8;z-index:9999;padding:10px}#drop-zone input[type=file]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0}#drop-zone div{display:flex;align-items:center;justify-content:center}#graph{position:relative;width:520px}.temp-svg{pointer-events:all;top:0;right:2.5%;bottom:0;left:2.5%}.temp-g-label{max-width:100%;height:100%;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.temp-legend-blue{fill:#1b73f8}.temp-legend-orange{fill:#fa6831}#temp-line-blue,#temp-line-orange,#temp-line-yellow{fill:transparent;opacity:1;stroke-width:1%}#temp-line-blue{stroke:#1b73f8}#temp-line-orange{stroke:#fa6831}#temp-line-yellow{stroke:#f3f12c}.temp-text{fill:#efefef;font-size:10.5pt;letter-spacing:normal;padding:8px;stroke:transparent;stroke-width:0}.temp-label-line{stroke:#efefef;fill:transparent;stroke-width:2px}.temp-connect-text,.temp-h-line,.temp-label-line{stroke-linecap:round;stroke-linejoin:round}.temp-h-line{stroke:gray;stroke-dasharray:none;fill:none;pointer-events:painted}.temp-connect-text{stroke:#efefef;size:5px;fill:transparent;stroke-width:1px}.temp-line-text{font-size:10.5pt;padding:5px;fill:#efefef;letter-spacing:normal;stroke:transparent;stroke-width:0}#files{width:100%;margin-top:16px}.node-icon-box,.node-img-box{margin-right:12px}.node,.node-btn-list>li{display:flex;align-items:center;padding:6px 0}.node-icon,.node-img{position:absolute;width:100%;height:100%;top:0;left:0;right:0;bottom:0;-o-object-fit:contain;object-fit:contain}.node-icon{max-width:80px;max-height:80px;margin:auto}.node-icon-box,.node-img-box{flex-shrink:0;position:relative;width:150px;height:150px;align-self:stretch}.node-icon-box{height:100px}.node-header,.node-wrapper{display:flex;grid-gap:12px;gap:12px}.node-wrapper{width:100%;flex-direction:column}.node-header{justify-content:space-between}.node-header>p{-ms-word-break:break-all;word-break:break-all;margin:0}.node-details{display:flex;flex-wrap:wrap;width:100%;grid-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.node-details .details{display:flex;flex-direction:column;justify-content:flex-end}.node-current{display:flex;flex-direction:column;align-items:stretch;padding:6px 0}.node-btn-list{display:flex;list-style:none;margin:0;padding:0}.node-btn-list>li{padding:5px;cursor:pointer}.node-btn-list>li:not([disabled]):hover{background-color:rgba(255,255,255,.1);border-radius:50%}.node-btn-list>li[disabled]{cursor:default;pointer-events:none;opacity:.3}#node-storage{margin-top:16px}.node-storage-space{display:flex;margin-top:10px;grid-column-gap:15px;-moz-column-gap:15px;column-gap:15px;align-items:center;justify-content:flex-end}.node-storage-space .progress-bar{flex-grow:1;max-width:200px}.node-upload-source{margin:0;padding:0;list-style:none;display:flex}.node-upload-source>li{display:flex}.dropdown li.selected,.node-upload-source>li[selected=true],.storage-select-btn:hover span{color:#fa6831}.node-upload-source>li:not(:first-child)::before{content:"\00a0|\00a0";color:#fff}#preview-wrapper{display:flex;align-items:start;justify-content:start;flex-wrap:wrap;position:relative}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(10,10,10,.5)}.loading-overlay>img{width:20%;height:20%}.job-details{width:100%;margin-left:1rem}.job-prop{display:flex;padding-bottom:12px}.job-prop>.icon{margin:12px 6px 6px}.job-prop p{padding:.2rem}.job-prop-grid{display:grid;grid-template-columns:repeat(2,1fr);flex-grow:1}.job-buttons{margin-top:16px;flex-wrap:wrap;justify-content:flex-start}.job-buttons button{margin:0 12px 12px 0}.job-buttons:first-child button{margin-left:0}button{text-transform:none;display:flex;align-items:center;border-radius:6px;border-color:transparent}button:hover{cursor:pointer}button:disabled{cursor:default;pointer-events:none;box-shadow:none;opacity:.5}.action{background-color:#5b5b5b}.action:hover{background-color:#6b6868}.action:disabled{background-color:#5b5b5b;border-color:#dbdbdb}.yes{background-color:#35a913}.yes:hover{background-color:#6ba959}.yes:disabled{background-color:#35a913;border-color:#dbdbdb}.no{background-color:#be0000}.no:hover{background-color:#b34a4a}.no:disabled{background-color:#be0000;border-color:#dbdbdb}.outlined{border-style:solid;background-color:transparent;border-color:#fff}.outlined:hover{background-color:#fff;color:#000}.message{display:flex;justify-content:center;margin-top:15%;margin-bottom:15%}.progress{margin-bottom:16px}#job{width:100%;margin-top:1rem}#job .file-name{margin-bottom:20px}#job .progress{width:100%;font-size:40px}.progress-img{flex:1 1 auto;min-width:320px}.progress-img>.background{filter:grayscale(1);background:#363636;width:100%;height:auto;display:block}.progress-img>.foreground{position:absolute;top:0;left:0;width:100%;height:auto;display:block}.progress-with-img,.progress-with-img>div{display:flex;flex:1 1 auto}.progress-with-img .progress-pct{display:flex;padding:0 0 0 1rem;align-items:center;justify-content:left;flex:0 0 auto;flex-wrap:nowrap}.progress-with-img .progress-bar{height:auto;width:20px;flex-shrink:0;background:#242526}.preview-img-wrapper{display:flex;flex-grow:1;flex-wrap:wrap;position:relative}.job-buttons,.refill{display:flex}.refill{margin:10px 0 20px}.refill div:first-child{padding-right:6px}.refill div:last-child{padding-left:6px}#control .row{display:flex;flex-direction:row;width:100%}#control .col,#control .resp-row{display:flex;flex-direction:column}#control .resp-row{width:100%;flex-wrap:wrap}#control .resp-group{display:flex;justify-content:space-between;flex-grow:1}#control .resp-group .col:last-child{margin:0 auto}#control .txt-underline{border-bottom:1px solid #707070;padding-bottom:.25rem}#control .title{margin:1rem 0}#control img{-webkit-user-drag:none}#control .rectangle,#control .square{min-width:6rem;width:6rem;height:6rem;margin:.5rem;border-radius:8px;padding:0}#control .square{display:flex;align-items:center;justify-content:center}#control .rectangle{width:100%}#control .input-wrapper{display:flex;margin:.25rem;border-radius:12px;background:#fff}#control .input-wrapper>.square{margin:0;width:auto}#control .input-wrapper>.square:first-child{border-radius:8px 0 0 8px;background-color:#5b5b5b}#control .input-wrapper>.square:last-child{border-radius:0 8px 8px 0}#control input[type=text]{margin:0;padding:0;border:0;width:150px;flex-grow:1;text-align:center}#control .grid-container{display:grid;grid-template-columns:auto auto}#control .grid-item:nth-child(even){text-align:right}#control .separator{display:flex;flex-grow:1}#control button[selected],#control button[selected]:disabled{border:0;background:#fa6831;opacity:1}.modal{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(10,10,10,.86);opacity:0;visibility:hidden;z-index:5}.modal-box{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#4a4a4a;padding:1rem 1.5rem;border-radius:.5rem;z-index:1000}.modal-box.offline-screen{background-color:transparent;text-align:center}.close-button{float:right;text-align:center;border-radius:.25rem;background-color:rgba(10,10,10,.2);border:0;border-radius:50px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:40px;max-height:40px;max-width:40px;min-height:40px;min-width:40px;outline:0;position:relative;vertical-align:top;width:40px}.close-button:after{height:50%;width:2px}.close-button:before{height:2px;width:50%}.close-button:after,.close-button:before{background-color:#efefef;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.show-modal{opacity:1;visibility:visible;transform:scale(1)}.modal-welcome img{width:90%;padding-bottom:20px}.modal-welcome p{padding:.2rem;text-align:center}.modal-welcome p:last-child{margin-top:2rem}.modal-apiKey>p{padding:.2rem}.modal-apiKey>p:first-child{padding-bottom:1.5rem;padding-top:1rem}.modal-apiKey>input{width:100%;box-sizing:border-box;margin-bottom:5px;border-radius:4px;min-height:2.2rem;margin-top:5px}.modal-apiKey>button{float:right}.modal-confirm>div>div{margin:15px 15px 15px 0}.modal-exposure{display:grid;grid-template-columns:7fr 1fr 3fr 1fr;grid-template-rows:auto;margin-bottom:10px;justify-items:center}.modal-exposure>p{width:100%;align-self:center;white-space:nowrap}.modal-exposure>img{border-radius:50%;cursor:pointer;width:48px;height:48px}.modal-exposure #next,.modal-exposure #previous{display:none}.modal-sysupgrade__message{padding-top:16px}.file-name__form flex-row,.modal-sysupgrade__message p{margin-bottom:16px}#question{display:flex;justify-content:center;margin-top:15%;margin-bottom:15%}#prusa-toast{line-height:1.5;display:flex;flex-direction:column;z-index:4;position:fixed;right:0;bottom:0;font-size:1.25rem}#prusa-toast>article{display:block;text-align:center;margin:7px;-webkit-animation:slideInUp .5s,zoomOut .5s 10s;animation:slideInUp .5s,zoomOut .5s 10s}.toast-header{text-align:center;align-items:center;border-radius:10px 10px 0 0;display:flex;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative;color:#efefef;background-color:#4a4a4a}.toast-body{word-break:break-all;padding:1.25em 1.5em;border-radius:0 0 10px 10px;color:defines.#efefef;background-color:#707070}#prusa-toast>article.warning>div.toast-header{color:rgba(0,0,0,.7);background-color:#ffdd57}#prusa-toast>article.warning>div.toast-body{color:#947600;background-color:#fffbeb}#prusa-toast>article.success>div.toast-header{color:#efefef;background-color:#48c774}#prusa-toast>article.success>div.toast-body{color:#257942;background-color:#effaf3}#prusa-toast>article.error>div.toast-header{color:#efefef;background-color:#f14668}#prusa-toast>article.error>div.toast-body{color:#cc0f35;background-color:#feecf0}#prusa-toast>article.error,#prusa-toast>article.warning{-webkit-animation:slideInUp .5s;animation:slideInUp .5s}.dropdown{align-self:center;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}#log-list{text-transform:none}.dropdown .open,.storage-select .open{visibility:visible}.dropdown ul{background-color:#0a0a0a;border:1px solid #707070;list-style:none;padding:0;margin:0;max-height:280px;overflow-y:auto}.dropdown li,.dropdown-btn{cursor:pointer;padding:16px 0}.dropdown li{padding:15px 20px;white-space:nowrap}.dropdown li.select{color:#fff;background:#fa6831}.dropdown-btn img{height:.7em;width:.7em;max-width:none;padding:0}.dropdown-content{top:90%;min-width:100%;position:absolute;visibility:collapse;z-index:5}.storage-select{display:flex;align-items:stretch;text-transform:uppercase;position:relative;width:100%;color:#000}.storage-select-left{width:0;border-bottom:1px solid #d5d5d5}.storage-select-right{flex:0 0 auto;border-bottom:1px solid #d5d5d5}.storage-select .icon{padding:0 8px}.storage-select-content{background:#fff;position:absolute;visibility:collapse;z-index:3;list-style:none;padding:0;margin:0;border-radius:6px;border:1px solid #d5d5d5;width:100%}.storage-select-content>li{display:flex;align-items:center;padding:16px 0;cursor:pointer}.storage-select-content>li:hover{background:#d5d5d5}.storage-select-btn{flex:1 0 0}.storage-select-btn-inner{display:flex;align-items:center;flex:1 0 0}.storage-select-btn{cursor:pointer;padding:16px 0;display:flex;align-items:center;border-radius:6px;background:#fff;border:1px solid #d5d5d5}.storage-select-btn img:last-child{margin-left:auto;border-left:1px solid #d5d5d5;padding:0 10px}.kebab{position:relative}.kebab>ul{position:absolute;right:0;z-index:3;display:none;list-style:none;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin:0;padding:0;background-color:#f1f1f1;border:1px solid rgba(0,0,0,.15);border-radius:4px;cursor:default}.kebab>ul>li{padding:0 24px;display:flex;align-items:center;cursor:pointer}.kebab>ul>li:not([disabled]):hover{background-color:rgba(0,0,0,.1)}.kebab>ul>li>.icon{margin:12px 12px 12px 0}.kebab>ul>li[disabled]{cursor:default;pointer-events:none;opacity:.3}.kebab>ul>li:first-child{padding-top:12px}.kebab>ul>li:last-child{padding-bottom:12px}.loading{display:flex;justify-content:center;width:100%;margin-top:15%;margin-bottom:15%}.loading>img{width:60px;height:auto}input[type=password]:disabled,input[type=text]:disabled{background:0 0;border:0;color:#fff}.edit{cursor:pointer}#settings input[type=password],#settings input[type=text]{line-height:1.5;width:100%}#settings button{min-width:120px}#settings .table{padding:7px 0;max-width:800px}#settings .row{display:flex;flex-wrap:wrap}#settings .col{word-wrap:break-word;box-sizing:border-box;display:flex;align-items:center;padding-bottom:7px}#settings .col:nth-child(1){width:30%;justify-content:flex-end;text-align:right}#settings .col:nth-child(2){width:70%;flex-grow:1}#settings .col:nth-child(3){width:70%;margin-left:30%}#settings .col:nth-child(1),#settings .col:nth-child(2){padding-right:15px}#settings .logs{display:block;background:#fff;color:#000;height:12rem;overflow:auto;line-height:1.5;list-style:none;padding:10px;position:relative}#settings .logs li{width:100%;word-wrap:break-word;word-break:break-all}.connection-status p{display:flex}.connection-status img{margin-left:7px}.conn-status-msg{margin:0}.camera__snapshot,.file-name__form input{display:block}.camera-snapshot-meta{list-style:none;padding:0;display:flex;flex-direction:row;grid-gap:16px;gap:16px;margin:16px 0}.camera-snapshot-meta p{line-height:1.5}.file-name__form,.file-name__submit{margin-top:16px}.camera-settings__form label{padding-right:8px;text-align:left}.camera-settings__form .flex-row{margin:16px 0}#cameras-list{margin:0;padding:0}#cameras-list li{list-style:none}.camera__snapshot{cursor:pointer}.camera__preview{width:100px;height:100px;display:flex;align-items:center}.camera__preview img{width:100%;height:auto}.camera-settings__form .dropdown-btn{padding:0}.sort-bar{margin:0;padding:0}.sort-by{margin-left:16px;cursor:pointer;align-items:center}.sort-by p{margin-right:8px}.sort-asc,.sort-desc{fill:#efefef}.asc .sort-asc,.desc .sort-desc{fill:#fa6831}.sort-direction{justify-content:center}@media only screen and (max-width:991.5px){.pc-only{display:none}.camera-snapshot-meta{flex-direction:column}}@media only screen and (min-width:992px){.mobile-only{display:none}.header{padding:0;position:-webkit-sticky;position:sticky;top:0;z-index:4}nav .logo-wrapper{flex-grow:0}nav{flex-direction:inherit}nav>ul{flex-wrap:nowrap;flex-direction:row;width:inherit;padding:0}nav>ul>li{position:relative;z-index:5;margin-top:4px;border-bottom:2px solid #707070}nav>ul>li a{padding:0 16px}nav>ul>li:hover{border-bottom:2px solid #efefef}nav .dropdown{padding:0;align-self:unset!important;min-width:-webkit-fit-content!important;min-width:-moz-fit-content!important;min-width:fit-content!important}.dropdown li{padding:2px 4px}#lang-dropdown{order:4}.burger-menu,.kebab-responsive>ul.open{display:flex}nav .brand-logo{max-height:100%;max-width:300px;min-height:auto;margin-bottom:auto;flex-grow:0;justify-content:flex-start}nav .brand-logo img{max-width:none;max-height:none;width:auto;height:auto}nav .navbar-burger{display:none}#telemetry-wrapper{flex:0 0 auto;width:256px}.tel-prop{width:100%}#title,.content-wrapper{flex-direction:row}.title-printer{margin-left:auto}.icon,button>img{width:24px;height:24px;min-width:24px}.icon-small{width:20px;height:20px;min-width:20px}button{border-radius:4px}#preview-wrapper{flex-wrap:nowrap}.job-title{display:flex;flex-direction:row}.job-title p{flex:1 0 0}.progress>progress{width:96%}.modal-welcome img{width:75%}#lang{margin-top:0}#settings .col:nth-child(1){width:25%}#settings .col:nth-child(2){width:45%}#settings .col:nth-child(3){width:30%;margin-left:0}#control .rectangle,#control .square{min-width:3.5rem;height:3.5rem;margin:.25rem;border-radius:4px}#control .square{width:3.5rem}#control .resp-row{flex-direction:row;justify-content:space-between}#control .input-wrapper>.square:first-child{border-radius:4px 0 0 4px;background-color:#5b5b5b}#control .input-wrapper>.square:last-child{border-radius:0 4px 4px 0}#job .progress,#prusa-toast{font-size:1rem}.close-button{height:40px;max-height:40px;max-width:40px;min-height:40px;min-width:40px}.node-current{flex-direction:row}.node,.node-btn-list{padding-right:5px}.node .node-btn-list{padding-right:0}.node-icon{max-width:48px;max-height:48px}.node-img-box{width:100px;height:100px}.node-icon-box{width:100px;height:60px}.kebab-responsive>.kebab-menu{display:none}.kebab-responsive>ul{position:static;display:flex;background:0 0;border:0}.kebab-responsive>ul>li,.kebab-responsive>ul>li:first-child,.kebab-responsive>ul>li:last-child{padding:5px}.kebab-responsive>ul>li:last-child{margin-right:-5px}.kebab-responsive>ul>li:not([disabled]):hover{background-color:rgba(255,255,255,.1);border-radius:50%}.kebab-responsive>ul>li .icon{margin:0}.storage-select{color:#fff;border-radius:0}.storage-select-btn{display:none}.storage-select-content{visibility:visible;position:static;border:0;background:0 0;list-style:none;display:flex;width:auto}.storage-select-content>li{display:flex;align-items:center;padding:5px 30px 5px 5px;cursor:pointer;border:1px solid transparent;border-bottom-color:#bababa}.storage-select-content>li:hover{background:0 0}.storage-select-content>li[selected=false]:hover{background:#313131}.storage-select-content>li[selected=true]{color:#fa6831;border:1px solid #bababa;border-bottom:1px solid #0a0a0a}.storage-select-left{width:10px}.storage-select-right{flex:1 0 auto}.job-buttons-separator{flex:1 0 0}.camera-snapshot-meta{flex-direction:row}}@media only screen and (min-width:1200px){.home-row{flex-direction:row}.home-row>div:not(:first-child){padding-left:12px}.home-row>div:first-child{padding-right:12px}}