diff --git a/web/assets/themes/blurple-dark.css b/web/assets/themes/blurple-dark.css index 2899ecf24..5f0deca88 100644 --- a/web/assets/themes/blurple-dark.css +++ b/web/assets/themes/blurple-dark.css @@ -3,6 +3,9 @@ theme-description: Official dark blurple theme */ +/* Use dark code highlights. */ +@import url("../dist/_prism-dark.css"); + :root { /* Define our nice blurple palette */ --blurple1: #ebe6f8; diff --git a/web/assets/themes/blurple-light.css b/web/assets/themes/blurple-light.css index eb45ffb30..2d6624771 100644 --- a/web/assets/themes/blurple-light.css +++ b/web/assets/themes/blurple-light.css @@ -3,6 +3,9 @@ theme-description: Official light blurple theme */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our nice blurple palette */ --blurple1: #ebe6f8; @@ -90,8 +93,8 @@ html, body { /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background-color: var(--blurple7); - color: var(--blurple2); + background-color: var(--blurple1); + color: var(--blurple7); } /* Block quotes */ diff --git a/web/assets/themes/brutalist-auto.css b/web/assets/themes/brutalist-auto.css index 080360c87..0e1d127ec 100644 --- a/web/assets/themes/brutalist-auto.css +++ b/web/assets/themes/brutalist-auto.css @@ -4,7 +4,7 @@ */ /* Default to brutalist theme */ -@import url("brutalist.css"); +@import url("brutalist-dark.css"); @import url("brutalist.css") screen and (prefers-color-scheme: light); @import url("brutalist-dark.css") screen and (prefers-color-scheme: dark); diff --git a/web/assets/themes/brutalist-dark.css b/web/assets/themes/brutalist-dark.css index 9be12ba92..496d1dff5 100644 --- a/web/assets/themes/brutalist-dark.css +++ b/web/assets/themes/brutalist-dark.css @@ -3,6 +3,9 @@ theme-description: (Pseudo-)monochrome brutality (dark version) */ +/* Use dark code highlights. */ +@import url("../dist/_prism-dark.css"); + :root { /* Define our color palette, two whole colors, wow! */ --almost-black: #06170e; @@ -34,6 +37,7 @@ /* Used around statuses + other items */ --double-border: 0.5rem double var(--almost-white); --dashed-border: 0.1rem dashed var(--almost-white); + --thick-dashed-border: 0.2rem dashed var(--almost-white); --single-border: 0.2rem solid var(--almost-white); /* Override some border stuff */ @@ -98,7 +102,6 @@ html, body { .status .text .content pre, .status .text .content code { background: var(--almost-black); - color: var(--almost-white); } /* Block quotes */ @@ -136,14 +139,14 @@ html, body { /* Make show more/less buttons more legible */ .button { - background-color: var(--almost-white); - color: var(--almost-black); - border: var(--dashed-border); + background-color: var(--almost-black); + color: var(--almost-white); + border: var(--single-border); } .button:hover { background-color: var(--almost-black); color: var(--almost-white); - border: var(--dashed-border); + border: var(--thick-dashed-border); } /* diff --git a/web/assets/themes/brutalist.css b/web/assets/themes/brutalist.css index e183ee50c..a4bbd4dde 100644 --- a/web/assets/themes/brutalist.css +++ b/web/assets/themes/brutalist.css @@ -3,6 +3,9 @@ theme-description: (Pseudo-)monochrome brutality */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our color palette, two whole colors, wow! */ --almost-black: #06170e; @@ -34,6 +37,7 @@ /* Used around statuses + other items */ --double-border: 0.5rem double var(--almost-black); --dashed-border: 0.1rem dashed var(--almost-black); + --thick-dashed-border: 0.2rem dashed var(--almost-black); --single-border: 0.2rem solid var(--almost-black); /* Override some border stuff */ @@ -92,14 +96,13 @@ html, body { /* Code snippets */ .status .text .content pre, .status .text .content code { - background: var(--almost-black); - color: var(--almost-white); + background: var(--almost-white); } /* Block quotes */ .status .text .content blockquote { - background-color: var(--almost-black); - color: var(--almost-white); + background-color: var(--almost-white); + color: var(--almost-black); } /* Polls */ @@ -131,14 +134,14 @@ html, body { /* Make show more/less buttons more legible */ .button { - background-color: var(--almost-black); - color: var(--almost-white); - border: var(--dashed-border); + background-color: var(--almost-white); + color: var(--almost-black); + border: var(--single-border); } .button:hover { background-color: var(--almost-white); color: var(--almost-black); - border: var(--dashed-border); + border: var(--thick-dashed-border); } /* diff --git a/web/assets/themes/hacker-dark.css b/web/assets/themes/hacker-dark.css index c01f4b075..b4982eaea 100644 --- a/web/assets/themes/hacker-dark.css +++ b/web/assets/themes/hacker-dark.css @@ -3,6 +3,9 @@ theme-description: Dark gray and green monospace theme */ +/* Use dark code highlights. */ +@import url("../dist/_prism-dark.css"); + :root { /* Define our cool hacker color palette, I'm in. */ --dark-gray: #1b1b1b; diff --git a/web/assets/themes/hacker-light.css b/web/assets/themes/hacker-light.css index 4c20587bc..845eda7b0 100644 --- a/web/assets/themes/hacker-light.css +++ b/web/assets/themes/hacker-light.css @@ -3,6 +3,9 @@ theme-description: Light gray and green monospace theme */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our cool hacker color palette, I'm in. */ --dark-gray: #1b1b1b; @@ -125,8 +128,8 @@ button, .button, /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background: var(--dark-gray); - color: var(--whiteish); + background: var(--whiteish); + color: var(--dark-gray); } /* Block quotes */ diff --git a/web/assets/themes/programmer-socks-dark.css b/web/assets/themes/programmer-socks-dark.css index 2e1b566ed..0eebcc5b3 100644 --- a/web/assets/themes/programmer-socks-dark.css +++ b/web/assets/themes/programmer-socks-dark.css @@ -3,6 +3,9 @@ theme-description: Dark gray and pink theme */ +/* Use dark code highlights. */ +@import url("../dist/_prism-dark.css"); + :root { /* Define our cool hacker color palette, I'm in. */ --dark-gray: #1b1b1b; diff --git a/web/assets/themes/programmer-socks-light.css b/web/assets/themes/programmer-socks-light.css index 6a3d6cbb2..581c9cab1 100644 --- a/web/assets/themes/programmer-socks-light.css +++ b/web/assets/themes/programmer-socks-light.css @@ -3,6 +3,9 @@ theme-description: Light gray and pink theme */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our cool hacker color palette, I'm in. */ --dark-gray: #1b1b1b; @@ -125,8 +128,8 @@ button, .button, /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background: var(--dark-gray); - color: var(--whiteish); + background: var(--whiteish); + color: var(--dark-gray); } /* Block quotes */ diff --git a/web/assets/themes/soft.css b/web/assets/themes/soft.css index 01a8729f7..218ae4347 100644 --- a/web/assets/themes/soft.css +++ b/web/assets/themes/soft.css @@ -3,6 +3,9 @@ theme-description: Pastel pink and blue with dark magenta trim */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our palette */ --soft-pink: rgb(255, 199, 234); @@ -134,8 +137,8 @@ html, body { /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background-color: var(--gray1); - color: white; + background-color: white; + color: var(--gray1); } /* Block quotes */ diff --git a/web/assets/themes/solarized-dark.css b/web/assets/themes/solarized-dark.css index 5e010258f..471100069 100644 --- a/web/assets/themes/solarized-dark.css +++ b/web/assets/themes/solarized-dark.css @@ -27,6 +27,9 @@ THE SOFTWARE. */ +/* Use dark code highlights. */ +@import url("../dist/_prism-dark.css"); + :root { /* Define solarized palette */ --base03: #002b36; /* Background. */ diff --git a/web/assets/themes/solarized-light.css b/web/assets/themes/solarized-light.css index 2cd421be5..05863ccb0 100644 --- a/web/assets/themes/solarized-light.css +++ b/web/assets/themes/solarized-light.css @@ -27,6 +27,9 @@ THE SOFTWARE. */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define solarized palette */ --base3: #fdf6e3; /* Background. */ @@ -135,8 +138,8 @@ html, body { /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background-color: black; - color: #93a1a1; + background-color: #93a1a1; + color: black; } /* Block quotes */ diff --git a/web/assets/themes/sunset-light.css b/web/assets/themes/sunset-light.css index a37fa7fb7..8f2e54b97 100644 --- a/web/assets/themes/sunset-light.css +++ b/web/assets/themes/sunset-light.css @@ -3,6 +3,9 @@ theme-description: Official light orange/yellow theme. */ +/* Use light code highlights. */ +@import url("../dist/_prism-light.css"); + :root { /* Define our palette */ --eggshell: #fff6eb; @@ -96,8 +99,8 @@ html, body { /* Code snippets */ pre, pre[class*="language-"], code, code[class*="language-"] { - background-color: var(--eggplant4); - color: var(--white1); + background-color: var(--white1); + color: var(--eggplant4); } /* Block quotes */ diff --git a/web/source/css/_prism.css b/web/source/css/_prism-dark.css similarity index 99% rename from web/source/css/_prism.css rename to web/source/css/_prism-dark.css index c1d369a9c..870593197 100644 --- a/web/source/css/_prism.css +++ b/web/source/css/_prism-dark.css @@ -1,4 +1,4 @@ -/* PrismJS 1.29.0 +/* PrismJS 1.30.0 https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+csharp+cpp+docker+elixir+erlang+go+go-module+ini+java+json+kotlin+lua+makefile+markup-templating+nginx+nix+perl+php+promql+python+r+jsx+tsx+ruby+rust+scala+sql+swift+typescript&plugins=show-invisibles+show-language+toolbar+copy-to-clipboard */ code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} .token.cr,.token.lf,.token.space,.token.tab:not(:empty){position:relative}.token.cr:before,.token.lf:before,.token.space:before,.token.tab:not(:empty):before{color:grey;opacity:.6;position:absolute}.token.tab:not(:empty):before{content:'\21E5'}.token.cr:before{content:'\240D'}.token.crlf:before{content:'\240D\240A'}.token.lf:before{content:'\240A'}.token.space:before{content:'\00B7'} diff --git a/web/source/css/_prism-light.css b/web/source/css/_prism-light.css new file mode 100644 index 000000000..6e60993ee --- /dev/null +++ b/web/source/css/_prism-light.css @@ -0,0 +1,5 @@ +/* PrismJS 1.30.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+c+csharp+cpp+docker+elixir+erlang+go+go-module+ini+java+json+kotlin+lua+makefile+markup-templating+nginx+nix+perl+php+promql+python+r+jsx+tsx+ruby+rust+scala+sql+swift+typescript&plugins=show-invisibles+show-language+toolbar+copy-to-clipboard */ +code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help} +.token.cr,.token.lf,.token.space,.token.tab:not(:empty){position:relative}.token.cr:before,.token.lf:before,.token.space:before,.token.tab:not(:empty):before{color:grey;opacity:.6;position:absolute}.token.tab:not(:empty):before{content:'\21E5'}.token.cr:before{content:'\240D'}.token.crlf:before{content:'\240D\240A'}.token.lf:before{content:'\240A'}.token.space:before{content:'\00B7'} +div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none} diff --git a/web/source/css/base.css b/web/source/css/base.css index c9ff21d74..01b7154ac 100644 --- a/web/source/css/base.css +++ b/web/source/css/base.css @@ -22,7 +22,10 @@ ****************************************/ @import "modern-normalize/modern-normalize.css"; -@import "./_prism.css"; + +/* Default to dark prism, choose light if prefers-color-scheme light */ +@import url("_prism-dark.css"); +@import url("_prism-light.css") screen and (prefers-color-scheme: light); @import "./_fonts.css"; /************************************* diff --git a/web/source/frontend/prism.js b/web/source/frontend/prism.js index b1eb83385..ae1c11552 100644 --- a/web/source/frontend/prism.js +++ b/web/source/frontend/prism.js @@ -1,6 +1,6 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+csharp+cpp+docker+elixir+erlang+go+go-module+ini+java+json+kotlin+lua+makefile+markup-templating+nginx+nix+perl+php+promql+python+r+jsx+tsx+ruby+rust+scala+sql+swift+typescript&plugins=show-invisibles+show-language+toolbar+copy-to-clipboard */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +/* PrismJS 1.30.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+c+csharp+cpp+docker+elixir+erlang+go+go-module+ini+java+json+kotlin+lua+makefile+markup-templating+nginx+nix+perl+php+promql+python+r+jsx+tsx+ruby+rust+scala+sql+swift+typescript&plugins=show-invisibles+show-language+toolbar+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var P=w.value;if(n.length>e.length)return;if(!(P instanceof i)){var E,S=1;if(y){if(!(E=l(b,A,e,m))||E.index>=e.length)break;var L=E.index,O=E.index+E[0].length,C=A;for(C+=w.value.length;L>=C;)C+=(w=w.next).value.length;if(A=C-=w.value.length,w.value instanceof i)continue;for(var j=w;j!==n.tail&&(Cg.reach&&(g.reach=W);var I=w.prev;if(_&&(I=u(n,I,_),A+=_.length),c(n,I,S),w=u(n,I,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),S>1){var T={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,T),g&&T.reach>g.reach&&(g.reach=T.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; !function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};