mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update themes
This commit is contained in:
parent
c48e18ae6c
commit
d948c1d562
22 changed files with 23 additions and 23 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
.emby-select,.selectLabel{display:block}.emby-select{margin:0;margin-bottom:0!important;border-style:solid;border-width:0 0 1px;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:110%;font-family:inherit;font-weight:inherit;padding:.35em .25em .3em 0;cursor:pointer;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select::-moz-focus-inner{border:0}.emby-select-withoptioncolor{color:inherit;background:0 0}.emby-select-withoptioncolor>option{color:initial}.selectContainer{margin-bottom:1.8em;position:relative}.emby-select-selectionbar{height:2px;-webkit-transform:scale(0,1);transform:scale(0,1);-webkit-transition:-webkit-transform .25s ease-out;-o-transition:transform .25s ease-out;transition:transform .25s ease-out;position:relative;top:-1px;margin-bottom:.5em;-webkit-transform-origin:center center;transform-origin:center center}.emby-select:focus+.emby-select-selectionbar{-webkit-transform:none;transform:none}
|
||||
.emby-select{display:block;margin:0;margin-bottom:0!important;font-size:110%;font-family:inherit;font-weight:inherit;padding:.35em .25em;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select::-moz-focus-inner{border:0}.emby-select+.fieldDescription{margin-top:.2em}.selectContainer{margin-bottom:1.8em;position:relative}.selectLabel{display:block;margin-bottom:.25em}
|
|
@ -1 +1 @@
|
|||
define(["layoutManager","browser","actionsheet","css!./emby-select","registerElement"],function(layoutManager,browser,actionsheet){"use strict";function enableNativeMenu(){return!(!browser.edgeUwp&&!browser.xboxOne)||!browser.tizen&&!browser.orsay&&(!!browser.tv||!layoutManager.tv)}function triggerChange(select){var evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0),select.dispatchEvent(evt)}function setValue(select,value){select.value=value}function showActionSheet(select){var labelElem=getLabel(select),title=labelElem?labelElem.textContent||labelElem.innerText:null;actionsheet.show({items:select.options,positionTo:select,title:title}).then(function(value){setValue(select,value),triggerChange(select)})}function getLabel(select){for(var elem=select.previousSibling;elem&&"LABEL"!==elem.tagName;)elem=elem.previousSibling;return elem}function onFocus(e){var label=getLabel(this);label&&(label.classList.add("selectLabelFocused"),label.classList.remove("selectLabelUnfocused"))}function onBlur(e){var label=getLabel(this);label&&(label.classList.add("selectLabelUnfocused"),label.classList.remove("selectLabelFocused"))}function onMouseDown(e){e.button||enableNativeMenu()||(e.preventDefault(),showActionSheet(this))}function onKeyDown(e){switch(e.keyCode){case 13:return void(enableNativeMenu()||(e.preventDefault(),showActionSheet(this)));case 37:case 38:case 39:case 40:return void(layoutManager.tv&&e.preventDefault())}}var EmbySelectPrototype=Object.create(HTMLSelectElement.prototype),inputId=0;EmbySelectPrototype.createdCallback=function(){this.id||(this.id="embyselect"+inputId,inputId++),browser.firefox||this.classList.add("emby-select-withoptioncolor"),this.addEventListener("mousedown",onMouseDown),this.addEventListener("keydown",onKeyDown),this.addEventListener("focus",onFocus),this.addEventListener("blur",onBlur)},EmbySelectPrototype.attachedCallback=function(){if(!this.classList.contains("emby-select")){this.classList.add("emby-select");var label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("selectLabel"),label.classList.add("selectLabelUnfocused"),label.htmlFor=this.id,this.parentNode.insertBefore(label,this);var div=document.createElement("div");div.classList.add("emby-select-selectionbar"),this.parentNode.insertBefore(div,this.nextSibling)}},EmbySelectPrototype.setLabel=function(text){var label=this.parentNode.querySelector("label");label.innerHTML=text},document.registerElement("emby-select",{prototype:EmbySelectPrototype,extends:"select"})});
|
||||
define(["layoutManager","browser","actionsheet","css!./emby-select","registerElement"],function(layoutManager,browser,actionsheet){"use strict";function enableNativeMenu(){return!(!browser.edgeUwp&&!browser.xboxOne)||!browser.tizen&&!browser.orsay&&(!!browser.tv||!layoutManager.tv)}function triggerChange(select){var evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0),select.dispatchEvent(evt)}function setValue(select,value){select.value=value}function showActionSheet(select){var labelElem=getLabel(select),title=labelElem?labelElem.textContent||labelElem.innerText:null;actionsheet.show({items:select.options,positionTo:select,title:title}).then(function(value){setValue(select,value),triggerChange(select)})}function getLabel(select){for(var elem=select.previousSibling;elem&&"LABEL"!==elem.tagName;)elem=elem.previousSibling;return elem}function onFocus(e){var label=getLabel(this);label&&(label.classList.add("selectLabelFocused"),label.classList.remove("selectLabelUnfocused"))}function onBlur(e){var label=getLabel(this);label&&(label.classList.add("selectLabelUnfocused"),label.classList.remove("selectLabelFocused"))}function onMouseDown(e){e.button||enableNativeMenu()||(e.preventDefault(),showActionSheet(this))}function onKeyDown(e){switch(e.keyCode){case 13:return void(enableNativeMenu()||(e.preventDefault(),showActionSheet(this)));case 37:case 38:case 39:case 40:return void(layoutManager.tv&&e.preventDefault())}}var EmbySelectPrototype=Object.create(HTMLSelectElement.prototype),inputId=0;EmbySelectPrototype.createdCallback=function(){this.id||(this.id="embyselect"+inputId,inputId++),browser.firefox||this.classList.add("emby-select-withcolor"),this.addEventListener("mousedown",onMouseDown),this.addEventListener("keydown",onKeyDown),this.addEventListener("focus",onFocus),this.addEventListener("blur",onBlur)},EmbySelectPrototype.attachedCallback=function(){if(!this.classList.contains("emby-select")){this.classList.add("emby-select");var label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("selectLabel"),label.classList.add("selectLabelUnfocused"),label.htmlFor=this.id,this.parentNode.insertBefore(label,this)}},EmbySelectPrototype.setLabel=function(text){var label=this.parentNode.querySelector("label");label.innerHTML=text},document.registerElement("emby-select",{prototype:EmbySelectPrototype,extends:"select"})});
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
.emby-textarea{display:block;margin:0;margin-bottom:0!important;background:0 0;border-style:solid;border-width:0 0 1px;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:inherit;font-family:inherit;font-weight:inherit;color:inherit;padding:.35em 0 .3em;cursor:pointer;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%;-webkit-border-radius:0;border-radius:0}.emby-textarea::-moz-focus-inner{border:0}.textareaLabel{display:inline-block;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.emby-textarea:focus+.emby-input-selectionbar{-webkit-transform:none;transform:none}
|
||||
.emby-textarea{display:block;margin:0;margin-bottom:0!important;font-size:inherit;font-family:inherit;font-weight:inherit;color:inherit;padding:.35em .25em;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-textarea::-moz-focus-inner{border:0}.textareaLabel{display:inline-block;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;margin-bottom:.25em}.emby-textarea+.fieldDescription{margin-top:.2em}
|
|
@ -1 +1 @@
|
|||
define(["layoutManager","browser","css!./emby-textarea","registerElement","emby-input"],function(layoutManager,browser){"use strict";function autoGrow(textarea,maxLines){function reset(){textarea.rows=1,offset=self.getOffset(textarea),self.rows=textarea.rows||1,self.lineHeight=textarea.scrollHeight/self.rows-offset/self.rows,self.maxAllowedHeight=self.lineHeight*maxLines-offset}function autogrowFn(){if((!self.lineHeight||self.lineHeight<=0)&&reset(),self.lineHeight<=0)return textarea.style.overflowY="scroll",textarea.style.height="auto",void(textarea.rows=3);var newHeight=0,hasGrown=!1;textarea.scrollHeight-offset>self.maxAllowedHeight?(textarea.style.overflowY="scroll",newHeight=self.maxAllowedHeight):(textarea.style.overflowY="hidden",textarea.style.height="auto",newHeight=textarea.scrollHeight,hasGrown=!0),textarea.style.height=newHeight+"px"}var self=this;void 0===maxLines&&(maxLines=999),self.getOffset=function(textarea){for(var style=window.getComputedStyle(textarea,null),props=["paddingTop","paddingBottom"],offset=0,i=0;i<props.length;i++)offset+=parseInt(style[props[i]]);return offset};var offset;textarea.addEventListener("input",autogrowFn),textarea.addEventListener("focus",autogrowFn),textarea.addEventListener("valueset",autogrowFn),autogrowFn()}var EmbyTextAreaPrototype=Object.create(HTMLTextAreaElement.prototype),elementId=0,supportsFloatingLabel=!1;if(Object.getOwnPropertyDescriptor&&Object.defineProperty){var descriptor=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value");if(descriptor&&descriptor.configurable){var baseSetMethod=descriptor.set;descriptor.set=function(value){baseSetMethod.call(this,value),this.dispatchEvent(new CustomEvent("valueset",{bubbles:!1,cancelable:!1}))},Object.defineProperty(HTMLTextAreaElement.prototype,"value",descriptor),supportsFloatingLabel=!0}}EmbyTextAreaPrototype.createdCallback=function(){this.id||(this.id="embytextarea"+elementId,elementId++)},EmbyTextAreaPrototype.attachedCallback=function(){if(!this.classList.contains("emby-textarea")){this.rows=1,this.classList.add("emby-textarea");var parentNode=this.parentNode,label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("textareaLabel"),supportsFloatingLabel&&"date"!==this.type||label.classList.add("nofloat"),label.htmlFor=this.id,parentNode.insertBefore(label,this);var div=document.createElement("div");div.classList.add("emby-input-selectionbar"),parentNode.insertBefore(div,this.nextSibling),this.addEventListener("focus",function(){label.classList.add("textareaLabelFocused"),label.classList.remove("textareaLabelUnfocused")}),this.addEventListener("blur",function(){label.classList.remove("textareaLabelFocused"),label.classList.add("textareaLabelUnfocused")}),this.label=function(text){label.innerHTML=text},new autoGrow(this)}},document.registerElement("emby-textarea",{prototype:EmbyTextAreaPrototype,extends:"textarea"})});
|
||||
define(["layoutManager","browser","css!./emby-textarea","registerElement","emby-input"],function(layoutManager,browser){"use strict";function autoGrow(textarea,maxLines){function reset(){textarea.rows=1,offset=self.getOffset(textarea),self.rows=textarea.rows||1,self.lineHeight=textarea.scrollHeight/self.rows-offset/self.rows,self.maxAllowedHeight=self.lineHeight*maxLines-offset}function autogrowFn(){if((!self.lineHeight||self.lineHeight<=0)&&reset(),self.lineHeight<=0)return textarea.style.overflowY="scroll",textarea.style.height="auto",void(textarea.rows=3);var newHeight=0,hasGrown=!1;textarea.scrollHeight-offset>self.maxAllowedHeight?(textarea.style.overflowY="scroll",newHeight=self.maxAllowedHeight):(textarea.style.overflowY="hidden",textarea.style.height="auto",newHeight=textarea.scrollHeight,hasGrown=!0),textarea.style.height=newHeight+"px"}var self=this;void 0===maxLines&&(maxLines=999),self.getOffset=function(textarea){for(var style=window.getComputedStyle(textarea,null),props=["paddingTop","paddingBottom"],offset=0,i=0;i<props.length;i++)offset+=parseInt(style[props[i]]);return offset};var offset;textarea.addEventListener("input",autogrowFn),textarea.addEventListener("focus",autogrowFn),textarea.addEventListener("valueset",autogrowFn),autogrowFn()}var EmbyTextAreaPrototype=Object.create(HTMLTextAreaElement.prototype),elementId=0;if(Object.getOwnPropertyDescriptor&&Object.defineProperty){var descriptor=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value");if(descriptor&&descriptor.configurable){var baseSetMethod=descriptor.set;descriptor.set=function(value){baseSetMethod.call(this,value),this.dispatchEvent(new CustomEvent("valueset",{bubbles:!1,cancelable:!1}))},Object.defineProperty(HTMLTextAreaElement.prototype,"value",descriptor)}}EmbyTextAreaPrototype.createdCallback=function(){this.id||(this.id="embytextarea"+elementId,elementId++)},EmbyTextAreaPrototype.attachedCallback=function(){if(!this.classList.contains("emby-textarea")){this.rows=1,this.classList.add("emby-textarea");var parentNode=this.parentNode,label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("textareaLabel"),label.htmlFor=this.id,parentNode.insertBefore(label,this),this.addEventListener("focus",function(){label.classList.add("textareaLabelFocused"),label.classList.remove("textareaLabelUnfocused")}),this.addEventListener("blur",function(){label.classList.remove("textareaLabelFocused"),label.classList.add("textareaLabelUnfocused")}),this.label=function(text){label.innerHTML=text},new autoGrow(this)}},document.registerElement("emby-textarea",{prototype:EmbyTextAreaPrototype,extends:"textarea"})});
|
|
@ -1 +1 @@
|
|||
define(["lazyLoader","imageFetcher","layoutManager","browser","appSettings","require","css!./style"],function(lazyLoader,imageFetcher,layoutManager,browser,appSettings,require){"use strict";function fillImage(elem,source,enableEffects){if(!elem)throw new Error("elem cannot be null");source||(source=elem.getAttribute("data-src")),source&&fillImageElement(elem,source,enableEffects)}function fillImageElement(elem,source,enableEffects){imageFetcher.loadImage(elem,source).then(function(){var fillingVibrant=fillVibrant(elem,source);!enableFade||layoutManager.tv||enableEffects===!1||fillingVibrant||fadeIn(elem),elem.removeAttribute("data-src")})}function fillVibrant(img,url,canvas,canvasContext){var vibrantElement=img.getAttribute("data-vibrant");return!!vibrantElement&&(window.Vibrant?(fillVibrantOnLoaded(img,url,vibrantElement,canvas,canvasContext),!0):(require(["vibrant"],function(){fillVibrantOnLoaded(img,url,vibrantElement,canvas,canvasContext)}),!0))}function fillVibrantOnLoaded(img,url,vibrantElement){vibrantElement=document.getElementById(vibrantElement),vibrantElement&&requestIdleCallback(function(){getVibrantInfoFromElement(img,url).then(function(vibrantInfo){var swatch=vibrantInfo.split("|");if(swatch.length){var index=0,style=vibrantElement.style;style.backgroundColor=swatch[index],style.color=swatch[index+1];var classList=vibrantElement.classList;classList.contains("cardFooter")?classList.add("cardFooter-vibrant"):classList.add("vibrant")}})})}function getVibrantInfoFromElement(elem,url){return new Promise(function(resolve,reject){require(["vibrant"],function(){if("IMG"===elem.tagName)return void resolve(getVibrantInfo(elem,url));var img=new Image;img.onload=function(){resolve(getVibrantInfo(img,url))},img.src=url})})}function getSettingsKey(url){var parts=url.split("://");url=parts[parts.length-1],url=url.substring(url.indexOf("/")+1),url=url.split("?")[0];var cacheKey="vibrant31";return cacheKey+url}function getCachedVibrantInfo(url){return appSettings.get(getSettingsKey(url))}function getVibrantInfo(img,url){var value=getCachedVibrantInfo(url);if(value)return value;var vibrant=new Vibrant(img),swatches=vibrant.swatches();value="";var swatch=swatches.DarkVibrant;return value+=getSwatchString(swatch),appSettings.set(getSettingsKey(url),value),value}function getSwatchString(swatch){return swatch?swatch.getHex()+"|"+swatch.getBodyTextColor()+"|"+swatch.getTitleTextColor():"||"}function fadeIn(elem){var cssClass=layoutManager.tv?"lazy-image-fadein-fast":"lazy-image-fadein";elem.classList.add(cssClass)}function lazyChildren(elem){lazyLoader.lazyChildren(elem,fillImage)}function getPrimaryImageAspectRatio(items){for(var values=[],i=0,length=items.length;i<length;i++){var ratio=items[i].PrimaryImageAspectRatio||0;ratio&&(values[values.length]=ratio)}if(!values.length)return null;values.sort(function(a,b){return a-b});var result,half=Math.floor(values.length/2);result=values.length%2?values[half]:(values[half-1]+values[half])/2;var aspect2x3=2/3;if(Math.abs(aspect2x3-result)<=.15)return aspect2x3;var aspect16x9=16/9;if(Math.abs(aspect16x9-result)<=.2)return aspect16x9;if(Math.abs(1-result)<=.15)return 1;var aspect4x3=4/3;return Math.abs(aspect4x3-result)<=.15?aspect4x3:result}function fillImages(elems){for(var i=0,length=elems.length;i<length;i++){var elem=elems[0];fillImage(elem)}}var requestIdleCallback=window.requestIdleCallback||function(fn){fn()},self={},enableFade=!browser.slow&&!browser.firefox;return self.fillImages=fillImages,self.lazyImage=fillImage,self.lazyChildren=lazyChildren,self.getPrimaryImageAspectRatio=getPrimaryImageAspectRatio,self.getCachedVibrantInfo=getCachedVibrantInfo,self.getVibrantInfoFromElement=getVibrantInfoFromElement,self});
|
||||
define(["lazyLoader","imageFetcher","layoutManager","browser","appSettings","require","css!./style"],function(lazyLoader,imageFetcher,layoutManager,browser,appSettings,require){"use strict";function fillImage(elem,source,enableEffects){if(!elem)throw new Error("elem cannot be null");source||(source=elem.getAttribute("data-src")),source&&fillImageElement(elem,source,enableEffects)}function fillImageElement(elem,source,enableEffects){imageFetcher.loadImage(elem,source).then(function(){var fillingVibrant=fillVibrant(elem,source);enableFade&&!layoutManager.tv&&enableEffects!==!1&&!fillingVibrant,elem.removeAttribute("data-src")})}function fillVibrant(img,url,canvas,canvasContext){var vibrantElement=img.getAttribute("data-vibrant");return!!vibrantElement&&(window.Vibrant?(fillVibrantOnLoaded(img,url,vibrantElement,canvas,canvasContext),!0):(require(["vibrant"],function(){fillVibrantOnLoaded(img,url,vibrantElement,canvas,canvasContext)}),!0))}function fillVibrantOnLoaded(img,url,vibrantElement){vibrantElement=document.getElementById(vibrantElement),vibrantElement&&requestIdleCallback(function(){getVibrantInfoFromElement(img,url).then(function(vibrantInfo){var swatch=vibrantInfo.split("|");if(swatch.length){var index=0,style=vibrantElement.style;style.backgroundColor=swatch[index],style.color=swatch[index+1];var classList=vibrantElement.classList;classList.contains("cardFooter")?classList.add("cardFooter-vibrant"):classList.add("vibrant")}})})}function getVibrantInfoFromElement(elem,url){return new Promise(function(resolve,reject){require(["vibrant"],function(){if("IMG"===elem.tagName)return void resolve(getVibrantInfo(elem,url));var img=new Image;img.onload=function(){resolve(getVibrantInfo(img,url))},img.src=url})})}function getSettingsKey(url){var parts=url.split("://");url=parts[parts.length-1],url=url.substring(url.indexOf("/")+1),url=url.split("?")[0];var cacheKey="vibrant31";return cacheKey+url}function getCachedVibrantInfo(url){return appSettings.get(getSettingsKey(url))}function getVibrantInfo(img,url){var value=getCachedVibrantInfo(url);if(value)return value;var vibrant=new Vibrant(img),swatches=vibrant.swatches();value="";var swatch=swatches.DarkVibrant;return value+=getSwatchString(swatch),appSettings.set(getSettingsKey(url),value),value}function getSwatchString(swatch){return swatch?swatch.getHex()+"|"+swatch.getBodyTextColor()+"|"+swatch.getTitleTextColor():"||"}function lazyChildren(elem){lazyLoader.lazyChildren(elem,fillImage)}function getPrimaryImageAspectRatio(items){for(var values=[],i=0,length=items.length;i<length;i++){var ratio=items[i].PrimaryImageAspectRatio||0;ratio&&(values[values.length]=ratio)}if(!values.length)return null;values.sort(function(a,b){return a-b});var result,half=Math.floor(values.length/2);result=values.length%2?values[half]:(values[half-1]+values[half])/2;var aspect2x3=2/3;if(Math.abs(aspect2x3-result)<=.15)return aspect2x3;var aspect16x9=16/9;if(Math.abs(aspect16x9-result)<=.2)return aspect16x9;if(Math.abs(1-result)<=.15)return 1;var aspect4x3=4/3;return Math.abs(aspect4x3-result)<=.15?aspect4x3:result}function fillImages(elems){for(var i=0,length=elems.length;i<length;i++){var elem=elems[0];fillImage(elem)}}var requestIdleCallback=window.requestIdleCallback||function(fn){fn()},self={},enableFade=!browser.slow&&!browser.firefox;return self.fillImages=fillImages,self.lazyImage=fillImage,self.lazyChildren=lazyChildren,self.getPrimaryImageAspectRatio=getPrimaryImageAspectRatio,self.getCachedVibrantInfo=getCachedVibrantInfo,self.getVibrantInfoFromElement=getVibrantInfoFromElement,self});
|
|
@ -1 +1 @@
|
|||
.lazy-image-fadein{-webkit-animation:lazy-image-fadein .3s ease-in normal both;animation:lazy-image-fadein .3s ease-in normal both}.lazy-image-fadein-fast{-webkit-animation:lazy-image-fadein 160ms ease-in normal both;animation:lazy-image-fadein 160ms ease-in normal both}@-webkit-keyframes lazy-image-fadein{from{opacity:0}to{opacity:1}}@keyframes lazy-image-fadein{from{opacity:0}to{opacity:1}}
|
||||
.lazy-image-fadein{-webkit-animation:lazy-image-fadein 330ms ease-in normal both;animation:lazy-image-fadein 330ms ease-in normal both}.lazy-image-fadein-fast{-webkit-animation:lazy-image-fadein 160ms ease-in normal both;animation:lazy-image-fadein 160ms ease-in normal both}@-webkit-keyframes lazy-image-fadein{from{opacity:0}to{opacity:1}}@keyframes lazy-image-fadein{from{opacity:0}to{opacity:1}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -60,7 +60,7 @@
|
|||
<div class="noItemsMessage" style="display: none;">
|
||||
<p>${MessageNothingHere}</p>
|
||||
<p>
|
||||
<a href="metadata.html">${MessagePleaseEnsureInternetMetadata}</a>
|
||||
<a href="library.html">${MessagePleaseEnsureInternetMetadata}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue