From 0f54555b52f71f29c6eccfaf542c24d0b69e3b0b Mon Sep 17 00:00:00 2001 From: Joxit Date: Sun, 11 Apr 2021 02:09:52 +0200 Subject: [PATCH] fix: env variables in entrypoint and blank demo page --- bin/entrypoint | 14 ++++-------- demo/index.html | 28 ++++++++--------------- dist/docker-registry-ui.css | 1 + dist/docker-registry-ui.js | 20 ++++++++++++++++ dist/images/docker-logo.svg | 2 +- dist/index.html | 6 +++-- dist/scripts/docker-registry-ui-static.js | 18 --------------- dist/scripts/docker-registry-ui.js | 18 --------------- dist/scripts/vendor.js | 5 ---- dist/style.css | 18 --------------- dist/vendor.css | 1 - 11 files changed, 41 insertions(+), 90 deletions(-) create mode 100644 dist/docker-registry-ui.css create mode 100644 dist/docker-registry-ui.js delete mode 100644 dist/scripts/docker-registry-ui-static.js delete mode 100644 dist/scripts/docker-registry-ui.js delete mode 100644 dist/scripts/vendor.js delete mode 100644 dist/style.css delete mode 100644 dist/vendor.css diff --git a/bin/entrypoint b/bin/entrypoint index eb34220..13eb78d 100755 --- a/bin/entrypoint +++ b/bin/entrypoint @@ -4,17 +4,13 @@ sed -i "s,\${REGISTRY_URL},${REGISTRY_URL}," index.html sed -i "s,\${REGISTRY_TITLE},${REGISTRY_TITLE}," index.html sed -i "s,\${PULL_URL},${PULL_URL}," index.html sed -i "s,\${SINGLE_REGISTRY},${SINGLE_REGISTRY}," index.html +sed -i "s/\${CATALOG_ELEMENTS_LIMIT}/${CATALOG_ELEMENTS_LIMIT}/" index.html +sed -i "s/\${SHOW_CONTENT_DIGEST}/${SHOW_CONTENT_DIGEST}/" index.html if [ -z "${DELETE_IMAGES}" ] || [ "${DELETE_IMAGES}" = false ] ; then - sed -i -r "s/\${DELETE_IMAGES}/false/" index.html -fi - -if [ "${SHOW_CONTENT_DIGEST}" = false ] ; then - sed -i -r "s/\${SHOW_CONTENT_DIGEST}/false/" index.html -fi - -if [ -n "${CATALOG_ELEMENTS_LIMIT}" ] ; then - sed -i -r "s/\${CATALOG_ELEMENTS_LIMIT}/${CATALOG_ELEMENTS_LIMIT}/" index.html + sed -i "s/\${DELETE_IMAGES}/false/" index.html +else + sed -i "s/\${DELETE_IMAGES}/true/" index.html fi get_nginx_proxy_headers() { diff --git a/demo/index.html b/demo/index.html index 2b94757..b0253d9 100644 --- a/demo/index.html +++ b/demo/index.html @@ -36,24 +36,16 @@ - - + + + \ No newline at end of file +-->Docker Registry UI \ No newline at end of file diff --git a/dist/scripts/docker-registry-ui-static.js b/dist/scripts/docker-registry-ui-static.js deleted file mode 100644 index 14bd37a..0000000 --- a/dist/scripts/docker-registry-ui-static.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * docker-registry-ui - * Copyright (C) 2016-2019 Jones Magloire @Joxit - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -function Http(){this.oReq=new XMLHttpRequest,this.oReq.hasHeader=Http.hasHeader,this.oReq.getErrorMessage=Http.getErrorMessage,this._events={},this._headers={}}Http.prototype.getContentDigest=function(t){this.oReq.hasHeader("Docker-Content-Digest")?t(this.oReq.getResponseHeader("Docker-Content-Digest")):window.crypto&&window.TextEncoder&&crypto.subtle.digest("SHA-256",(new TextEncoder).encode(this.oReq.responseText)).then(function(e){t("sha256:"+Array.from(new Uint8Array(e)).map(function(t){return t.toString(16).padStart(2,"0")}).join(""))})},Http.prototype.addEventListener=function(t,e){this._events[t]=e;const i=this;switch(t){case"loadend":i.oReq.addEventListener("loadend",function(){if(401==this.status){const t=new XMLHttpRequest;for(key in t.open(i._method,i._url),i._events)t.addEventListener(key,i._events[key]);for(key in i._headers)t.setRequestHeader(key,i._headers[key]);t.withCredentials=!0,t.hasHeader=Http.hasHeader,t.getErrorMessage=Http.getErrorMessage,i.oReq=t,t.send()}else e.bind(this)()});break;case"load":i.oReq.addEventListener("load",function(){401!==this.status&&e.bind(this)()});break;default:i.oReq.addEventListener(t,function(){e.bind(this)()})}},Http.prototype.setRequestHeader=function(t,e){this.oReq.setRequestHeader(t,e),this._headers[t]=e},Http.prototype.open=function(t,e){this._method=t,this._url=e,this.oReq.open(t,e)},Http.prototype.send=function(){this.oReq.send()},Http.hasHeader=function(t){return this.getAllResponseHeaders().split("\n").some(function(e){return new RegExp("^"+t+":","i").test(e)})},Http.getErrorMessage=function(){return registryUI.url()&®istryUI.url().match("^http://")&&"https:"===window.location.protocol?"Mixed Content: The page at `"+window.location.origin+"` was loaded over HTTPS, but requested an insecure server endpoint `"+registryUI.url()+"`. This request has been blocked; the content must be served over HTTPS.":registryUI.url()?this.withCredentials&&!this.hasHeader("Access-Control-Allow-Credentials")?"The `Access-Control-Allow-Credentials` header in the response is missing and must be set to `true` when the request's credentials mode is on. Origin `"+registryUI.url()+"` is therefore not allowed access.":"An error occured: Check your connection and your registry must have `Access-Control-Allow-Origin` header set to `"+window.location.origin+"`":"Incorrect server endpoint."};var registryUI={url:function(){var t="${URL}";return t||((t=window.location.origin+window.location.pathname).endsWith("/")?t.substr(0,t.length-1):t)},name:function(){const t="${REGISTRY_TITLE}";return t},pullUrl:"${PULL_URL}",isImageRemoveActivated:!0,showContentDigest:!0,catalogElementsLimit:1e5,catalog:{},taglist:{},taghistory:{}};window.addEventListener("DOMContentLoaded",function(){riot.mount("*")}),registryUI.bytesToSize=function(t){if(null==t||isNaN(t))return"?";if(0==t)return"0 Byte";const e=parseInt(Math.floor(Math.log(t)/Math.log(1024)));return Math.ceil(t/Math.pow(1024,e))+" "+["Bytes","KB","MB","GB","TB"][e]},registryUI.dateFormat=function(t){if(void 0===t)return"";const e=["a second","seconds","a minute","minutes","an hour","hours","a day","days","a month","months","a year","years"],i=[1,60,3600,86400,2592e3,31104e3,1/0],r=(new Date-t)/1e3;for(var a=0;a=r)return e[2*a];if(i[a+1]>r)return Math.floor(r/i[a])+" "+e[2*a+1]}},registryUI.getHistoryIcon=function(t){switch(t){case"architecture":return"memory";case"created":return"event";case"docker_version":return"";case"os":return"developer_board";case"Cmd":return"launch";case"Entrypoint":return"input";case"Env":return"notes";case"Labels":return"label";case"User":return"face";case"Volumes":return"storage";case"WorkingDir":return"home";case"author":return"account_circle";case"id":case"digest":return"settings_ethernet";case"created_by":return"build";case"size":return"get_app";case"ExposedPorts":return"router"}},registryUI.getPage=function(t,e,i){return i||(i=100),t?t.slice((e-1)*i,i*e):[]},registryUI.getNumPages=function(t,e){return e||(e=100),t?Math.trunc(t.length/e)+1:0},registryUI.getPageLabels=function(t,e){var i=[];if(1===e)return i;1!==t&&e>=10&&(i.push({icon:"first_page",page:1}),i.push({icon:"chevron_left",page:t-1}));for(var r=Math.round(Math.max(1,Math.min(t-5,e-10+1))),a=r;a10,"space-right":t===e&&e>10});return t!==e&&e>=10&&(i.push({icon:"chevron_right",page:t+1}),i.push({icon:"last_page",page:e})),i},registryUI.updateQueryString=function(t){var e="";for(var i in t)void 0!==t[i]&&(e+=(e.length>0?"&":"?")+i+"="+t[i]);history.pushState(null,"",e+window.location.hash)},registryUI.stripHttps=function(t){return t?t.replace(/^https?:\/\//,""):""},registryUI.eventTransfer=function(t,e){t.on("*",function(t,i){e.trigger(t,i)})},riot.tag2("app",'
',"","",function(t){registryUI.appTag=this,route.base("#!"),route("",function(){route.routeName="home",registryUI.catalog.display&&(registryUI.catalog.loadend=!1),registryUI.appTag.update()}),route("/taglist/*",function(t){route.routeName="taglist",registryUI.taglist.name=t,registryUI.taglist.display&&(registryUI.taglist.loadend=!1),registryUI.appTag.update()}),route("/taghistory/image/*/tag/*",function(t,e){route.routeName="taghistory",registryUI.taghistory.image=t,registryUI.taghistory.tag=e,registryUI.taghistory.display&&(registryUI.taghistory.loadend=!1),registryUI.appTag.update()}),registryUI.home=function(){"home"==route.routeName?registryUI.catalog.display:route("")},registryUI.taghistory.go=function(t,e){route("/taghistory/image/"+t+"/tag/"+e)},registryUI.snackbar=function(t,e){registryUI.appTag.tags["material-snackbar"].addToast({message:t,isError:e},15e3)},registryUI.errorSnackbar=function(t){return registryUI.snackbar(t,!0)},registryUI.showErrorCanNotReadContentDigest=function(){registryUI.errorSnackbar("Access on registry response was blocked. Try adding the header `Access-Control-Expose-Headers: Docker-Content-Digest` to your proxy or registry: https://docs.docker.com/registry/configuration/#http")},registryUI.cleanName=function(){const t=registryUI.pullUrl||registryUI.url()&®istryUI.url().length>0&®istryUI.url()||window.location.host;return registryUI.stripHttps(t)},route.parser(null,function(t,e){const i=e.replace(/\?/g,"\\?").replace(/\*/g,"([^?#]+?)").replace(/\.\./,".*"),r=new RegExp("^"+i+"$"),a=t.match(r);if(a)return a.slice(1)}),registryUI.isDigit=function(t){return t>="0"&&t<="9"},registryUI.DockerImage=function(t,e,i){this.name=t,this.tag=e,this.list=i,this.chars=0,riot.observable(this),this.on("get-size",function(){return void 0!==this.size?this.trigger("size",this.size):this.fillInfo()}),this.on("get-sha256",function(){return void 0!==this.size?this.trigger("sha256",this.sha256):this.fillInfo()}),this.on("get-date",function(){return void 0!==this.creationDate?this.trigger("creation-date",this.creationDate):this.fillInfo()}),this.on("content-digest-chars",function(t){this.chars=t}),this.on("get-content-digest-chars",function(){return this.trigger("content-digest-chars",this.chars)}),this.on("get-content-digest",function(){return void 0!==this.digest?this.trigger("content-digest",this.digest):this.fillInfo()})},registryUI.DockerImage._tagReduce=function(t,e){return t.length>0&®istryUI.isDigit(t[t.length-1].charAt(0))==registryUI.isDigit(e)?t[t.length-1]+=e:t.push(e),t},registryUI.DockerImage.compare=function(t,e){const i=t.tag.match(/./g).reduce(registryUI.DockerImage._tagReduce,[]),r=e.tag.match(/./g).reduce(registryUI.DockerImage._tagReduce,[]);for(var a=0;a send {typeof opts.item === ⁗string⁗ ? opts.item : opts.item.repo}
{opts.item.images && opts.item.images.length} images expand_more
',"","",function(t){this.on("mount",function(){const t=this,e=this.tags["material-card"];e&&(e.launch=function(t){e.tags["material-waves"].trigger("launch",t)},this.item.images&&1===this.item.images.length&&(this.item=this.item.images[0]),e.root.onclick=function(e){t.item.repo?(t.expanded=!t.expanded,t.update({expanded:t.expanded,expanding:!0}),setTimeout(function(){t.update({expanded:t.expanded,expanding:!1})},50)):registryUI.taglist.go(t.item)})})}),riot.tag2("catalog",'

Repositories of {registryUI.name()}
{registryUI.catalog.length} images

',"","",function(t){registryUI.catalog.instance=this,registryUI.catalog.display=function(){registryUI.catalog.repositories=[];const t=new Http;t.addEventListener("load",function(){registryUI.catalog.repositories=[],200==this.status?(registryUI.url()||(registryUI._url=window.location.origin+window.location.pathname.replace(/\/+$/,"")),registryUI.catalog.repositories=JSON.parse(this.responseText).repositories||[],registryUI.catalog.repositories.sort(),registryUI.catalog.length=registryUI.catalog.repositories.length,registryUI.catalog.repositories=registryUI.catalog.repositories.reduce(function(t,e){const i=e.indexOf("/");if(i>0){const r=e.substring(0,i)+"/";return 0!=t.length&&t[t.length-1].repo==r||t.push({repo:r,images:[]}),t[t.length-1].images.push(e),t}return t.push(e),t},[])):404==this.status?registryUI.snackbar("Server not found",!0):registryUI.snackbar(this.responseText)}),t.addEventListener("error",function(){registryUI.snackbar(this.getErrorMessage(),!0),registryUI.catalog.repositories=[]}),t.addEventListener("loadend",function(){registryUI.catalog.loadend=!0,registryUI.catalog.instance.update()}),t.open("GET",registryUI.url()+"/v2/_catalog?n="+registryUI.catalogElementsLimit),t.send()},registryUI.catalog.display()}),riot.tag2("copy-to-clipboard",'
content_copy
',"","",function(t){this.prefix="docker pull "+registryUI.cleanName()+"/"+t.image.name;const e=this;"tag"===t.target?e.dockerCmd=e.prefix+":"+t.image.tag:(t.image.one("content-digest",function(t){e.dockerCmd=e.prefix+"@"+t}),t.image.trigger("get-content-digest")),this.copy=function(){if(!e.dockerCmd)return void registryUI.showErrorCanNotReadContentDigest();const t=this.refs.input;t.style.display="block",t.select(),document.execCommand("copy"),t.style.display="none",registryUI.snackbar("`"+this.dockerCmd+"` has been copied to clipboard.")}}),riot.tag2("image-content-digest",'
{this.display_id}
',"","",function(t){const e=this;e.chars=-1,e.onResize=function(t){t!==e.chars&&(e.chars=t,t>=70?(e.display_id=e.digest,e.title=""):t<=0?(e.display_id="",e.title=e.digest):(e.display_id=e.digest.slice(0,t)+"...",e.title=e.digest),e.update())},t.image.one("content-digest",function(i){e.digest=i,t.image.on("content-digest-chars",e.onResize),t.image.trigger("get-content-digest-chars")}),t.image.trigger("get-content-digest")}),riot.tag2("image-date",'
{registryUI.dateFormat(this.date)} ago
',"","",function(t){const e=this;t.image.on("creation-date",function(t){e.date=t,e.localDate=t.toLocaleString(),e.update()}),t.image.trigger("get-date")}),riot.tag2("image-size",'
{registryUI.bytesToSize(this.size)}
',"","",function(t){const e=this;t.image.on("size",function(t){e.size=t,e.update()}),t.image.trigger("get-size")}),riot.tag2("image-tag",'
{opts.image.tag}
',"","",function(t){const e=this;t.image.on("sha256",function(t){e.sha256=t.substring(0,19),e.update()}),t.image.trigger("get-sha256")}),riot.tag2("pagination",'
{p.icon}
{p.page}
',"","",function(t){this.on("updated",function(){this.tags["material-button"]&&(Array.isArray(this.tags["material-button"])?this.tags["material-button"]:[this.tags["material-button"]]).forEach(function(t){t.root.onclick=function(){registryUI.taglist.instance.trigger("page-update",t.p.page)}})})}),riot.tag2("remove-image",' delete ',"","",function(t){const e=this;this.on("updated",function(){e.multiDelete!=e.opts.multiDelete&&(e.tags["material-button"]&&(e.delete=function(t){const i=e.opts.image.name,r=e.opts.image.tag;if(registryUI.taglist.go(i),!e.digest)return void registryUI.snackbar("Information for "+i+":"+r+" are not yet loaded.");const a=new Http;a.addEventListener("loadend",function(){200==this.status||202==this.status?(registryUI.taglist.display(),registryUI.snackbar("Deleting "+i+":"+r+" image. Run `registry garbage-collect config.yml` on your registry")):404==this.status?t||registryUI.errorSnackbar("Digest not found for this image in your registry."):registryUI.snackbar(this.responseText)}),a.open("DELETE",registryUI.url()+"/v2/"+i+"/manifests/"+e.digest),a.setRequestHeader("Accept","application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json"),a.addEventListener("error",function(){registryUI.errorSnackbar("An error occurred when deleting image. Check if your server accept DELETE methods Access-Control-Allow-Methods: ['DELETE'].")}),a.send()},e.tags["material-button"].root.onclick=function(){e.delete()}),e.tags["material-checkbox"]&&(!e.opts.multiDelete&&e.tags["material-checkbox"].checked&&e.tags["material-checkbox"].toggle(),e.tags["material-checkbox"].on("toggle",function(){registryUI.taglist.instance.trigger("toggle-remove-image",this.checked)})),e.multiDelete=e.opts.multiDelete)}),t.image.one("content-digest",function(t){e.digest=t,e.update()}),t.image.trigger("get-content-digest")}),riot.tag2("tag-history-button",' history ',"","",function(t){this.on("mount",function(){const t=this;this.refs.button.root.onclick=function(){registryUI.taghistory.go(t.opts.image.name,t.opts.image.tag)}}),this.update()}),riot.tag2("tag-history-element",'
{registryUI.getHistoryIcon(entry.key)}

{entry.key.replace(\'_\', \' \')}

{entry.value}
{e}
',"",'class="{entry.key}"',function(t){}),riot.tag2("tag-history",'
arrow_back

History of {registryUI.taghistory.image}:{registryUI.taghistory.tag} history

',"","",function(t){const e=this,i=function(t){switch(t){case"created":return 1;case"created_by":return 2;case"size":return 3;case"os":return 4;case"architecture":return 5;case"id":return 6;case"linux":return 7;case"docker_version":return 8;default:return 10}},r=function(t,e){return i(t.key)-i(e.key)},a=function(t,e){switch(t){case"created":return new Date(e).toLocaleString();case"created_by":const i=e.match(/\/bin\/sh *-c *#\(nop\) *([A-Z]+)/);return i&&i[1]||"RUN";case"size":return registryUI.bytesToSize(e);case"Entrypoint":case"Cmd":return(e||[]).join(" ");case"Labels":return Object.keys(e||{}).map(function(t){return e[t]?t+"="+e[t]:""});case"Volumes":case"ExposedPorts":return Object.keys(e)}return e||""},s=function(t){function i(t){const e=[];for(var i in t)if(t.hasOwnProperty(i)&&"empty_layer"!=i){const r=t[i],s={key:i,value:a(i,r)};e.push(s)}return e.sort(r)}e.elements=new Array(t.history.length+1),e.elements[0]=i(function(t){const e=["architecture","User","created","docker_version","os","Cmd","Entrypoint","Env","Labels","User","Volumes","WorkingDir","author","id","ExposedPorts"].reduce(function(e,i){const r=t[i]||t.config[i];return r&&"architecture"===i&&t.variant?e[i]=r+t.variant:r&&(e[i]=r),e},{});return!e.author&&e.Labels&&e.Labels.maintainer&&(e.author=t.config.Labels.maintainer,delete e.Labels.maintainer),e}(t)),t.history.forEach(function(r,a){e.elements[t.history.length-a]=i(r)}),registryUI.taghistory.loadend=!0,e.update()},n=function(t){t=t.manifests||t,e.archs=t.map(function(t){return{title:t.platform.os+"/"+t.platform.architecture+(t.platform.variant?t.platform.variant:""),digest:t.digest}}),e.update()};e.tabchanged=function(t,i){if(e.elements=[],e.image.variants[i]=e.image.variants[i]||new registryUI.DockerImage(registryUI.taghistory.image,t.digest),e.image.variants[i].blobs)return s(e.image.variants[i].blobs);e.image.variants[i].fillInfo(),e.image.variants[i].on("blobs",s)},registryUI.taghistory.display=function(){e.elements=[],e.image=new registryUI.DockerImage(registryUI.taghistory.image,registryUI.taghistory.tag,!0),e.image.fillInfo(),e.image.on("blobs",s),e.image.on("list",n)},this.on("mount",function(){e.refs["tag-history-tag"].tags["material-button"].root.onclick=function(){registryUI.taglist.go(registryUI.taghistory.image)}}),registryUI.taghistory.display(),e.update()}),riot.tag2("taglist",'
arrow_back

Tags of {registryUI.taglist.name}
Sourced from {registryUI.name() + \'/\' + registryUI.taglist.name}
{registryUI.taglist.tags.length} tags

Creation date Size Content Digest Tag History delete
',"","",function(t){var e=registryUI.taglist.instance=this;e.page=registryUI.getPageQueryParam(),registryUI.taglist.tags=[];const i=function(){const t=window.innerWidth;var e=0,i=registryUI.taglist.tags.reduce(function(t,e){return e.tag.length>t?e.tag.length:t},0);e=t>=1440?71:t<1024?0:15+(t-1024)/416*56,i>20&&(e-=i-20),registryUI.taglist.tags.map(function(t){t.trigger("content-digest-chars",e)})};window.addEventListener("resize",i),window.requestAnimationFrame(i),this.multiDelete=!1,this.toDelete=0,this.on("delete",function(){registryUI.isImageRemoveActivated&&this.multiDelete}),this.on("multi-delete",function(){registryUI.isImageRemoveActivated&&(this.multiDelete=!this.multiDelete)}),this.on("toggle-remove-image",function(t){t?this.toDelete++:this.toDelete--,this.toDelete<=1&&this.update()}),this.on("page-update",function(t){e.page=t<1?1:t,registryUI.updateQueryString(registryUI.getQueryParams({page:e.page})),this.toDelete=0,this.update()}),this._getRemoveImageTags=function(){var t=e.refs["taglist-tag"].tags["remove-image"];return t instanceof Array||(t=[t]),t},registryUI.taglist.bulkDelete=function(t){e.multiDelete&&e.toDelete>0&&(t.altKey&&e._getRemoveImageTags().filter(function(t){return t.tags["material-checkbox"].checked}).forEach(function(t){t.tags["material-checkbox"].toggle()}),e._getRemoveImageTags().filter(function(t){return t.tags["material-checkbox"].checked}).forEach(function(t){t.delete(!0)}))},this.on("update",function(){var t=this.refs["taglist-tag"].refs["remove-tag-checkbox"];t&&!t._toggle&&(t._toggle=t.toggle,t.toggle=function(t){t.altKey?(this.checked||this._toggle(),e._getRemoveImageTags().filter(function(t){return!t.tags["material-checkbox"].checked}).forEach(function(t){t.tags["material-checkbox"].toggle()})):this._toggle()},t.on("toggle",function(){registryUI.taglist.instance.multiDelete=this.checked,registryUI.taglist.instance.update()}))}),registryUI.taglist.display=function(){if(registryUI.taglist.tags=[],"taglist"==route.routeName){const t=new Http;registryUI.taglist.instance.update(),t.addEventListener("load",function(){if(registryUI.taglist.tags=[],200==this.status){const t=JSON.parse(this.responseText).tags||[];registryUI.taglist.tags=t.map(function(t){return new registryUI.DockerImage(registryUI.taglist.name,t)}).sort(registryUI.DockerImage.compare),window.requestAnimationFrame(i),e.trigger("page-update",Math.min(e.page,registryUI.getNumPages(registryUI.taglist.tags)))}else 404==this.status?registryUI.snackbar("Server not found",!0):registryUI.snackbar(this.responseText,!0)}),t.addEventListener("error",function(){registryUI.snackbar(this.getErrorMessage(),!0),registryUI.taglist.tags=[]}),t.addEventListener("loadend",function(){registryUI.taglist.loadend=!0,registryUI.taglist.instance.update()}),t.open("GET",registryUI.url()+"/v2/"+registryUI.taglist.name+"/tags/list"),t.send(),registryUI.taglist.asc=!0}},registryUI.taglist.display(),registryUI.taglist.instance.update(),registryUI.taglist.reverse=function(){registryUI.taglist.asc?(registryUI.taglist.tags.reverse(),registryUI.taglist.asc=!1):(registryUI.taglist.tags.sort(registryUI.DockerImage.compare),registryUI.taglist.asc=!0),registryUI.taglist.instance.update()}}); \ No newline at end of file diff --git a/dist/scripts/docker-registry-ui.js b/dist/scripts/docker-registry-ui.js deleted file mode 100644 index f4d69a3..0000000 --- a/dist/scripts/docker-registry-ui.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * docker-registry-ui - * Copyright (C) 2016-2019 Jones Magloire @Joxit - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -function Http(){this.oReq=new XMLHttpRequest,this.oReq.hasHeader=Http.hasHeader,this.oReq.getErrorMessage=Http.getErrorMessage,this._events={},this._headers={}}Http.prototype.getContentDigest=function(t){this.oReq.hasHeader("Docker-Content-Digest")?t(this.oReq.getResponseHeader("Docker-Content-Digest")):window.crypto&&window.TextEncoder&&crypto.subtle.digest("SHA-256",(new TextEncoder).encode(this.oReq.responseText)).then(function(e){t("sha256:"+Array.from(new Uint8Array(e)).map(function(t){return t.toString(16).padStart(2,"0")}).join(""))})},Http.prototype.addEventListener=function(t,e){this._events[t]=e;const r=this;switch(t){case"loadend":r.oReq.addEventListener("loadend",function(){if(401==this.status){const t=new XMLHttpRequest;for(key in t.open(r._method,r._url),r._events)t.addEventListener(key,r._events[key]);for(key in r._headers)t.setRequestHeader(key,r._headers[key]);t.withCredentials=!0,t.hasHeader=Http.hasHeader,t.getErrorMessage=Http.getErrorMessage,r.oReq=t,t.send()}else e.bind(this)()});break;case"load":r.oReq.addEventListener("load",function(){401!==this.status&&e.bind(this)()});break;default:r.oReq.addEventListener(t,function(){e.bind(this)()})}},Http.prototype.setRequestHeader=function(t,e){this.oReq.setRequestHeader(t,e),this._headers[t]=e},Http.prototype.open=function(t,e){this._method=t,this._url=e,this.oReq.open(t,e)},Http.prototype.send=function(){this.oReq.send()},Http.hasHeader=function(t){return this.getAllResponseHeaders().split("\n").some(function(e){return new RegExp("^"+t+":","i").test(e)})},Http.getErrorMessage=function(){return registryUI.url()&®istryUI.url().match("^http://")&&"https:"===window.location.protocol?"Mixed Content: The page at `"+window.location.origin+"` was loaded over HTTPS, but requested an insecure server endpoint `"+registryUI.url()+"`. This request has been blocked; the content must be served over HTTPS.":registryUI.url()?this.withCredentials&&!this.hasHeader("Access-Control-Allow-Credentials")?"The `Access-Control-Allow-Credentials` header in the response is missing and must be set to `true` when the request's credentials mode is on. Origin `"+registryUI.url()+"` is therefore not allowed access.":"An error occured: Check your connection and your registry must have `Access-Control-Allow-Origin` header set to `"+window.location.origin+"`":"Incorrect server endpoint."};var registryUI={URL_QUERY_PARAM_REGEX:/[&?]url=/,URL_PARAM_REGEX:/^url=/,showContentDigest:!0,catalogElementsLimit:1e5,url:function(t){if(!registryUI._url){const t=registryUI.getUrlQueryParam();if(t)try{return registryUI._url=registryUI.decodeURI(t),registryUI._url}catch(t){console.log(t)}registryUI._url=registryUI.getRegistryServer(0)}return registryUI._url},name:function(){return registryUI.stripHttps(registryUI.url())},getRegistryServer:function(t){try{const e=JSON.parse(localStorage.getItem("registryServer"));if(e instanceof Array)return isNaN(t)?e.map(function(t){return t.trim().replace(/\/*$/,"")}):e[t]}catch(t){}return isNaN(t)?[]:""},addServer:function(t){const e=registryUI.getRegistryServer();t=t.trim().replace(/\/*$/,""),-1==e.indexOf(t)&&(e.push(t),registryUI._url||registryUI.updateHistory(t),localStorage.setItem("registryServer",JSON.stringify(e)))},changeServer:function(t){var e=registryUI.getRegistryServer();t=t.trim().replace(/\/*$/,"");const r=e.indexOf(t);-1!=r&&(e.splice(r,1),e=[t].concat(e),registryUI.updateHistory(t),localStorage.setItem("registryServer",JSON.stringify(e)))},removeServer:function(t){const e=registryUI.getRegistryServer();t=t.trim().replace(/\/*$/,"");const r=e.indexOf(t);-1!=r&&(e.splice(r,1),localStorage.setItem("registryServer",JSON.stringify(e)),t==registryUI.url()&&(registryUI.updateHistory(registryUI.getRegistryServer(0)),route("")))},updateHistory:function(t){registryUI.updateQueryString({url:registryUI.encodeURI(t)}),registryUI._url=t},getUrlQueryParam:function(){const t=window.location.search;if(registryUI.URL_QUERY_PARAM_REGEX.test(t)){const e=t.split(/^\?|&/).find(function(t){return t&®istryUI.URL_PARAM_REGEX.test(t)});return e?e.replace(registryUI.URL_PARAM_REGEX,""):e}},encodeURI:function(t){if(t)return t.indexOf("&")<0?window.encodeURIComponent(t):btoa(t)},decodeURI:function(t){if(t)return t.startsWith("http")?window.decodeURIComponent(t):atob(t)},isImageRemoveActivated:!0,catalog:{},taglist:{},taghistory:{}};window.addEventListener("DOMContentLoaded",function(){riot.mount("*")}),registryUI.bytesToSize=function(t){if(null==t||isNaN(t))return"?";if(0==t)return"0 Byte";const e=parseInt(Math.floor(Math.log(t)/Math.log(1024)));return Math.ceil(t/Math.pow(1024,e))+" "+["Bytes","KB","MB","GB","TB"][e]},registryUI.dateFormat=function(t){if(void 0===t)return"";const e=["a second","seconds","a minute","minutes","an hour","hours","a day","days","a month","months","a year","years"],r=[1,60,3600,86400,2592e3,31104e3,1/0],i=(new Date-t)/1e3;for(var a=0;a=i)return e[2*a];if(r[a+1]>i)return Math.floor(i/r[a])+" "+e[2*a+1]}},registryUI.getHistoryIcon=function(t){switch(t){case"architecture":return"memory";case"created":return"event";case"docker_version":return"";case"os":return"developer_board";case"Cmd":return"launch";case"Entrypoint":return"input";case"Env":return"notes";case"Labels":return"label";case"User":return"face";case"Volumes":return"storage";case"WorkingDir":return"home";case"author":return"account_circle";case"id":case"digest":return"settings_ethernet";case"created_by":return"build";case"size":return"get_app";case"ExposedPorts":return"router"}},registryUI.getPage=function(t,e,r){return r||(r=100),t?t.slice((e-1)*r,r*e):[]},registryUI.getNumPages=function(t,e){return e||(e=100),t?Math.trunc(t.length/e)+1:0},registryUI.getPageLabels=function(t,e){var r=[];if(1===e)return r;1!==t&&e>=10&&(r.push({icon:"first_page",page:1}),r.push({icon:"chevron_left",page:t-1}));for(var i=Math.round(Math.max(1,Math.min(t-5,e-10+1))),a=i;a10,"space-right":t===e&&e>10});return t!==e&&e>=10&&(r.push({icon:"chevron_right",page:t+1}),r.push({icon:"last_page",page:e})),r},registryUI.updateQueryString=function(t){var e="";for(var r in t)void 0!==t[r]&&(e+=(e.length>0?"&":"?")+r+"="+t[r]);history.pushState(null,"",e+window.location.hash)},registryUI.stripHttps=function(t){return t?t.replace(/^https?:\/\//,""):""},registryUI.eventTransfer=function(t,e){t.on("*",function(t,r){e.trigger(t,r)})},riot.tag2("app",'
',"","",function(t){registryUI.appTag=this,route.base("#!"),route("",function(){route.routeName="home",registryUI.catalog.display&&(registryUI.catalog.loadend=!1),registryUI.appTag.update()}),route("/taglist/*",function(t){route.routeName="taglist",registryUI.taglist.name=t,registryUI.taglist.display&&(registryUI.taglist.loadend=!1),registryUI.appTag.update()}),route("/taghistory/image/*/tag/*",function(t,e){route.routeName="taghistory",registryUI.taghistory.image=t,registryUI.taghistory.tag=e,registryUI.taghistory.display&&(registryUI.taghistory.loadend=!1),registryUI.appTag.update()}),registryUI.home=function(){"home"==route.routeName?registryUI.catalog.display:route("")},registryUI.taghistory.go=function(t,e){route("/taghistory/image/"+t+"/tag/"+e)},registryUI.snackbar=function(t,e){registryUI.appTag.tags["material-snackbar"].addToast({message:t,isError:e},15e3)},registryUI.errorSnackbar=function(t){return registryUI.snackbar(t,!0)},registryUI.showErrorCanNotReadContentDigest=function(){registryUI.errorSnackbar("Access on registry response was blocked. Try adding the header `Access-Control-Expose-Headers: Docker-Content-Digest` to your proxy or registry: https://docs.docker.com/registry/configuration/#http")},registryUI.cleanName=function(){const t=registryUI.pullUrl||registryUI.url()&®istryUI.url().length>0&®istryUI.url()||window.location.host;return registryUI.stripHttps(t)},route.parser(null,function(t,e){const r=e.replace(/\?/g,"\\?").replace(/\*/g,"([^?#]+?)").replace(/\.\./,".*"),i=new RegExp("^"+r+"$"),a=t.match(i);if(a)return a.slice(1)}),registryUI.isDigit=function(t){return t>="0"&&t<="9"},registryUI.DockerImage=function(t,e,r){this.name=t,this.tag=e,this.list=r,this.chars=0,riot.observable(this),this.on("get-size",function(){return void 0!==this.size?this.trigger("size",this.size):this.fillInfo()}),this.on("get-sha256",function(){return void 0!==this.size?this.trigger("sha256",this.sha256):this.fillInfo()}),this.on("get-date",function(){return void 0!==this.creationDate?this.trigger("creation-date",this.creationDate):this.fillInfo()}),this.on("content-digest-chars",function(t){this.chars=t}),this.on("get-content-digest-chars",function(){return this.trigger("content-digest-chars",this.chars)}),this.on("get-content-digest",function(){return void 0!==this.digest?this.trigger("content-digest",this.digest):this.fillInfo()})},registryUI.DockerImage._tagReduce=function(t,e){return t.length>0&®istryUI.isDigit(t[t.length-1].charAt(0))==registryUI.isDigit(e)?t[t.length-1]+=e:t.push(e),t},registryUI.DockerImage.compare=function(t,e){const r=t.tag.match(/./g).reduce(registryUI.DockerImage._tagReduce,[]),i=e.tag.match(/./g).reduce(registryUI.DockerImage._tagReduce,[]);for(var a=0;a send {typeof opts.item === ⁗string⁗ ? opts.item : opts.item.repo}
{opts.item.images && opts.item.images.length} images expand_more
',"","",function(t){this.on("mount",function(){const t=this,e=this.tags["material-card"];e&&(e.launch=function(t){e.tags["material-waves"].trigger("launch",t)},this.item.images&&1===this.item.images.length&&(this.item=this.item.images[0]),e.root.onclick=function(e){t.item.repo?(t.expanded=!t.expanded,t.update({expanded:t.expanded,expanding:!0}),setTimeout(function(){t.update({expanded:t.expanded,expanding:!1})},50)):registryUI.taglist.go(t.item)})})}),riot.tag2("catalog",'

Repositories of {registryUI.name()}
{registryUI.catalog.length} images

',"","",function(t){registryUI.catalog.instance=this,registryUI.catalog.display=function(){registryUI.catalog.repositories=[];const t=new Http;t.addEventListener("load",function(){registryUI.catalog.repositories=[],200==this.status?(registryUI.url()||(registryUI._url=window.location.origin+window.location.pathname.replace(/\/+$/,"")),registryUI.catalog.repositories=JSON.parse(this.responseText).repositories||[],registryUI.catalog.repositories.sort(),registryUI.catalog.length=registryUI.catalog.repositories.length,registryUI.catalog.repositories=registryUI.catalog.repositories.reduce(function(t,e){const r=e.indexOf("/");if(r>0){const i=e.substring(0,r)+"/";return 0!=t.length&&t[t.length-1].repo==i||t.push({repo:i,images:[]}),t[t.length-1].images.push(e),t}return t.push(e),t},[])):404==this.status?registryUI.snackbar("Server not found",!0):registryUI.snackbar(this.responseText)}),t.addEventListener("error",function(){registryUI.snackbar(this.getErrorMessage(),!0),registryUI.catalog.repositories=[]}),t.addEventListener("loadend",function(){registryUI.catalog.loadend=!0,registryUI.catalog.instance.update()}),t.open("GET",registryUI.url()+"/v2/_catalog?n="+registryUI.catalogElementsLimit),t.send()},registryUI.catalog.display()}),riot.tag2("copy-to-clipboard",'
content_copy
',"","",function(t){this.prefix="docker pull "+registryUI.cleanName()+"/"+t.image.name;const e=this;"tag"===t.target?e.dockerCmd=e.prefix+":"+t.image.tag:(t.image.one("content-digest",function(t){e.dockerCmd=e.prefix+"@"+t}),t.image.trigger("get-content-digest")),this.copy=function(){if(!e.dockerCmd)return void registryUI.showErrorCanNotReadContentDigest();const t=this.refs.input;t.style.display="block",t.select(),document.execCommand("copy"),t.style.display="none",registryUI.snackbar("`"+this.dockerCmd+"` has been copied to clipboard.")}}),riot.tag2("image-content-digest",'
{this.display_id}
',"","",function(t){const e=this;e.chars=-1,e.onResize=function(t){t!==e.chars&&(e.chars=t,t>=70?(e.display_id=e.digest,e.title=""):t<=0?(e.display_id="",e.title=e.digest):(e.display_id=e.digest.slice(0,t)+"...",e.title=e.digest),e.update())},t.image.one("content-digest",function(r){e.digest=r,t.image.on("content-digest-chars",e.onResize),t.image.trigger("get-content-digest-chars")}),t.image.trigger("get-content-digest")}),riot.tag2("image-date",'
{registryUI.dateFormat(this.date)} ago
',"","",function(t){const e=this;t.image.on("creation-date",function(t){e.date=t,e.localDate=t.toLocaleString(),e.update()}),t.image.trigger("get-date")}),riot.tag2("image-size",'
{registryUI.bytesToSize(this.size)}
',"","",function(t){const e=this;t.image.on("size",function(t){e.size=t,e.update()}),t.image.trigger("get-size")}),riot.tag2("image-tag",'
{opts.image.tag}
',"","",function(t){const e=this;t.image.on("sha256",function(t){e.sha256=t.substring(0,19),e.update()}),t.image.trigger("get-sha256")}),riot.tag2("pagination",'
{p.icon}
{p.page}
',"","",function(t){this.on("updated",function(){this.tags["material-button"]&&(Array.isArray(this.tags["material-button"])?this.tags["material-button"]:[this.tags["material-button"]]).forEach(function(t){t.root.onclick=function(){registryUI.taglist.instance.trigger("page-update",t.p.page)}})})}),riot.tag2("remove-image",' delete ',"","",function(t){const e=this;this.on("updated",function(){e.multiDelete!=e.opts.multiDelete&&(e.tags["material-button"]&&(e.delete=function(t){const r=e.opts.image.name,i=e.opts.image.tag;if(registryUI.taglist.go(r),!e.digest)return void registryUI.snackbar("Information for "+r+":"+i+" are not yet loaded.");const a=new Http;a.addEventListener("loadend",function(){200==this.status||202==this.status?(registryUI.taglist.display(),registryUI.snackbar("Deleting "+r+":"+i+" image. Run `registry garbage-collect config.yml` on your registry")):404==this.status?t||registryUI.errorSnackbar("Digest not found for this image in your registry."):registryUI.snackbar(this.responseText)}),a.open("DELETE",registryUI.url()+"/v2/"+r+"/manifests/"+e.digest),a.setRequestHeader("Accept","application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json"),a.addEventListener("error",function(){registryUI.errorSnackbar("An error occurred when deleting image. Check if your server accept DELETE methods Access-Control-Allow-Methods: ['DELETE'].")}),a.send()},e.tags["material-button"].root.onclick=function(){e.delete()}),e.tags["material-checkbox"]&&(!e.opts.multiDelete&&e.tags["material-checkbox"].checked&&e.tags["material-checkbox"].toggle(),e.tags["material-checkbox"].on("toggle",function(){registryUI.taglist.instance.trigger("toggle-remove-image",this.checked)})),e.multiDelete=e.opts.multiDelete)}),t.image.one("content-digest",function(t){e.digest=t,e.update()}),t.image.trigger("get-content-digest")}),riot.tag2("tag-history-button",' history ',"","",function(t){this.on("mount",function(){const t=this;this.refs.button.root.onclick=function(){registryUI.taghistory.go(t.opts.image.name,t.opts.image.tag)}}),this.update()}),riot.tag2("tag-history-element",'
{registryUI.getHistoryIcon(entry.key)}

{entry.key.replace(\'_\', \' \')}

{entry.value}
{e}
',"",'class="{entry.key}"',function(t){}),riot.tag2("tag-history",'
arrow_back

History of {registryUI.taghistory.image}:{registryUI.taghistory.tag} history

',"","",function(t){const e=this,r=function(t){switch(t){case"created":return 1;case"created_by":return 2;case"size":return 3;case"os":return 4;case"architecture":return 5;case"id":return 6;case"linux":return 7;case"docker_version":return 8;default:return 10}},i=function(t,e){return r(t.key)-r(e.key)},a=function(t,e){switch(t){case"created":return new Date(e).toLocaleString();case"created_by":const r=e.match(/\/bin\/sh *-c *#\(nop\) *([A-Z]+)/);return r&&r[1]||"RUN";case"size":return registryUI.bytesToSize(e);case"Entrypoint":case"Cmd":return(e||[]).join(" ");case"Labels":return Object.keys(e||{}).map(function(t){return e[t]?t+"="+e[t]:""});case"Volumes":case"ExposedPorts":return Object.keys(e)}return e||""},s=function(t){function r(t){const e=[];for(var r in t)if(t.hasOwnProperty(r)&&"empty_layer"!=r){const i=t[r],s={key:r,value:a(r,i)};e.push(s)}return e.sort(i)}e.elements=new Array(t.history.length+1),e.elements[0]=r(function(t){const e=["architecture","User","created","docker_version","os","Cmd","Entrypoint","Env","Labels","User","Volumes","WorkingDir","author","id","ExposedPorts"].reduce(function(e,r){const i=t[r]||t.config[r];return i&&"architecture"===r&&t.variant?e[r]=i+t.variant:i&&(e[r]=i),e},{});return!e.author&&e.Labels&&e.Labels.maintainer&&(e.author=t.config.Labels.maintainer,delete e.Labels.maintainer),e}(t)),t.history.forEach(function(i,a){e.elements[t.history.length-a]=r(i)}),registryUI.taghistory.loadend=!0,e.update()},n=function(t){t=t.manifests||t,e.archs=t.map(function(t){return{title:t.platform.os+"/"+t.platform.architecture+(t.platform.variant?t.platform.variant:""),digest:t.digest}}),e.update()};e.tabchanged=function(t,r){if(e.elements=[],e.image.variants[r]=e.image.variants[r]||new registryUI.DockerImage(registryUI.taghistory.image,t.digest),e.image.variants[r].blobs)return s(e.image.variants[r].blobs);e.image.variants[r].fillInfo(),e.image.variants[r].on("blobs",s)},registryUI.taghistory.display=function(){e.elements=[],e.image=new registryUI.DockerImage(registryUI.taghistory.image,registryUI.taghistory.tag,!0),e.image.fillInfo(),e.image.on("blobs",s),e.image.on("list",n)},this.on("mount",function(){e.refs["tag-history-tag"].tags["material-button"].root.onclick=function(){registryUI.taglist.go(registryUI.taghistory.image)}}),registryUI.taghistory.display(),e.update()}),riot.tag2("taglist",'
arrow_back

Tags of {registryUI.taglist.name}
Sourced from {registryUI.name() + \'/\' + registryUI.taglist.name}
{registryUI.taglist.tags.length} tags

Creation date Size Content Digest Tag History delete
',"","",function(t){var e=registryUI.taglist.instance=this;e.page=registryUI.getPageQueryParam(),registryUI.taglist.tags=[];const r=function(){const t=window.innerWidth;var e=0,r=registryUI.taglist.tags.reduce(function(t,e){return e.tag.length>t?e.tag.length:t},0);e=t>=1440?71:t<1024?0:15+(t-1024)/416*56,r>20&&(e-=r-20),registryUI.taglist.tags.map(function(t){t.trigger("content-digest-chars",e)})};window.addEventListener("resize",r),window.requestAnimationFrame(r),this.multiDelete=!1,this.toDelete=0,this.on("delete",function(){registryUI.isImageRemoveActivated&&this.multiDelete}),this.on("multi-delete",function(){registryUI.isImageRemoveActivated&&(this.multiDelete=!this.multiDelete)}),this.on("toggle-remove-image",function(t){t?this.toDelete++:this.toDelete--,this.toDelete<=1&&this.update()}),this.on("page-update",function(t){e.page=t<1?1:t,registryUI.updateQueryString(registryUI.getQueryParams({page:e.page})),this.toDelete=0,this.update()}),this._getRemoveImageTags=function(){var t=e.refs["taglist-tag"].tags["remove-image"];return t instanceof Array||(t=[t]),t},registryUI.taglist.bulkDelete=function(t){e.multiDelete&&e.toDelete>0&&(t.altKey&&e._getRemoveImageTags().filter(function(t){return t.tags["material-checkbox"].checked}).forEach(function(t){t.tags["material-checkbox"].toggle()}),e._getRemoveImageTags().filter(function(t){return t.tags["material-checkbox"].checked}).forEach(function(t){t.delete(!0)}))},this.on("update",function(){var t=this.refs["taglist-tag"].refs["remove-tag-checkbox"];t&&!t._toggle&&(t._toggle=t.toggle,t.toggle=function(t){t.altKey?(this.checked||this._toggle(),e._getRemoveImageTags().filter(function(t){return!t.tags["material-checkbox"].checked}).forEach(function(t){t.tags["material-checkbox"].toggle()})):this._toggle()},t.on("toggle",function(){registryUI.taglist.instance.multiDelete=this.checked,registryUI.taglist.instance.update()}))}),registryUI.taglist.display=function(){if(registryUI.taglist.tags=[],"taglist"==route.routeName){const t=new Http;registryUI.taglist.instance.update(),t.addEventListener("load",function(){if(registryUI.taglist.tags=[],200==this.status){const t=JSON.parse(this.responseText).tags||[];registryUI.taglist.tags=t.map(function(t){return new registryUI.DockerImage(registryUI.taglist.name,t)}).sort(registryUI.DockerImage.compare),window.requestAnimationFrame(r),e.trigger("page-update",Math.min(e.page,registryUI.getNumPages(registryUI.taglist.tags)))}else 404==this.status?registryUI.snackbar("Server not found",!0):registryUI.snackbar(this.responseText,!0)}),t.addEventListener("error",function(){registryUI.snackbar(this.getErrorMessage(),!0),registryUI.taglist.tags=[]}),t.addEventListener("loadend",function(){registryUI.taglist.loadend=!0,registryUI.taglist.instance.update()}),t.open("GET",registryUI.url()+"/v2/"+registryUI.taglist.name+"/tags/list"),t.send(),registryUI.taglist.asc=!0}},registryUI.taglist.display(),registryUI.taglist.instance.update(),registryUI.taglist.reverse=function(){registryUI.taglist.asc?(registryUI.taglist.tags.reverse(),registryUI.taglist.asc=!1):(registryUI.taglist.tags.sort(registryUI.DockerImage.compare),registryUI.taglist.asc=!0),registryUI.taglist.instance.update()}}),riot.tag2("add",'
Add your Server ?
Write your URL without /v2
Add Cancel
',"","",function(t){registryUI.addTag=registryUI.addTag||{},this.one("mount",function(){registryUI.addTag.dialog=this.tags["material-popup"],registryUI.addTag.dialog.getAddServer=function(){return this.tags["material-input"]?this.tags["material-input"].value:""}}),registryUI.addTag.onkeyup=function(t){13==t.keyCode&®istryUI.addTag.add()},registryUI.addTag.show=function(){registryUI.addTag.dialog.open()},registryUI.addTag.add=function(){registryUI.addTag.dialog.getAddServer().length>0&®istryUI.addServer(registryUI.addTag.dialog.getAddServer()),registryUI.home(),registryUI.addTag.close()},registryUI.addTag.close=function(){registryUI.addTag.dialog.tags["material-input"].value="",registryUI.addTag.dialog.close()}}),riot.tag2("change",'
Change your Server ?
Change Cancel
',"","",function(t){registryUI.changeTag=registryUI.changeTag||{},this.one("mount",function(){registryUI.changeTag.dialog=this.tags["material-popup"],registryUI.changeTag.dialog.getServerUrl=function(){return this.refs["server-list"]?this.refs["server-list"].value:""},registryUI.changeTag.dialog.on("updated",function(){this.refs["server-list"]&&(this.refs["server-list"].value=registryUI.url())})}),registryUI.changeTag.show=function(){registryUI.changeTag.dialog.open()},registryUI.changeTag.change=function(){registryUI.changeTag.dialog.getServerUrl().length>0&®istryUI.changeServer(registryUI.changeTag.dialog.getServerUrl()),registryUI.home(),registryUI.changeTag.dialog.close()},registryUI.changeTag.close=function(){registryUI.changeTag.dialog.close()}}),riot.tag2("menu",' more_vert

Add URL

Change URL

Remove URL

',"","",function(t){registryUI.menuTag=registryUI.menuTag||{},registryUI.menuTag.update=this.update,this.one("mount",function(t){const e=this;registryUI.menuTag.close=function(){e.tags["material-dropdown"].close(),e.update()},registryUI.menuTag.isOpen=function(){return e.tags["material-dropdown"].opened},registryUI.menuTag.toggle=function(){e.tags["material-dropdown"].opened?e.tags["material-dropdown"].close():e.tags["material-dropdown"].open(),e.update()}})}),riot.tag2("remove",'
Remove your Registry Server ?
Close
',"","",function(t){registryUI.removeTag=registryUI.removeTag||{},registryUI.removeTag.update=this.update,registryUI.removeTag.removeUrl=function(t){registryUI.removeServer(t),registryUI.removeTag.close()},registryUI.removeTag.close=function(){registryUI.removeTag.dialog.close(),registryUI.removeTag.update()},registryUI.removeTag.show=function(){registryUI.removeTag.dialog.open()},this.one("mount",function(){registryUI.removeTag.dialog=this.tags["material-popup"]})}); \ No newline at end of file diff --git a/dist/scripts/vendor.js b/dist/scripts/vendor.js deleted file mode 100644 index 0d9ddb9..0000000 --- a/dist/scripts/vendor.js +++ /dev/null @@ -1,5 +0,0 @@ -/* Riot v3.13.2, @license MIT */ -var e,t;e=this,t=function(e){"use strict";function a(e,t){return(t||document).querySelector(e)}var t,n,y=[],$={},s="yield",_="__global_mixin",N="riot-",u=["ref","data-ref"],p="data-is",f="if",d="each",r="no-reorder",C="show",O="hide",i="key",x="__riot-events__",o="string",H="object",l="undefined",c="function",h="http://www.w3.org/1999/xlink",m="http://www.w3.org/2000/svg",g=/^xlink:(\w+)/,v=typeof window===l?void 0:window,b=/^on/,w=/([-\w]+) ?= ?(?:"([^"]*)|'([^']*)|({[^}]*}))/g,k={viewbox:"viewBox",preserveaspectratio:"preserveAspectRatio"},A=/^(?:disabled|checked|readonly|required|allowfullscreen|auto(?:focus|play)|compact|controls|default|formnovalidate|hidden|ismap|itemscope|loop|multiple|muted|no(?:resize|shade|validate|wrap)?|open|reversed|seamless|selected|sortable|truespeed|typemustmatch)$/,E=0|(v&&v.document||{}).documentMode;function L(e){return"svg"===e?document.createElementNS(m,e):document.createElement(e)}function T(e,t,n){var r=g.exec(t);r&&r[1]?e.setAttributeNS(h,r[1],n):e.setAttribute(t,n)}var j,M,S={},I=!1;v&&(j=L("style"),M=a("style[type=riot]"),T(j,"type","text/css"),M?(M.id&&(j.id=M.id),M.parentNode.replaceChild(j,M)):document.head.appendChild(j),n=(t=j).styleSheet);var R={styleNode:t,add:function(e,t){S[t]=e,I=!0},inject:function(){if(v&&I){I=!1;var e=Object.keys(S).map(function(e){return S[e]}).join("\n");n?n.cssText=e:t.innerHTML=e}},remove:function(e){delete S[e],I=!0}},P=function(){var u=["case","default","do","else","in","instanceof","prefix","return","typeof","void","yield"],l=u.reduce(function(e,t){return e+t.slice(-1)},""),c=/^\/(?=[^*>/])[^[/\\]*(?:(?:\\.|\[(?:\\.|[^\]\\]*)*\])[^[\\/]*)*?\/[gimuy]*/,p=/[$\w]/;function f(e,t){for(;0<=--t&&/\s/.test(e[t]););return t}return function(e,t){var n=/.*/g,r=n.lastIndex=t++,i=n.exec(e)[0].match(c);if(i){var o=r+i[0].length,a=e[r=f(e,r)];if(r<0||~"[{(,;:?=|&!^~>%*/".indexOf(a))return o;if("."===a)"."===e[r-1]&&(t=o);else if("+"===a||"-"===a)(e[--r]!==a||(r=f(e,r))<0||!p.test(e[r]))&&(t=o);else if(~l.indexOf(a)){for(var s=r+1;0<=--r&&p.test(e[r]););~u.indexOf(e.slice(r+1,s))&&(t=o)}}return t}}(),V=function(e){var t,n,r="g",i=/"[^"\\]*(?:\\[\S\s][^"\\]*)*"|'[^'\\]*(?:\\[\S\s][^'\\]*)*'|`[^`\\]*(?:\\[\S\s][^`\\]*)*`/g,o=i.source+"|"+/(?:\breturn\s+|(?:[$\w\)\]]|\+\+|--)\s*(\/)(?![*\/]))/.source+"|"+/\/(?=[^*\/])[^[\/\\]*(?:(?:\[(?:\\.|[^\]\\]*)*\]|\\.)[^[\/\\]*)*?([^<]\/)[gim]*/.source,a=RegExp("[\\x00-\\x1F<>a-zA-Z0-9'\",;\\\\]"),s=/(?=[[\]()*+?.^$|])/g,u=i.source+"|"+/(\/)(?![*\/])/.source,y={"(":RegExp("([()])|"+u,r),"[":RegExp("([[\\]])|"+u,r),"{":RegExp("([{}])|"+u,r)},l="{ }",c=["{","}","{","}",/{[^}]*}/,/\\([{}])/g,/\\({)|{/g,RegExp("\\\\(})|([[({])|(})|"+u,r),l,/^\s*{\^?\s*([$\w]+)(?:\s*,\s*(\S+))?\s+in\s+(\S.*)\s*}/,/(^|[^\\]){=[\S\s]*?}/],p=void 0,_=[];function f(e){return e}function d(e,t){return t||(t=_),new RegExp(e.source.replace(/{/g,t[2]).replace(/}/g,t[3]),e.global?r:"")}function h(e){if(e===l)return c;var t=e.split(" ");if(2!==t.length||a.test(e))throw new Error('Unsupported brackets "'+e+'"');return(t=t.concat(e.replace(s,"\\").split(" ")))[4]=d(1 %s",e.riotData.tagName||"Unknown tag",this.tmpl),console.log(this.data))}.bind({data:t,tmpl:e})):e}r.hasExpr=V.hasExpr,r.loopKeys=V.loopKeys,r.clearCache=function(){n={}},r.errorHandler=null;var s=/\u2057/g,u=/\u2057(\d+)~/g;var c=/^(?:(-?[_A-Za-z\xA0-\xFF][-\w\xA0-\xFF]*)|\u2057(\d+)~):/,p={"(":/[()]/g,"[":/[[\]]/g,"{":/[{}]/g};function l(o,e,t){if(o=o.replace(/\s+/g," ").trim().replace(/\ ?([[\({},?\.:])\ ?/g,"$1")){for(var n,r=[],i=0;o&&(n=o.match(c))&&!n.index;){var a,s,u=/,|([[{(])|$/g;for(o=RegExp.rightContext,a=n[2]?t[n[2]].slice(1,-1).trim().replace(/\s+/g," "):n[1];s=(n=u.exec(o))[1];)l(s,u);s=o.slice(0,n.index),o=RegExp.rightContext,r[i++]=d(s,1,a)}o=i?1'+t+"","application/xml").documentElement,!0);e.appendChild(r)}else e.innerHTML=t}function ee(e,t){if(e)for(var n;n=w.exec(e);)t(n[1].toLowerCase(),n[2]||n[3]||n[4])}function te(){return document.createDocumentFragment()}function ne(e,t,n){e.insertBefore(t,n.parentNode&&n)}function re(n){return Object.keys(n).reduce(function(e,t){return e+" "+t+": "+n[t]+";"},"")}function ie(e,t,n){if(e){var r,i=t(e,n);if(!1===i)return;for(e=e.firstChild;e;)r=e.nextSibling,ie(e,t,i),e=r}}var oe=Object.freeze({$$:Z,$:a,createDOMPlaceholder:G,mkEl:L,setAttr:T,toggleVisibility:Q,getAttr:J,remAttr:X,setInnerHTML:Y,walkAttrs:ee,createFrag:te,safeInsert:ne,styleObjectToString:re,walkNodes:ie});function ae(e){return D(e)||null===e}function se(e){return ae(e)||""===e}function ue(e){return typeof e===c}function le(e){return e&&typeof e===H}function ce(e){var t=e.ownerSVGElement;return!!t||null===t}function pe(e){return Array.isArray(e)||e instanceof Array}function fe(e){return A.test(e)}function de(e){return typeof e===o}var he=Object.freeze({isBlank:se,isFunction:ue,isObject:le,isSvg:ce,isWritable:F,isArray:pe,isBoolAttr:fe,isNil:ae,isString:de,isUndefined:D});function me(e,t){return-1!==e.indexOf(t)}function ge(e,t){for(var n=e?e.length:0,r=0;r|>([\S\s]*?)<\/yield\s*>|>)/gi,Te=/]*)['"]\s*>([\S\s]*?)<\/yield\s*>/gi,je=/|>([\S\s]*?)<\/yield\s*>)/gi,Me={tr:"tbody",th:"tr",td:"tr",col:"colgroup"},Se=E&&E<10?/^(?:t(?:body|head|foot|[rhd])|caption|col(?:group)?|opt(?:ion|group))$/:/^(?:t(?:body|head|foot|[rhd])|caption|col(?:group)?)$/,Ie="div",Re="svg";function Pe(e,t,n){var r=e&&e.match(/^\s*<([-\w]+)/),i=r&&r[1].toLowerCase(),o=L(n?Re:Ie);return e=function(e,n){if(!Ee.test(e))return e;var r={};return n=n&&n.replace(Te,function(e,t,n){return r[t]=r[t]||n,""}).trim(),e.replace(je,function(e,t,n){return r[t]||n||""}).replace(Le,function(e,t){return n||t||""})}(e,t),Se.test(i)?o=function(e,t,n){var r="o"===n[0],i=r?"select>":"table>";if(e.innerHTML="<"+i+t.trim()+"=V.length,m=l&&p||!l&&!d||!S[n];m?((d=yt(T,{parent:N,isLoop:!0,isAnonymous:R,tagName:L,root:A.cloneNode(R),item:r,index:n},I)).mount(),h?function(e,t){t?ze.call(this,e):e.appendChild(this.root)}.apply(d,[v||_,P]):function(e,t,n){n?ze.apply(this,[e,t]):ne(e,this.root,t.root)}.apply(d,[_,S[n],P]),h||V.splice(n,0,r),S.splice(n,0,d),j&&Ne(N.tags,L,d,!0)):f!==n&&l&&((k||me(g,V[f]))&&(function(e,t,n){n?at.apply(this,[e,t]):ne(e,this.root,t.root)}.apply(d,[_,S[n],P]),S.splice(n,0,S.splice(f,1)[0]),V.splice(n,0,V.splice(f,1)[0])),C.pos&&(d[C.pos]=n),!j&&d.tags&&function(t){var n=this;ge(Object.keys(this.tags),function(e){ot.apply(n.tags[e],[e,t])})}.call(d,n)),K(d.__,{item:r,index:n,parent:N}),x[n]=u,m||d.update(r)}else w++}),function(e,t,n){for(var r=t.length,i=e.length-n;i
',"","",function(t){var e=this;this.dynamicAttributes=["disabled"],this.disabled=t.disabled||!1,this.launch=function(t){e.disabled||e.refs["material-waves"].trigger("launch",t)},this.on("mount",function(){e.refs["material-waves"].on("wavestart",function(t){e.trigger("wavestart",t)}),e.refs["material-waves"].on("waveend",function(){e.trigger("waveend")})}),this.click=function(){t.link&&(window.location.href=t.link),e.trigger("click")},this.mixin("dynamicAttributes")})},function(t,e,i){"use strict";riot.tag2("material-card",'
',"","",function(t){var e=this;this.titleExist=!1,this.on("mount",function(){e.update({titleExist:!!e.root.querySelector(".material-card-title")})}),this.mixin("content")})},function(t,e,i){"use strict";riot.tag2("material-checkbox",'
',"","",function(t){var e=this;this.checked=t.checked||!1,this.disabled=t.disabled||!1,this.toggle=function(){if(e.disabled)return!1;e.update({checked:!e.checked}),e.trigger("toggle",e.checked)}})},function(module,exports,__webpack_require__){"use strict";riot.tag2("material-combo",' ',"","",function(opts){var _this=this;this.items=[],this.title=null;var lastValue=this.value,valueChanged=function(){_this.value!==lastValue&&(lastValue=_this.value,_this.root.dispatchEvent(new CustomEvent("change",{value:_this.value})))};if(this.getOptions=function(){Array.prototype.forEach.call(_this.refs.options.children,function(t,e){if("option"==t.tagName.toLowerCase()){var i={title:t.innerHTML,value:t.getAttribute("value")};_this.items.push(i),null!=t.getAttribute("isSelected")&&(_this.refs.dropdown.update({selected:e}),_this.update({value:i.value||i.title}),valueChanged(),_this.title=i.title)}}),_this.refs.dropdown.update({items:_this.items}),_this.refs.dropdown.selected&&_this.update({hValue:_this.refs.dropdown.items[_this.refs.dropdown.selected].value||_this.refs.dropdown.items[_this.refs.dropdown.selected].title}),_this.update({isParsed:!0}),valueChanged()},opts.items)try{this.items=eval(opts.items)||[],this.items.length&&this.refs.dropdown.update({items:this.items})}catch(t){console.error("Something wrong with your items. For details look at it - "+t)}this.on("mount",function(){_this.getOptions(),_this.refs.dropdown.on("selectChanged",function(t){_this.update({value:_this.refs.dropdown.items[t].value||_this.refs.dropdown.items[t].title}),valueChanged(),_this.refs.input.update({value:_this.refs.dropdown.items[t].title}),setTimeout(function(){_this.refs.dropdown.update({items:_this.items})},200)}),_this.refs.input.on("valueChanged",function(t){_this.refs.dropdown.update({items:_this.filter("items",{title:t})})}),_this.refs.input.on("focusChanged",function(t){_this.refs.input.value==(opts.defaulttext||"Choose item")&&t&&_this.refs.input.update({value:""}),""!=_this.refs.input.value||t||_this.refs.input.update({value:opts.defaulttext||"Choose item"}),t&&_this.refs.dropdown.open()}),_this.refs.dropdown.root.style.top=_this.refs.input.root.getBoundingClientRect().height+"px",_this.refs.input.update({value:_this.title||opts.defaulttext||"Choose item"})}),this.mixin("collection")})},function(module,exports,__webpack_require__){"use strict";riot.tag2("material-dropdown-list",'
',"","",function(opts){var _this=this;if(this.opened=!1,opts.items){try{this.items=eval(opts.items)||[]}catch(t){console.error("Something wrong with your items. For details look at it - "+t)}this.update({items:this.items})}opts.selected&&this.update({selected:opts.selected}),this.select=function(t){return _this.update({selected:t.item.key}),_this.close(),_this.trigger("selectChanged",t.item.key,t.item.item),!0},this.open=function(){_this.update({opened:!0,opening:!0}),_this.opts.extraclose&&document.body.appendChild(_this.refs.overlay),setTimeout(function(){_this.update({opening:!1})},0)},this.close=function(){_this.update({opening:!0}),setTimeout(function(){_this.update({opened:!1})},200)}})},function(t,e,i){"use strict";riot.tag2("material-dropdown",'
',"","",function(t){var e=this;this.opened=t.opened||!1,this.open=function(){e.update({opened:!0,opening:!0}),setTimeout(function(){e.update({opening:!1})},0)},this.close=function(){e.update({opening:!0}),setTimeout(function(){e.update({opened:!1})},200)}})},function(t,e,i){"use strict";riot.tag2("material-footer",' ',"","",function(t){this.mixin("content")})},function(t,e,i){"use strict";riot.tag2("material-input",'
',"","",function(t){var e=this;if(this.opts=t,this.required="",this.name=t.ref||"input",this.notSupportedTypes=["date","color","datetime","month","range","time"],-1!=this.notSupportedTypes.indexOf(t.type))throw new Error("Sorry but we do not support "+t.type+" type yet!");this.update({showIcon:!1}),this.on("mount",function(){e.update({value:t.value||"",disabled:t.disabled||!1,required:t.required||!1}),e.n=t.ref||"default-input",e.refs[e.n].addEventListener("focus",e.changeFocus),e.refs[e.n].addEventListener("blur",e.changeFocus)}),this.changeFocus=function(i){if(e.disabled)return!1;e.update({focused:e.refs[e.n]==document.activeElement}),e.trigger("focusChanged",e.focused,i),t.focuschanged&&"function"==typeof t.focuschanged&&t.focuschanged(e.focused)},this.changeValue=function(i){e.update({value:e.refs[e.n].value}),e.trigger("valueChanged",e.refs[e.n].value,i),t.valuechanged&&"function"==typeof t.valuechanged&&t.valuechanged(e.refs[e.n].value)},this.iconClickHandler=function(t){e.opts.iconclicked&&"function"==typeof e.opts.iconclicked&&e.opts.iconclicked.call(e,t),e.trigger("iconclicked",t)},this.on("update",function(t){t&&void 0!=t.value&&e.validationType&&e.isValid(e.validate(t.value))}),this.isValid=function(t){e.update({error:!t})},this.mixin("validate")})},function(t,e,i){"use strict";riot.tag2("material-navbar",'',"",'role="toolbar"',function(t){})},function(t,e,i){"use strict";riot.tag2("material-pane",'
',"","",function(t){this.mixin("content")})},function(t,e,i){"use strict";riot.tag2("material-popup",'
',"","",function(t){var e=this;this.opened=t.opened||!1,this.on("mount",function(){document.body.appendChild(e.root)}),this.open=function(){e.update({opened:!0,opening:!0}),setTimeout(function(){e.update({opening:!1})},0)},this.close=function(){e.update({opening:!0}),setTimeout(function(){e.update({opened:!1})},200)},this.mixin("content")})},function(t,e,i){"use strict";riot.tag2("material-snackbar",'
{toast.message}
',"","",function(t){var e=this;this.toasts=[],this.intervals={},this.addToast=function(i,n){var o=e.toastID=Math.random().toString(36).substring(7);e.toasts.push(Object.assign(i,{opening:!0,_id:o})),e.update({toasts:e.toasts}),setTimeout(function(){e.toasts[e.findToastKeyByID(o)].opening=!1,e.update({toasts:e.toasts})},50),e.intervals[o]=setTimeout(function(){e.removeToast(o)},t.duration||n||5e3)},this.removeToastAfterDurationEnding=function(t){e.removeToast(t)},this.findToastKeyByID=function(t){var i=null;return e.toasts.forEach(function(e,n){e._id==t&&(i=n)}),i},this.removeToastByClick=function(t){var i=t.item.toast._id;clearInterval(e.intervals[i]),e.removeToast(i)},this.removeToast=function(t){null!=e.findToastKeyByID(t)&&(e.toasts[e.findToastKeyByID(t)].opening=!0,e.update({toasts:e.toasts}),setTimeout(function(){e.toasts.splice(e.findToastKeyByID(t),1),e.update({toasts:e.toasts})},200))}})},function(t,e,i){"use strict";riot.tag2("material-spinner",' ',"","",function(t){})},function(module,exports,__webpack_require__){"use strict";riot.tag2("material-tabs",'
{parent.opts.cut ? parent.cut(tab.title) : tab.title}
',"","",function(opts){var _this=this;if(this.selected=0,this.tabs=[],opts.tabs){var tabs=[];try{tabs=opts.tabs?eval(opts.tabs):[],this.tabs=tabs}catch(t){}}this.on("mount",function(){_this.setWidth(),_this.setLinePosition()}),this.setWidth=function(){[].forEach.call(_this.root.querySelectorAll("material-button"),function(t){t.style.width=_this.refs.line.style.width=(100/_this.tabs.length).toFixed(2)+"%"})},this.onChangeTab=function(t){var e=_this.tabs.indexOf(t.item.tab);_this.changeTab(e)},this.changeTab=function(t){_this.update({selected:t}),_this.setLinePosition(),_this.trigger("tabChanged",_this.tabs[t],t),opts.tabchanged&&"function"==typeof opts.tabchanged&&opts.tabchanged(_this.tabs[t],t)},this.setLinePosition=function(){_this.refs.line.style.left=(100/_this.tabs.length).toFixed(2)*_this.selected+"%"},this.cut=function(t){return t.length>opts.cut?t.substr(0,opts.cut)+"...":t}})},function(t,e,i){"use strict";riot.tag2("material-textarea",'
',"","",function(t){var e=this;this.opts=t,this.disabled=t.disabled||!1,this.on("mount",function(){t.maxRows&&(e.refs.mirror.style.maxHeight=t.maxRows*e.refs[e.n].getBoundingClientRect().height+"px"),e.n=t.ref||"default-textarea",e.value=t.value||"",e.refs.mirror.innerHTML=e.format(e.value),e.refs[e.n].value=e.value,e.refs[e.n].scrollTop=e.refs[e.n].scrollHeight,e.refs[e.n].addEventListener("focus",e.changeFocus),e.refs[e.n].addEventListener("blur",e.changeFocus),e.refs[e.n].addEventListener("input",e.inputHandler),e.update({value:e.value})}),this.changeFocus=function(t){if(e.disabled)return!1;var i=e.refs[e.n]==document.activeElement;e.update({focused:i}),e.trigger("focusChanged",i)},this.inputHandler=function(t){var i=e.refs[e.n].value;e.refs.mirror.innerHTML=e.format(i),e.update({value:i})},this.changeValue=function(i){e.trigger("valueChanged",e.refs[e.n].value,i),t.valuechanged&&"function"==typeof t.valuechanged&&t.valuechanged(e.refs[e.n].value)},this.isValid=function(t){e.update({error:!t})},this.format=function(t){return t.replace(/\n/g,"
 ")},this.on("update",function(t){t&&void 0!=t.value&&e.validationType&&e.isValid(e.validate(t.value))}),this.mixin("validate")})},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var s=i(0),r=function(t){return t&&t.__esModule?t:{default:t}}(s);riot.tag2("material-waves",'
',"","",function(t){var e=this,i=function(t){function e(i,a,s){n(this,e);var r=o(this,t.call(this));return i||console.error("You should set container to the wave!"),r.container=i,r.maxOpacity=a.opacity||.6,r.duration=a.duration||750,r.color=a.color||"#fff",r.center=a.center||!1,r.event=s,r.containerBound=r.receiveBound(),r.maxScale=r.containerBound.size/100*10,r.created=Date.now(),r.start={},r.createNode(),r.waveIn(),r}return a(e,t),e.prototype.createNode=function(){this.wave=document.createElement("div"),this.wave.classList.add("wave"),this.container.appendChild(this.wave)},e.prototype.waveIn=function(){var t=this;this.center&&!this.event&&console.error("Setup at least mouse event... Or just set center attribute"),this.start.x=this.center?this.containerBound.height/2:this.event.pageY-this.containerBound.offsetTop,this.start.y=this.center?this.containerBound.width/2:this.event.pageX-this.containerBound.offsetLeft;var e=-1!==window.navigator.userAgent.indexOf("Trident");setTimeout(function(){return t.setStyles(t.maxOpacity)},e?50:0)},e.prototype.waveOut=function(t){var e=this,i=Date.now()-this.created,n=Math.round(this.duration/2)-i,o=n>0?n:0;setTimeout(function(){e.setStyles(0),setTimeout(function(){e.wave.parentNode===e.container&&(e.container.removeChild(e.wave),t())},e.duration)},o)},e.prototype.setStyles=function(t){this.wave.setAttribute("style",this.convertStyle({top:this.start.x+"px",left:this.start.y+"px",transform:"scale("+this.maxScale+")","transition-duration":this.duration+"ms","transition-timing-function":"cubic-bezier(0.250, 0.460, 0.450, 0.940)",background:this.color,opacity:t}))},e.prototype.convertStyle=function(t){var e="";return Object.keys(t).forEach(function(i){t.hasOwnProperty(i)&&(e+=i+":"+t[i]+";")}),e},e}(r.default);this._waves=[],this._events=[],this.on("launch",function(n){var o=new i(e.refs.waves,t,n);e._waves.push(o),e.trigger("wavestart",o),e.parent&&e.parent.opts&&e.parent.opts.wavestart&&e.parent.opts.wavestart(o),e._events.length||(e._events.push(n.target.addEventListener("mouseup",function(){return e.trigger("hold")})),e._events.push(n.target.addEventListener("mouseleave",function(){return e.trigger("hold")})))}),this.on("hold",function(){e._waves[e._waves.length-1]&&e._waves[e._waves.length-1].waveOut(e.waveOut),e._waves[e._waves.length-1]&&e._waves.slice(e._waves.length-1,1)}),this.waveOut=function(){e.trigger("waveend"),e.parent&&e.parent.opts&&e.parent.opts.waveend&&e.parent.opts.waveend()}})},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){n(this,t)}return t.prototype.filter=function(t,e){return this[t].filter(function(t){var i=!1;return Object.keys(e).forEach(function(n){var o=e[n],a=new RegExp(""+o,"i");i=a.test(t[n])}),i})},t.prototype.find=function(t,e){var i={},n=0;return t.forEach(function(t){Object.keys(e).forEach(function(o){var a=e[o];t[o]==a&&(i.e=t,i.k=n)}),n++}),i},t}();e.default=o,riot.mixin("collection",o)},function(t,e,i){"use strict";var n={init:function(){var t=this;this.on("mount",function(){[].forEach.call(t.root.querySelectorAll("content"),function(e){var i=e.getAttribute("select");[].forEach.call(t.root.querySelectorAll(i),function(t){e.parentNode.insertBefore(t,e.nextSibling)}),e.parentNode.removeChild(e)})})}};riot.mixin("content",n)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){n(this,t)}return t.prototype.init=function(){var t=this;this.on("update",function(e){e&&t.dynamicAttributes&&t.dynamicAttributes.forEach(function(i){void 0!=e[i]&&t.root.setAttribute(i,e[i])})})},t}();e.default=o,riot.mixin("dynamicAttributes",o)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){n(this,t)}return t.prototype.findTag=function(t,e){var i=null;return t.forEach(function(t){t.root.getAttribute("name").toLowerCase()!=e.toLowerCase()&&t.root.tagName.toLowerCase()!=e.toLowerCase()&&t.root.getAttribute("ref").toLowerCase()!=e.toLowerCase()||(i=t)}),i},t.prototype.turnHyphensOptsToCamelCase=function(t){for(var e in t)if(/-/.test(e)){var i=e.replace(/-([a-z])/g,function(t){return t[1].toUpperCase()});t[i]=t[e],delete t[e]}},t}();e.default=o,riot.findTag=o.findTag,riot.mixin("helpers",o)},function(module,exports,__webpack_require__){"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var i=0;i. - */ -@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(fonts/MaterialIcons-Regular.eot);src:local('Material Icons'),local('MaterialIcons-Regular'),url(fonts/MaterialIcons-Regular.woff2) format('woff2'),url(fonts/MaterialIcons-Regular.woff) format('woff'),url(fonts/MaterialIcons-Regular.ttf) format('truetype')}i.material-icons,material-button .content i.material-icons,material-button[rounded=true] .content i.material-icons{font-family:'Material Icons';font-weight:400;font-style:normal;font-size:24px;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga'}material-button .content i.material-icons,material-button[rounded=true] .content i.material-icons{margin:auto}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(fonts/Roboto-Regular.eot);src:local('Roboto Light'),local('Roboto-Light'),url(fonts/Roboto-Light.woff2) format('woff2'),url(fonts/Roboto-Light.woff) format('woff'),url(fonts/Roboto-Light.ttf) format('truetype')}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(fonts/Roboto-Regular.eot);src:local('Roboto Regular'),local('Roboto-Regular'),url(fonts/Roboto-Regular.woff2) format('woff2'),url(fonts/Roboto-Regular.woff) format('woff'),url(fonts/Roboto-Regular.ttf) format('truetype')}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(fonts/Roboto-Regular.eot);src:local('Roboto Bold'),local('Roboto-Bold'),url(fonts/Roboto-Bold.woff2) format('woff2'),url(fonts/Roboto-Bold.woff) format('woff'),url(fonts/Roboto-Bold.ttf) format('truetype')}@font-face{font-family:'Roboto Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/RobotoMono-Regular.eot);src:local('Roboto Mono Regular'),local('RobotoMono-Regular'),local('Roboto-Mono-Regular'),url(fonts/RobotoMono-Regular.woff2) format('woff2'),url(fonts/RobotoMono-Regular.woff) format('woff'),url(fonts/RobotoMono-Regular.ttf) format('truetype')}html>body{font-family:Roboto,Helvetica,Arial,sans-serif!important}body,html{margin:0;height:100%}.section-centerd{margin:auto}.full-table{width:100%;border:none}.url{font-size:14px;word-break:break-all}.material-card-title-action a{color:inherit;text-decoration:none;font-weight:inherit}material-card,material-tabs,pagination .conatianer{max-width:95%;margin:auto;margin-top:20px;margin-bottom:20px}pagination .conatianer{display:flex;display:-moz-flex;display:-webkit-flex;display:-ms-flexbox}pagination .conatianer .pagination-centered{margin:auto}@media screen and (min-width:1515px){material-card,material-tabs,pagination .conatianer{max-width:1440px}}material-tabs{display:block;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}material-tabs material-button,material-tabs material-button .content .text{background-color:#fff;color:#aaa;text-transform:none}material-tabs .line-wrapper .line{background-color:#25313b}material-tabs material-button.selected .content .text{color:#25313b}material-spinner{align-self:center}.spinner-wrapper{margin-top:50px;display:flex;flex-direction:column}material-navbar{height:64px}.logo{padding:0 16px 0 72px;text-decoration:none;font-size:20px;line-height:1;letter-spacing:.02em;font-weight:400}h2{padding:16px;margin:auto;font-size:24px;font-weight:300;line-height:normal;overflow:hidden}.material-card-title-action h2 .item-count,.material-card-title-action h2 .source-hint{font-size:.7em;margin-left:1em}.list{display:block;padding:8px 0;list-style:none}.list.highlight:hover{background-color:#eee;cursor:pointer}.list>li,.list>span{box-sizing:border-box;line-height:1;height:48px;padding:0 16px;overflow:hidden}.list>li i.material-icons,.list>span i.material-icons{margin-right:32px;height:24px;width:24px;font-size:24px;box-sizing:border-box;color:#757575}.list>span .right i.material-icons.animated{transition:all 350ms cubic-bezier(.4,0,.2,1);margin-right:10px}.list>span .right{position:absolute;align-self:end;display:flex;align-items:center;right:0}.list>span i.material-icons.animated.expanded{transform:rotate(180deg)}.list>span .item-count{font-size:.75em}.list>li>span,.list>span{height:100%;text-decoration:none;box-sizing:border-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}material-card.list{margin-top:10px;margin-bottom:10px}.material-card-title-action{-webkit-align-items:center;-ms-flex-align:center;align-items:center;display:block;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:16px}.material-card-title-action h2{margin:0}material-card table{width:100%;border:none;position:relative;border:1px solid rgba(0,0,0,.12);border-collapse:collapse;white-space:nowrap;font-size:13px;background-color:#fff;border:none}material-card table th{font-size:18px;vertical-align:bottom;line-height:24px;height:48px;color:rgba(0,0,0,.54);box-sizing:border-box;padding:0 18px 12px 18px;text-align:right}.material-card-th-left{text-align:left}material-card material-button:hover,material-card table tbody tr:hover,pagination material-button:hover{background-color:#eee}material-card material-button,material-card table tbody tr,pagination material-button{transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:background-color}material-card table tbody tr{position:relative;height:48px}material-card table td{font-size:16px;position:relative;height:48px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);padding:12px 18px;box-sizing:border-box;vertical-align:middle;text-align:right}material-card table th.material-card-th-sorted-ascending:hover,material-card table th.material-card-th-sorted-descending:hover,tag-history-button button:hover{cursor:pointer}material-card table th.material-card-th-sorted-ascending:hover:before,material-card table th.material-card-th-sorted-descending:hover:before{color:rgba(0,0,0,.26)}material-card table th.material-card-th-sorted-ascending:before,material-card table th.material-card-th-sorted-descending:before{font-family:'Material Icons';font-weight:400;font-style:normal;line-height:1;font-size:16px;content:"\e5d8";margin-right:5px;vertical-align:sub}material-card table th.material-card-th-sorted-descending:before{content:"\e5db"}.material-icons,material-button .content i.material-icons{color:#777}material-button[disabled] .content i.material-icons,material-checkbox[disabled] .content i.material-icons{color:#bbb}material-snackbar .toast{height:auto}menu{position:absolute;top:0;right:16px;color:#000}menu .overlay{position:fixed;height:100%;width:100%;top:0;right:0;z-index:1}#menu-control-button{background:rgba(255,255,255,0);float:right}#menu-control-button i{color:#fff;font-size:24px}#menu-control-dropdown{display:inline-block;position:relative}.dropdown{min-width:124px;padding:8px 0;margin:0}#menu-control-dropdown p,dropdown-item{padding:0 16px;margin:auto;line-height:48px;height:48px;cursor:pointer}#menu-control-dropdown p:hover{background-color:#eee}#menu-control-dropdown p:active,.material-button-active:active{background-color:#e0e0e0}material-popup material-button,pagination material-button{background-color:#fff;color:#000}material-popup material-button:hover material-waves{background-color:hsla(0,0%,75%,.2)}material-popup .popup{max-width:450px;top:2em}footer{width:100%;z-index:75;bottom:0}main{min-height:calc(100% - 136px)}material-footer{padding:.5em 1em}.select-padding{padding:20px 0}select{position:relative;outline:0;box-shadow:none;padding:0;width:100%;background:0 0;border:none;font-weight:400;line-height:24px;height:24px;border-bottom:1px solid #2f6975;appearance:none;-moz-appearance:none;-webkit-appearance:none}.copy-to-clipboard{padding-left:5px}#image-tag-header{padding-right:57px}.copy-to-clipboard,image-tag{display:inline-block}image-content-digest{display:none;font-family:'Roboto Mono',Roboto,Helvetica,Arial,sans-serif!important}@media screen and (min-width:1024px){#image-content-digest-header{padding-right:57px}image-content-digest{display:inline-block}}.show-tag-history{width:30px;text-align:center}.remove-tag{padding:12px 5px;width:66px;text-align:center}.remove-tag.delete{padding:7px 5px}taglist .creation-date{width:10em}taglist .image-size{width:7em}catalog material-card,tag-history material-card{min-height:auto}tag-history-element i{font-size:20px;padding:0}tag-history-element.docker_version .headline .material-icons{background-size:24px auto;background-image:url(images/docker-logo.svg);background-repeat:no-repeat}tag-history-element{display:block;padding:20px;min-width:100px;min-height:3em;width:420px;float:left;overflow-x:auto}tag-history-element .headline p{font-weight:700;line-height:20px;position:relative;display:inline;top:-4px}tag-history-element.id div.value{font-size:12px}tag-history-button button{background:0 0;border:none}material-card material-button,pagination material-button{max-height:30px;max-width:30px}material-button:hover material-waves{background:0 0}material-card material-button,pagination material-button{background-color:inherit}catalog-element material-card{z-index:2;position:relative}catalog-element catalog-element material-card{transition:all 350ms cubic-bezier(.4,0,.2,1);z-index:1;position:relative}catalog-element catalog-element.hide material-card,catalog-element catalog-element.showing material-card{margin-top:-50px;opacity:0}catalog-element catalog-element>.content{margin-left:3em}@media screen and (min-width:1515px){catalog-element catalog-element>.content material-card{max-width:calc(1440px - 3em)}}remove-image{width:30px}material-checkbox .label{display:none}taglist material-checkbox{margin:auto;width:18px}material-checkbox.indeterminate .checkbox .checkmark{border-bottom:none}material-checkbox.indeterminate .checkbox.checked .checkmark{transform:rotate(90deg) scale(1);-webkit-transform:rotate(90deg) scale(1);-ms-transform:rotate(90deg) scale(1);-moz-transform:rotate(90deg) scale(1);-o-transform:rotate(90deg) scale(1)}material-checkbox .checkbox{border-color:#777}material-checkbox .checkbox.checked{background-color:#777}pagination material-button{padding:.2em .75em}pagination material-button .content{display:flex;align-content:center;line-height:1.9em}pagination material-button.current{border:1px solid rgba(0,0,0,.12)}pagination material-button.current.space-left{margin-left:85px}pagination material-button.current.space-right{margin-right:85px}pagination material-button .content i.material-icons{color:#000} \ No newline at end of file diff --git a/dist/vendor.css b/dist/vendor.css deleted file mode 100644 index 17025cc..0000000 --- a/dist/vendor.css +++ /dev/null @@ -1 +0,0 @@ -material-button{border:none;border-radius:2px;display:inline-block;position:relative;height:40px;line-height:36px;background:#61bdcc;color:#fff;padding:0 2rem;cursor:pointer;text-transform:uppercase;vertical-align:middle;outline:0;-webkit-tap-highlight-color:transparent}material-button:hover material-waves{background:hsla(0,0%,100%,.2)}material-button:hover material-waves,material-button material-waves{-webkit-transition:background .2s ease-in;-ms-transition:background .2s ease-in;-moz-transition:background .2s ease-in;-o-transition:background .2s ease-in;transition:background .2s ease-in}material-button material-waves{background:hsla(0,0%,100%,0)}material-button .content{width:101%;height:100%;display:block;text-align:center}material-button .content .text,material-button .content a,material-button .content i.icon,material-button .content i.material-icons{display:inline-block;vertical-align:middle;font-size:18px;color:#fff;line-height:40px}material-button .content .text.material-icons,material-button .content a.material-icons,material-button .content i.icon.material-icons,material-button .content i.material-icons.material-icons{font-size:20px}material-button .content .text svg,material-button .content a svg,material-button .content i.icon svg,material-button .content i.material-icons svg{fill:#fff;stroke:#fff}material-button[rounded=true]{border-radius:50%;width:40px;padding:0}material-button[rounded=true] .content{width:100%;height:100%;display:flex;align-items:center;text-align:center}material-button[rounded=true] .content i.icon,material-button[rounded=true] .content i.material-icons{display:inline-block;text-align:center;width:100%;height:100%;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}material-button[shady=true]{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);transition:box-shadow .2s}material-button[shady=true]:hover{-webkit-box-shadow:0 2px 7px 0 rgba(0,0,0,.14),0 2px 12px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 7px 0 rgba(0,0,0,.14),0 2px 12px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 7px 0 rgba(0,0,0,.14),0 2px 12px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 7px 0 rgba(0,0,0,.14),0 2px 12px 0 rgba(0,0,0,.12);box-shadow:0 2px 7px 0 rgba(0,0,0,.14),0 2px 12px 0 rgba(0,0,0,.12);transition:box-shadow .2s}material-button[disabled=true]{background:#ccc;color:#999;cursor:default}material-button[disabled=true] #content .text,material-button[disabled=true] #content a,material-button[disabled=true] #content i.icon,material-button[disabled=true] #content i.material-icons{color:#999}material-button[disabled=true] #content .text svg,material-button[disabled=true] #content a svg,material-button[disabled=true] #content i.icon svg,material-button[disabled=true] #content i.material-icons svg{fill:#999;stroke:#999}material-button[disabled=true]:hover material-waves{background:transparent}material-card{display:block;background-color:#fff;margin:0;overflow-y:auto;will-change:width,height;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);transform:translateY(0);opacity:1;-webkit-transition:transform .2s ease-in,opacity .2s;-ms-transition:transform .2s ease-in,opacity .2s;-moz-transition:transform .2s ease-in,opacity .2s;-o-transition:transform .2s ease-in,opacity .2s;transition:transform .2s ease-in,opacity .2s}material-card .title{padding:20px 10px;font-size:22px;color:#25313b;-webkit-box-shadow:0 2px 3px 0 rgba(0,0,0,.08),0 2px 7px 0 rgba(0,0,0,.02);-ms-box-shadow:0 2px 3px 0 rgba(0,0,0,.08),0 2px 7px 0 rgba(0,0,0,.02);-moz-box-shadow:0 2px 3px 0 rgba(0,0,0,.08),0 2px 7px 0 rgba(0,0,0,.02);-o-box-shadow:0 2px 3px 0 rgba(0,0,0,.08),0 2px 7px 0 rgba(0,0,0,.02);box-shadow:0 2px 3px 0 rgba(0,0,0,.08),0 2px 7px 0 rgba(0,0,0,.02)}material-card .material-card-content{padding:20px}material-checkbox{display:block;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}material-checkbox,material-checkbox .checkbox{background-color:transparent;position:relative}material-checkbox .checkbox{display:inline-block;box-sizing:border-box;height:100%;border:2px solid;border-color:#25313b;border-radius:2px;width:18px;height:18px;cursor:pointer;vertical-align:middle;-webkit-transition:background-color .14s,border-color .14s;-ms-transition:background-color .14s,border-color .14s;-moz-transition:background-color .14s,border-color .14s;-o-transition:background-color .14s,border-color .14s;transition:background-color .14s,border-color .14s}material-checkbox .checkbox .checkmark{-webkit-transform:rotate(0deg) scale(.5);-ms-transform:rotate(0deg) scale(.5);-moz-transform:rotate(0deg) scale(.5);-o-transform:rotate(0deg) scale(.5);transform:rotate(0deg) scale(.5);position:absolute;top:-1px;left:3px;width:6px;height:10px;border-style:solid;border-top:none;border-left:none;border-right-width:2px;border-bottom-width:2px;border-color:transparent;cursor:pointer}material-checkbox .checkbox.checked{background-color:#25313b}material-checkbox .checkbox.checked,material-checkbox .checkbox.checked .checkmark{-webkit-transition:background-color .14s,border-color .14s,transform .14s cubic-bezier(.23,1,.32,1) 50ms;-ms-transition:background-color .14s,border-color .14s,transform .14s 50ms cubic-bezier(.23,1,.32,1);-moz-transition:background-color .14s,border-color .14s,transform .14s 50ms cubic-bezier(.23,1,.32,1);-o-transition:background-color .14s,border-color .14s,transform .14s 50ms cubic-bezier(.23,1,.32,1);transition:background-color .14s,border-color .14s,transform .14s cubic-bezier(.23,1,.32,1) 50ms}material-checkbox .checkbox.checked .checkmark{border-color:#fff;-webkit-transform:rotate(45deg) scale(1);-ms-transform:rotate(45deg) scale(1);-moz-transform:rotate(45deg) scale(1);-o-transform:rotate(45deg) scale(1);transform:rotate(45deg) scale(1)}material-checkbox .label{color:#25313b;position:relative;display:inline-block;vertical-align:middle;padding-left:8px;white-space:normal;cursor:pointer}material-checkbox[disabled=true] .checkbox{border-color:#ccc}material-checkbox[disabled=true] .label{color:#ccc}material-combo{display:block;position:relative}material-combo [hidden]{display:none}material-combo material-input input{color:#2f6975}material-dropdown{position:absolute;z-index:100;width:100%}material-dropdown .dropdown{background-color:#fff;margin:0;min-width:100px;max-height:650px;overflow-y:auto;will-change:width,height;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);transform:translateY(0);opacity:1;-webkit-transition:transform .2s ease-in,opacity .2s;-ms-transition:transform .2s ease-in,opacity .2s;-moz-transition:transform .2s ease-in,opacity .2s;-o-transition:transform .2s ease-in,opacity .2s;transition:transform .2s ease-in,opacity .2s}material-dropdown .dropdown.opening.top{transform:translateY(-50px)}material-dropdown .dropdown.opening.bottom,material-dropdown .dropdown.opening.top{opacity:0;-webkit-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-ms-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-moz-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-o-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s}material-dropdown .dropdown.opening.bottom{transform:translateY(50px)}material-dropdown-list{position:absolute;z-index:100;width:100%}material-dropdown-list ul.dropdown-content{list-style:none;z-index:100;background-color:#fff;margin:0;padding:0;min-width:100px;max-height:650px;overflow-y:auto;will-change:width,height;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);transform:translateY(0);opacity:1}material-dropdown-list ul.dropdown-content,material-dropdown-list ul.dropdown-content.opening{-webkit-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-ms-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-moz-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-o-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s}material-dropdown-list ul.dropdown-content.opening{transform:translateY(-50px);opacity:0}material-dropdown-list ul.dropdown-content li{clear:both;cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none;background-color:#fff;-webkit-transition:background-color .2s ease-in;-ms-transition:background-color .2s ease-in;-moz-transition:background-color .2s ease-in;-o-transition:background-color .2s ease-in;transition:background-color .2s ease-in}material-dropdown-list ul.dropdown-content li a,material-dropdown-list ul.dropdown-content li span{font-size:1.2rem;color:#25313b;display:block;padding:1rem}material-dropdown-list ul.dropdown-content li:hover{background-color:#ededed;-webkit-transition:background-color .2s ease-out;-ms-transition:background-color .2s ease-out;-moz-transition:background-color .2s ease-out;-o-transition:background-color .2s ease-out;transition:background-color .2s ease-out}material-dropdown-list ul.dropdown-content li a{text-decoration:none;color:#25313b}material-dropdown-list ul.dropdown-content li.selected{background-color:#394b5a;-webkit-transition:background-color .2s ease-out;-ms-transition:background-color .2s ease-out;-moz-transition:background-color .2s ease-out;-o-transition:background-color .2s ease-out;transition:background-color .2s ease-out}material-dropdown-list ul.dropdown-content li.selected span{color:#fff}.material-dropdown-list-overlay{z-index:99;width:100%;height:100%;top:0;left:0;position:fixed;background:transparent}material-input{display:block;padding:8px 0;position:relative}material-input .label-placeholder{height:15px;width:100%}material-input .input-content{font-size:16px;color:#17242e;position:relative}material-input .input-content label{position:absolute;top:0;right:0;left:0;font:inherit;color:#2f6975;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;font-weight:400;line-height:24px;-webkit-transform:none;-ms-transform:none;-moz-transform:none;-o-transform:none;transform:none;-webkit-transform-origin:left top;-ms-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}material-input .input-content.not-empty label,material-input .input-content label{-webkit-transition:transform .2s;-ms-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;transition:transform .2s}material-input .input-content.not-empty label{-webkit-transform:translate3d(0,-70%,0) scale(.7);-ms-transform:translate3d(0,-70%,0) scale(.7);-moz-transform:translate3d(0,-70%,0) scale(.7);-o-transform:translate3d(0,-70%,0) scale(.7);transform:translate3d(0,-70%,0) scale(.7);-webkit-transform-origin:left top;-ms-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}material-input .input-content input{position:relative;outline:none;box-shadow:none;padding:0;width:100%;background:transparent;border:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-weight:400;line-height:24px;height:24px}material-input .input-content .iconWrapper{display:inline-block;position:absolute;top:0;left:0;bottom:0;right:0;width:40px;height:40px;margin-left:-33px;left:100%;margin-top:-7px}material-input .input-content .iconWrapper material-button{background:transparent}material-input .input-content .iconWrapper material-button .content .material-icons{color:#2f6975}material-input .underline{position:relative;display:block}material-input .underline .unfocused-line{height:1px;background:#2f6975}material-input .underline .focused-line{height:2px;background:#2f6975;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);-moz-transform:scaleX(0);-o-transform:scaleX(0);transform:scaleX(0);-webkit-transition:transform .2s ease-in;-ms-transition:transform .2s ease-in;-moz-transition:transform .2s ease-in;-o-transition:transform .2s ease-in;transition:transform .2s ease-in}material-input .underline.focused .focused-line{-webkit-transform:none;-ms-transform:none;-moz-transform:none;-o-transform:none;transform:none;-webkit-transition:transform .2s ease-out;-ms-transition:transform .2s ease-out;-moz-transition:transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}material-input .underline.error .focused-line,material-input .underline.error .unfocused-line{background:#941212;-webkit-transition:background .2s ease-out;-ms-transition:background .2s ease-out;-moz-transition:background .2s ease-out;-o-transition:background .2s ease-out;transition:background .2s ease-out}material-input[disabled=true] label{color:#ccc}material-input[disabled=true] .underline .unfocused-line{background:#ccc}material-navbar{display:block;color:#fff;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.12),0 6px 20px 0 rgba(0,0,0,.14);-ms-box-shadow:0 8px 17px 0 rgba(0,0,0,.12),0 6px 20px 0 rgba(0,0,0,.14);-moz-box-shadow:0 8px 17px 0 rgba(0,0,0,.12),0 6px 20px 0 rgba(0,0,0,.14);-o-box-shadow:0 8px 17px 0 rgba(0,0,0,.12),0 6px 20px 0 rgba(0,0,0,.14);box-shadow:0 8px 17px 0 rgba(0,0,0,.12),0 6px 20px 0 rgba(0,0,0,.14);background-color:#25313b;width:100%;height:70px;line-height:70px}material-navbar:not(material-input){line-height:0}material-navbar a{color:#fff}material-navbar .nav-wrapper{position:relative;height:100%}material-navbar .nav-wrapper .logo{line-height:66px}material-navbar[fixed]{position:relative;height:70px;z-index:998}material-pane{display:block}material-pane material-navbar .nav-wrapper{display:flex;justify-content:space-between;flex-grow:1}material-pane material-navbar .nav-wrapper .material-pane-title{font-size:26px;text-transform:uppercase;text-align:center}material-pane material-navbar .nav-wrapper material-button{background:transparent}material-pane .content .material-pane-content{padding:10px;background:#f2f2f2}material-popup .popup{z-index:100;position:fixed;left:0;top:25%;right:0;width:50%;min-width:300px;margin:auto;height:-webkit-fit-content;height:-ms-fit-content;height:-moz-fit-content;height:-o-fit-content;height:fit-content;background-color:#fff;overflow-y:auto;will-change:width,height;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);transform:translateY(0);opacity:1;-webkit-transition:transform .2s ease-in,opacity .2s;-ms-transition:transform .2s ease-in,opacity .2s;-moz-transition:transform .2s ease-in,opacity .2s;-o-transition:transform .2s ease-in,opacity .2s;transition:transform .2s ease-in,opacity .2s}material-popup .popup.opening.top{transform:translateY(-50px)}material-popup .popup.opening.bottom,material-popup .popup.opening.top{opacity:0;-webkit-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-ms-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-moz-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-o-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s}material-popup .popup.opening.bottom{transform:translateY(50px)}material-popup .popup>.content{padding:10px;color:#25313b}material-popup .popup>.content .material-popup-title{padding:24px 24px 0;margin:0;font-size:2.5rem}material-popup .popup>.content .material-popup-content{padding:20px 24px 24px;margin:0}material-popup .popup>.content .material-popup-action{padding:8px 8px 8px 24px;margin:0;display:flex;flex-direction:row-reverse;flex-wrap:wrap}material-popup .popup>.content .material-popup-action>*{margin-right:8px}material-popup .popup>.content .material-popup-action>:first-child{margin-right:0}material-popup .overlay{z-index:99;width:100%;height:100%;top:0;left:0;position:fixed;background:rgba(0,0,0,.2)}material-snackbar{display:block;position:fixed;bottom:10%;right:7%;z-index:1001}material-snackbar .toast{-webkit-border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px;top:0;width:auto;clear:both;margin-top:10px;position:relative;height:40px;line-height:40px;background-color:#25313b;padding:0 25px;font-size:1.1rem;font-weight:300;color:#fff;z-index:1001;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-ms-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);-o-box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;-ms-justify-content:space-between;-moz-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;transform:translateY(0);opacity:1;-webkit-transition:transform .2s ease-in,opacity .2s;-ms-transition:transform .2s ease-in,opacity .2s;-moz-transition:transform .2s ease-in,opacity .2s;-o-transition:transform .2s ease-in,opacity .2s;transition:transform .2s ease-in,opacity .2s}material-snackbar .toast.opening{transform:translateY(-15px);opacity:0;-webkit-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-ms-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-moz-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;-o-transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s}material-snackbar .toast.error{background-color:#ab173e}material-spinner{display:inline-block}material-spinner .loader-circular{-webkit-animation:loader-rotate 2s linear infinite;-ms-animation:loader-rotate 2s linear infinite;-moz-animation:loader-rotate 2s linear infinite;-o-animation:loader-rotate 2s linear infinite;animation:loader-rotate 2s linear infinite}material-spinner .loader-path{stroke-dasharray:1,200;stroke-dashoffset:0;-webkit-animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;stroke-linecap:round;stroke:#db652d}@-o-keyframes loader-rotate{0%{-o-transform:rotate(0deg)}to{-o-transform:rotate(1turn)}}@-moz-keyframes loader-rotate{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(1turn)}}@-webkit-keyframes loader-rotate{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes loader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@-webkit-keyframes color{0%{stroke:#3f88f8}20%{stroke:#3f88f8}25%{stroke:#dd413b}45%{stroke:#dd413b}50%{stroke:#f6ae2e}70%{stroke:#f6ae2e}75%{stroke:#259a5d}95%{stroke:#259a5d}}@keyframes color{0%{stroke:#3f88f8}20%{stroke:#3f88f8}25%{stroke:#dd413b}45%{stroke:#dd413b}50%{stroke:#f6ae2e}70%{stroke:#f6ae2e}75%{stroke:#259a5d}95%{stroke:#259a5d}}material-tabs{display:inline-block;line-height:0;position:relative;width:100%}material-tabs material-button{background:#070731;border-radius:0;text-align:center;padding:0}material-tabs material-button .content{position:relative}material-tabs material-button .content .text{font-size:16px}material-tabs material-button.selected .content .text{color:#61bdcc;-webkit-transition:color .3s;-ms-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;transition:color .3s}material-tabs .line-wrapper{width:100%;height:3px;background:#c2c7b6;position:relative}material-tabs .line-wrapper .line{height:100%;background:#61bdcc;position:absolute;-webkit-transition:left .4s;-ms-transition:left .4s;-moz-transition:left .4s;-o-transition:left .4s;transition:left .4s}material-textarea{display:block;padding:8px 0}material-textarea .label-placeholder{height:15px;width:100%}material-textarea .textarea-content{font-size:16px;color:#17242e;position:relative}material-textarea .textarea-content label{position:absolute;top:0;right:0;left:0;font:inherit;color:#2f6975;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;font-weight:400;line-height:24px;-webkit-transform:none;-ms-transform:none;-moz-transform:none;-o-transform:none;transform:none;-webkit-transform-origin:left top;-ms-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}material-textarea .textarea-content.not-empty label,material-textarea .textarea-content label{-webkit-transition:transform .2s;-ms-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;transition:transform .2s}material-textarea .textarea-content.not-empty label{-webkit-transform:translate3d(0,-70%,0) scale(.7);-ms-transform:translate3d(0,-70%,0) scale(.7);-moz-transform:translate3d(0,-70%,0) scale(.7);-o-transform:translate3d(0,-70%,0) scale(.7);transform:translate3d(0,-70%,0) scale(.7);-webkit-transform-origin:left top;-ms-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}material-textarea .textarea-content .textarea-container{position:absolute;top:0;right:0;left:0;width:100%;height:100%;overflow:hidden}material-textarea .textarea-content .textarea-container textarea{position:relative;box-shadow:none;padding:0;height:100%;background:transparent;border:none;resize:none;overflow:hidden}material-textarea .textarea-content .mirror,material-textarea .textarea-content .textarea-container textarea{outline:none;width:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-weight:400;line-height:24px}material-textarea .textarea-content .mirror{visibility:hidden;word-wrap:break-word;height:auto;min-height:24px}material-textarea .underline{position:relative;display:block}material-textarea .underline .unfocused-line{height:1px;background:#2f6975}material-textarea .underline .focused-line{height:2px;background:#2f6975;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);-moz-transform:scaleX(0);-o-transform:scaleX(0);transform:scaleX(0);-webkit-transition:transform .2s ease-in;-ms-transition:transform .2s ease-in;-moz-transition:transform .2s ease-in;-o-transition:transform .2s ease-in;transition:transform .2s ease-in}material-textarea .underline.focused .focused-line{-webkit-transform:none;-ms-transform:none;-moz-transform:none;-o-transform:none;transform:none;-webkit-transition:transform .2s ease-out;-ms-transition:transform .2s ease-out;-moz-transition:transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}material-textarea .underline.error .focused-line,material-textarea .underline.error .unfocused-line{background:#941212;-webkit-transition:background .2s ease-out;-ms-transition:background .2s ease-out;-moz-transition:background .2s ease-out;-o-transition:background .2s ease-out;transition:background .2s ease-out}material-textarea[disabled=true] label{color:#ccc}material-textarea[disabled=true] .underline .unfocused-line{background:#ccc}material-waves{position:absolute;left:0;top:0}material-waves,material-waves #waves{display:block;width:100%;height:100%;overflow:hidden}material-waves #waves{position:relative;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;vertical-align:middle;-webkit-transform:rotate(0deg);z-index:1}material-waves #waves .wave{position:absolute;-webkit-border-radius:50%;-ms-border-radius:50%;-moz-border-radius:50%;-o-border-radius:50%;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;z-index:0;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transition-property:transform,opacity;-ms-transition-property:transform,opacity;-moz-transition-property:transform,opacity;-o-transition-property:transform,opacity;transition-property:transform,opacity;pointer-events:none}material-waves[rounded=true],material-waves[rounded=true] #waves{border-radius:50%}material-footer{display:block;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:16px;color:#999;background-color:#555}material-footer a{color:inherit;text-decoration:none}material-footer ul{list-style:none;margin:0;padding:0}material-footer .material-footer-sections{display:-moz-flex;display:-webkit-flex;display:-ms-flexbox;display:flex;-moz-flex-flow:wrap;-webkit-flex-flow:wrap;flex-flow:wrap;padding-bottom:24px}material-footer .material-footer-sections ul{margin-right:16px}material-footer .mini-footer{display:block}@media screen and (min-width:760px){material-footer .mini-footer{display:inline-flex}}material-footer .material-footer-logo,material-footer .material-footer-section-header{margin-bottom:16px;color:#fff;line-height:36px}@media screen and (min-width:760px){material-footer .material-footer-logo{margin-bottom:0;margin-right:16px}}material-footer ul.material-footer-link-list{display:-moz-flex;display:-webkit-flex;display:-ms-flexbox;display:flex}material-footer ul.material-footer-link-list li{margin-bottom:0;margin-right:16px}@media screen and (min-width:760px){material-footer ul.material-footer-link-list li{line-height:36px}} \ No newline at end of file