diff --git a/README.html b/README.html new file mode 100644 index 0000000000000000000000000000000000000000..30ce07649ce8f3c3c42c021a59aa44dc886365b6 --- /dev/null +++ b/README.html @@ -0,0 +1,1564 @@ +<!DOCTYPE html> + <html> + <head> + <meta charset="UTF-8"> + <title>CSSLSD Documentation</title> + <style> +/* From extension vscode.github */ +.vscode-dark img[src$=\#gh-light-mode-only], +.vscode-light img[src$=\#gh-dark-mode-only] { + display: none; +} + +/* From extension vscode.markdown-math */ +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto;border-color:currentColor}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.13.0"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .vbox{display:inline-flex;flex-direction:column;align-items:baseline}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{box-sizing:border-content;border-top:.049em solid;border-right:.049em solid;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{counter-increment:katexEqnNo;content:"(" counter(katexEqnNo) ")"}.katex .mml-eqn-num:before{counter-increment:mmlEqnNo;content:"(" counter(mmlEqnNo) ")"}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;position:absolute;left:calc(50% + .3em);text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left;padding-left:2em}body{counter-reset:katexEqnNo mmlEqnNo} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +.katex-error { + color: var(--vscode-editorError-foreground); +} + +/* From extension bierner.markdown-preview-github-styles */ +html, +body, +.github-markdown-body { + padding: 0 !important; + max-width: auto !important; +} + +.github-markdown-body { + background-color: var(--color-canvas-default); + color: var(--color-fg-default); +} + +.github-markdown-body { + border: 1px solid transparent; + box-sizing: border-box; + margin: 0 auto; + width: 100% !important; +} + +.github-markdown-content { + padding: 32px !important; + max-width: 980px; + min-width: 200px; + margin: 0 auto; +} + + +.vscode-body.scrollBeyondLastLine { + margin-bottom: 0; +} +.vscode-body.scrollBeyondLastLine .github-markdown-body { + padding-bottom: calc(100vh + 10px) !important; +} + +.github-markdown-body blockquote { + background-color: initial; +} + +.github-markdown-body pre { + color: initial; +} + +.github-markdown-body code { + color: inherit; +} + +.github-markdown-body pre code { + color: initial; +} + +.github-markdown-body code > div { + background: none +} + +.github-markdown-body.showEditorSelection .code-line .code-line:hover:before { + border-left: none; +} + +.github-markdown-body p, +.github-markdown-body blockquote, +.github-markdown-body ul, +.github-markdown-body ol, +.github-markdown-body dl, +.github-markdown-body table, +.github-markdown-body pre { + margin-top: 16px; + margin-bottom: 16px; +} + +/* Generated from 'node_modules/github-markdown-css/github-markdown.css' */ + +.github-markdown-light, +.vscode-body.vscode-light .github-markdown-auto { + color-scheme: light; + --color-prettylights-syntax-comment: #6e7781; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-entity: #8250df; + --color-prettylights-syntax-storage-modifier-import: #24292f; + --color-prettylights-syntax-entity-tag: #116329; + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-variable: #953800; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; + --color-prettylights-syntax-invalid-illegal-bg: #82071e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-italic: #24292f; + --color-prettylights-syntax-markup-bold: #24292f; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-deleted-bg: #FFEBE9; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-ignored-text: #eaeef2; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-brackethighlighter-angle: #57606a; + --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-fg-default: #24292f; + --color-fg-muted: #57606a; + --color-fg-subtle: #6e7781; + --color-canvas-default: #ffffff; + --color-canvas-subtle: #f6f8fa; + --color-border-default: #d0d7de; + --color-border-muted: hsla(210,18%,87%,1); + --color-neutral-muted: rgba(175,184,193,0.2); + --color-accent-fg: #0969da; + --color-accent-emphasis: #0969da; + --color-danger-fg: #cf222e; +} + +.github-markdown-dark, +.vscode-body.vscode-dark .github-markdown-auto { + color-scheme: dark; + --color-prettylights-syntax-comment: #8b949e; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #c9d1d9; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-variable: #ffa657; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; + --color-prettylights-syntax-invalid-illegal-bg: #8e1519; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-italic: #c9d1d9; + --color-prettylights-syntax-markup-bold: #c9d1d9; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-ignored-text: #c9d1d9; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-brackethighlighter-angle: #8b949e; + --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-fg-default: #c9d1d9; + --color-fg-muted: #8b949e; + --color-fg-subtle: #484f58; + --color-canvas-default: #0d1117; + --color-canvas-subtle: #161b22; + --color-border-default: #30363d; + --color-border-muted: #21262d; + --color-neutral-muted: rgba(110,118,129,0.4); + --color-accent-fg: #58a6ff; + --color-accent-emphasis: #1f6feb; + --color-danger-fg: #f85149; +} + +@media (prefers-color-scheme: dark) { + .github-markdown-system { + color-scheme: dark; + --color-prettylights-syntax-comment: #8b949e; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #c9d1d9; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-variable: #ffa657; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; + --color-prettylights-syntax-invalid-illegal-bg: #8e1519; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-italic: #c9d1d9; + --color-prettylights-syntax-markup-bold: #c9d1d9; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-ignored-text: #c9d1d9; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-brackethighlighter-angle: #8b949e; + --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-fg-default: #c9d1d9; + --color-fg-muted: #8b949e; + --color-fg-subtle: #484f58; + --color-canvas-default: #0d1117; + --color-canvas-subtle: #161b22; + --color-border-default: #30363d; + --color-border-muted: #21262d; + --color-neutral-muted: rgba(110,118,129,0.4); + --color-accent-fg: #58a6ff; + --color-accent-emphasis: #1f6feb; + --color-danger-fg: #f85149; + } +} + +@media (prefers-color-scheme: light) { + .github-markdown-system { + color-scheme: light; + --color-prettylights-syntax-comment: #6e7781; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-entity: #8250df; + --color-prettylights-syntax-storage-modifier-import: #24292f; + --color-prettylights-syntax-entity-tag: #116329; + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-variable: #953800; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; + --color-prettylights-syntax-invalid-illegal-bg: #82071e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-italic: #24292f; + --color-prettylights-syntax-markup-bold: #24292f; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-deleted-bg: #FFEBE9; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-ignored-text: #eaeef2; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-brackethighlighter-angle: #57606a; + --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-fg-default: #24292f; + --color-fg-muted: #57606a; + --color-fg-subtle: #6e7781; + --color-canvas-default: #ffffff; + --color-canvas-subtle: #f6f8fa; + --color-border-default: #d0d7de; + --color-border-muted: hsla(210,18%,87%,1); + --color-neutral-muted: rgba(175,184,193,0.2); + --color-accent-fg: #0969da; + --color-accent-emphasis: #0969da; + --color-danger-fg: #cf222e; + } +} + +.github-markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + color: var(--color-fg-default); + background-color: var(--color-canvas-default); + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.github-markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.github-markdown-body h1:hover .anchor .octicon-link:before, +.github-markdown-body h2:hover .anchor .octicon-link:before, +.github-markdown-body h3:hover .anchor .octicon-link:before, +.github-markdown-body h4:hover .anchor .octicon-link:before, +.github-markdown-body h5:hover .anchor .octicon-link:before, +.github-markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.github-markdown-body details, +.github-markdown-body figcaption, +.github-markdown-body figure { + display: block; +} + +.github-markdown-body summary { + display: list-item; +} + +.github-markdown-body a { + background-color: transparent; + color: var(--color-accent-fg); + text-decoration: none; +} + +.github-markdown-body a:active, +.github-markdown-body a:hover { + outline-width: 0; +} + +.github-markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.github-markdown-body b, +.github-markdown-body strong { + font-weight: 600; +} + +.github-markdown-body dfn { + font-style: italic; +} + +.github-markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid var(--color-border-muted); +} + +.github-markdown-body mark { + background-color: #ff0; + color: var(--color-text-primary); +} + +.github-markdown-body small { + font-size: 90%; +} + +.github-markdown-body sub, +.github-markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.github-markdown-body sub { + bottom: -0.25em; +} + +.github-markdown-body sup { + top: -0.5em; +} + +.github-markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; + background-color: var(--color-canvas-default); +} + +.github-markdown-body code, +.github-markdown-body kbd, +.github-markdown-body pre, +.github-markdown-body samp { + font-family: monospace,monospace; + font-size: 1em; +} + +.github-markdown-body figure { + margin: 1em 40px; +} + +.github-markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: transparent; + border-bottom: 1px solid var(--color-border-muted); + height: .25em; + padding: 0; + margin: 24px 0; + background-color: var(--color-border-default); + border: 0; +} + +.github-markdown-body html [type=button], +.github-markdown-body [type=reset], +.github-markdown-body [type=submit] { + -webkit-appearance: button; +} + +.github-markdown-body [type=button]::-moz-focus-inner, +.github-markdown-body [type=reset]::-moz-focus-inner, +.github-markdown-body [type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +.github-markdown-body [type=button]:-moz-focusring, +.github-markdown-body [type=reset]:-moz-focusring, +.github-markdown-body [type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +.github-markdown-body [type=checkbox], +.github-markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.github-markdown-body [type=number]::-webkit-inner-spin-button, +.github-markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.github-markdown-body [type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +.github-markdown-body [type=search]::-webkit-search-cancel-button, +.github-markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +.github-markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.github-markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +.github-markdown-body a:hover { + text-decoration: underline; +} + +.github-markdown-body hr::before { + display: table; + content: ""; +} + +.github-markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.github-markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; +} + +.github-markdown-body td, +.github-markdown-body th { + padding: 0; +} + +.github-markdown-body details summary { + cursor: pointer; +} + +.github-markdown-body details:not([open])>*:not(summary) { + display: none !important; +} + +.github-markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + line-height: 10px; + color: var(--color-fg-default); + vertical-align: middle; + background-color: var(--color-canvas-subtle); + border: solid 1px var(--color-neutral-muted); + border-bottom-color: var(--color-neutral-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--color-neutral-muted); +} + +.github-markdown-body h1, +.github-markdown-body h2, +.github-markdown-body h3, +.github-markdown-body h4, +.github-markdown-body h5, +.github-markdown-body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 600; + line-height: 1.25; +} + +.github-markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid var(--color-border-muted); +} + +.github-markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.github-markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.github-markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.github-markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: var(--color-fg-muted); +} + +.github-markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.github-markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: var(--color-fg-muted); + border-left: .25em solid var(--color-border-default); +} + +.github-markdown-body ul, +.github-markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.github-markdown-body ol ol, +.github-markdown-body ul ol { + list-style-type: lower-roman; +} + +.github-markdown-body ul ul ol, +.github-markdown-body ul ol ol, +.github-markdown-body ol ul ol, +.github-markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.github-markdown-body dd { + margin-left: 0; +} + +.github-markdown-body tt, +.github-markdown-body code { + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; +} + +.github-markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; + word-wrap: normal; +} + +.github-markdown-body :-ms-input-placeholder { + color: var(--color-fg-subtle); + opacity: 1; +} + +.github-markdown-body ::-ms-input-placeholder { + color: var(--color-fg-subtle); + opacity: 1; +} + +.github-markdown-body ::placeholder { + color: var(--color-fg-subtle); + opacity: 1; +} + +.github-markdown-body .pl-c { + color: var(--color-prettylights-syntax-comment); +} + +.github-markdown-body .pl-c1, +.github-markdown-body .pl-s .pl-v { + color: var(--color-prettylights-syntax-constant); +} + +.github-markdown-body .pl-e, +.github-markdown-body .pl-en { + color: var(--color-prettylights-syntax-entity); +} + +.github-markdown-body .pl-smi, +.github-markdown-body .pl-s .pl-s1 { + color: var(--color-prettylights-syntax-storage-modifier-import); +} + +.github-markdown-body .pl-ent { + color: var(--color-prettylights-syntax-entity-tag); +} + +.github-markdown-body .pl-k { + color: var(--color-prettylights-syntax-keyword); +} + +.github-markdown-body .pl-s, +.github-markdown-body .pl-pds, +.github-markdown-body .pl-s .pl-pse .pl-s1, +.github-markdown-body .pl-sr, +.github-markdown-body .pl-sr .pl-cce, +.github-markdown-body .pl-sr .pl-sre, +.github-markdown-body .pl-sr .pl-sra { + color: var(--color-prettylights-syntax-string); +} + +.github-markdown-body .pl-v, +.github-markdown-body .pl-smw { + color: var(--color-prettylights-syntax-variable); +} + +.github-markdown-body .pl-bu { + color: var(--color-prettylights-syntax-brackethighlighter-unmatched); +} + +.github-markdown-body .pl-ii { + color: var(--color-prettylights-syntax-invalid-illegal-text); + background-color: var(--color-prettylights-syntax-invalid-illegal-bg); +} + +.github-markdown-body .pl-c2 { + color: var(--color-prettylights-syntax-carriage-return-text); + background-color: var(--color-prettylights-syntax-carriage-return-bg); +} + +.github-markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: var(--color-prettylights-syntax-string-regexp); +} + +.github-markdown-body .pl-ml { + color: var(--color-prettylights-syntax-markup-list); +} + +.github-markdown-body .pl-mh, +.github-markdown-body .pl-mh .pl-en, +.github-markdown-body .pl-ms { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-heading); +} + +.github-markdown-body .pl-mi { + font-style: italic; + color: var(--color-prettylights-syntax-markup-italic); +} + +.github-markdown-body .pl-mb { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-bold); +} + +.github-markdown-body .pl-md { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); +} + +.github-markdown-body .pl-mi1 { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); +} + +.github-markdown-body .pl-mc { + color: var(--color-prettylights-syntax-markup-changed-text); + background-color: var(--color-prettylights-syntax-markup-changed-bg); +} + +.github-markdown-body .pl-mi2 { + color: var(--color-prettylights-syntax-markup-ignored-text); + background-color: var(--color-prettylights-syntax-markup-ignored-bg); +} + +.github-markdown-body .pl-mdr { + font-weight: bold; + color: var(--color-prettylights-syntax-meta-diff-range); +} + +.github-markdown-body .pl-ba { + color: var(--color-prettylights-syntax-brackethighlighter-angle); +} + +.github-markdown-body .pl-sg { + color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); +} + +.github-markdown-body .pl-corl { + text-decoration: underline; + color: var(--color-prettylights-syntax-constant-other-reference-link); +} + +.github-markdown-body [data-catalyst] { + display: block; +} + +.github-markdown-body g-emoji { + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.github-markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.github-markdown-body::before { + display: table; + content: ""; +} + +.github-markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.github-markdown-body>*:first-child { + margin-top: 0 !important; +} + +.github-markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.github-markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.github-markdown-body .absent { + color: var(--color-danger-fg); +} + +.github-markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.github-markdown-body .anchor:focus { + outline: none; +} + +.github-markdown-body p, +.github-markdown-body blockquote, +.github-markdown-body ul, +.github-markdown-body ol, +.github-markdown-body dl, +.github-markdown-body table, +.github-markdown-body pre, +.github-markdown-body details { + margin-top: 0; + margin-bottom: 16px; +} + +.github-markdown-body blockquote>:first-child { + margin-top: 0; +} + +.github-markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.github-markdown-body sup>a::before { + content: "["; +} + +.github-markdown-body sup>a::after { + content: "]"; +} + +.github-markdown-body h1 .octicon-link, +.github-markdown-body h2 .octicon-link, +.github-markdown-body h3 .octicon-link, +.github-markdown-body h4 .octicon-link, +.github-markdown-body h5 .octicon-link, +.github-markdown-body h6 .octicon-link { + color: var(--color-fg-default); + vertical-align: middle; + visibility: hidden; +} + +.github-markdown-body h1:hover .anchor, +.github-markdown-body h2:hover .anchor, +.github-markdown-body h3:hover .anchor, +.github-markdown-body h4:hover .anchor, +.github-markdown-body h5:hover .anchor, +.github-markdown-body h6:hover .anchor { + text-decoration: none; +} + +.github-markdown-body h1:hover .anchor .octicon-link, +.github-markdown-body h2:hover .anchor .octicon-link, +.github-markdown-body h3:hover .anchor .octicon-link, +.github-markdown-body h4:hover .anchor .octicon-link, +.github-markdown-body h5:hover .anchor .octicon-link, +.github-markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.github-markdown-body h1 tt, +.github-markdown-body h1 code, +.github-markdown-body h2 tt, +.github-markdown-body h2 code, +.github-markdown-body h3 tt, +.github-markdown-body h3 code, +.github-markdown-body h4 tt, +.github-markdown-body h4 code, +.github-markdown-body h5 tt, +.github-markdown-body h5 code, +.github-markdown-body h6 tt, +.github-markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.github-markdown-body ul.no-list, +.github-markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.github-markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.github-markdown-body ol[type=a] { + list-style-type: lower-alpha; +} + +.github-markdown-body ol[type=i] { + list-style-type: lower-roman; +} + +.github-markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.github-markdown-body ul ul, +.github-markdown-body ul ol, +.github-markdown-body ol ol, +.github-markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.github-markdown-body li>p { + margin-top: 16px; +} + +.github-markdown-body li+li { + margin-top: .25em; +} + +.github-markdown-body dl { + padding: 0; +} + +.github-markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.github-markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +.github-markdown-body table th { + font-weight: 600; +} + +.github-markdown-body table th, +.github-markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--color-border-default); +} + +.github-markdown-body table tr { + background-color: var(--color-canvas-default); + border-top: 1px solid var(--color-border-muted); +} + +.github-markdown-body table tr:nth-child(2n) { + background-color: var(--color-canvas-subtle); +} + +.github-markdown-body table img { + background-color: transparent; +} + +.github-markdown-body img[align=right] { + padding-left: 20px; +} + +.github-markdown-body img[align=left] { + padding-right: 20px; +} + +.github-markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: transparent; +} + +.github-markdown-body span.frame { + display: block; + overflow: hidden; +} + +.github-markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid var(--color-border-default); +} + +.github-markdown-body span.frame span img { + display: block; + float: left; +} + +.github-markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: var(--color-fg-default); +} + +.github-markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.github-markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.github-markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.github-markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.github-markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.github-markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.github-markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.github-markdown-body span.float-left span { + margin: 13px 0 0; +} + +.github-markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.github-markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.github-markdown-body code, +.github-markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + background-color: var(--color-neutral-muted); + border-radius: 6px; +} + +.github-markdown-body code br, +.github-markdown-body tt br { + display: none; +} + +.github-markdown-body del code { + text-decoration: inherit; +} + +.github-markdown-body pre code { + font-size: 100%; +} + +.github-markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.github-markdown-body .highlight { + margin-bottom: 16px; +} + +.github-markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.github-markdown-body .highlight pre, +.github-markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: var(--color-canvas-subtle); + border-radius: 6px; +} + +.github-markdown-body pre code, +.github-markdown-body pre tt { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +.github-markdown-body .csv-data td, +.github-markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.github-markdown-body .csv-data .blob-num { + padding: 10px 8px 9px; + text-align: right; + background: var(--color-canvas-default); + border: 0; +} + +.github-markdown-body .csv-data tr { + border-top: 0; +} + +.github-markdown-body .csv-data th { + font-weight: 600; + background: var(--color-canvas-subtle); + border-top: 0; +} + +.github-markdown-body .footnotes { + font-size: 12px; + color: var(--color-fg-muted); + border-top: 1px solid var(--color-border-default); +} + +.github-markdown-body .footnotes ol { + padding-left: 16px; +} + +.github-markdown-body .footnotes li { + position: relative; +} + +.github-markdown-body .footnotes li:target::before { + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -24px; + pointer-events: none; + content: ""; + border: 2px solid var(--color-accent-emphasis); + border-radius: 6px; +} + +.github-markdown-body .footnotes li:target { + color: var(--color-fg-default); +} + +.github-markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.github-markdown-body [hidden] { + display: none !important; +} + +.github-markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} +/*! + Theme: GitHub + Description: Highlight-js port of github.com theme + Author: github.com + Maintainer: @SNDST00M, @mjbvz + Updated: 2021-12-08 +*/ +.markdown-body pre code.hljs { + display: block; + overflow-x: auto; + padding: 16px; +} + +.markdown-body code.hljs { + padding: 3px 5px; +} + +/*! + Theme: GitHub + Description: Theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/ +.markdown-body .hljs { + color: var(--color-fg-default); + background: var(--color-canvas-subtle); +} + +.markdown-body .hljs-doctag, +.markdown-body .hljs-keyword, +.markdown-body .hljs-meta .hljs-keyword, +.markdown-body .hljs-template-tag, +.markdown-body .hljs-template-variable, +.markdown-body .hljs-type, +.markdown-body .hljs-variable.language_ { + color: var(--color-prettylights-syntax-keyword); +} + +.markdown-body .hljs-title, +.markdown-body .hljs-title.class_, +.markdown-body .hljs-title.class_.inherited__, +.markdown-body .hljs-title.function_ { + color: var(--color-prettylights-syntax-entity); +} + +.markdown-body .hljs-attr, +.markdown-body .hljs-attribute, +.markdown-body .hljs-literal, +.markdown-body .hljs-meta, +.markdown-body .hljs-number, +.markdown-body .hljs-operator, +.markdown-body .hljs-selector-attr, +.markdown-body .hljs-selector-class, +.markdown-body .hljs-selector-id, +.markdown-body .hljs-variable { + color: var(--color-prettylights-syntax-constant); +} + +.markdown-body .hljs-meta .hljs-string, +.markdown-body .hljs-regexp, +.markdown-body .hljs-string { + color: var(--color-prettylights-syntax-string); +} + +.markdown-body .hljs-built_in, +.markdown-body .hljs-symbol { + color: var(--color-prettylights-syntax-variable); +} + +.markdown-body .hljs-code, +.markdown-body .hljs-comment, +.markdown-body .hljs-formula { + color: var(--color-prettylights-syntax-comment); +} + +.markdown-body .hljs-name, +.markdown-body .hljs-quote, +.markdown-body .hljs-selector-pseudo, +.markdown-body .hljs-selector-tag { + color: var(--color-prettylights-syntax-entity-tag); +} + +.markdown-body .hljs-subst { + color: var(--color-prettylights-syntax-constant); +} + +.markdown-body .hljs-section { + color: var(--color-prettylights-syntax-markup-heading); + font-weight: bold; +} + +.markdown-body .hljs-bullet { + color: var(--color-prettylights-syntax-markup-list); +} + +.markdown-body .hljs-emphasis { + color: var(--color-prettylights-syntax-constant); + font-style: italic; +} + +.markdown-body .hljs-strong { + color: var(--color-prettylights-syntax-constant); + font-weight: bold; +} + +.markdown-body .hljs-addition { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); +} + +.markdown-body .hljs-deletion { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); +} + +</style> + + <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css"> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css"> +<style> + body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif; + font-size: 14px; + line-height: 1.6; + } + </style> + <style> +.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; } +</style> + + + + </head> + <body class="vscode-body vscode-light"> + <div class="github-markdown-body github-markdown-auto"> + <div class="github-markdown-content"><p align="center"><img width="150" alt="CSS LSD Logo" src="file:///d:\Cours\M2S4\PFE\csslsd\ressources\logo.svg"></p> +<p align="center">CssLsd is a Chromium Extension which allows for interactively modifying +the style of web pages using MIDI messages, Keyboard presses or Audio input +features. +.</p> +<h2 id="table-of-contents">Table of contents</h2> +<ul> +<li><a href="#table-of-contents">Table of contents</a></li> +<li><a href="#setup">Setup</a> +<ul> +<li><a href="#browser-comatibility-for-audioworklet">Browser comatibility for AudioWorklet</a></li> +</ul> +</li> +<li><a href="#usage">Usage</a> +<ul> +<li><a href="#user-interface">User Interface</a> +<ul> +<li><a href="#open-extension">Open extension</a> +<ul> +<li><a href="#popup">Popup</a></li> +<li><a href="#devtool--deported-devtool">Devtool & deported devtool</a></li> +</ul> +</li> +<li><a href="#start-to-use-functionnalities">Start to use functionnalities</a> +<ul> +<li><a href="#audio">Audio</a></li> +<li><a href="#midi">MIDI</a></li> +<li><a href="#loops">Loops</a></li> +</ul> +</li> +<li><a href="#upload-and-download">Upload and download</a></li> +</ul> +</li> +<li><a href="#csslsd-code">CSSLSD Code</a></li> +<li><a href="#midi-variables">MIDI Variables</a></li> +<li><a href="#audio-variables">Audio Variables</a></li> +<li><a href="#types">Types</a></li> +<li><a href="#options">Options</a></li> +<li><a href="#examples">Examples</a></li> +</ul> +</li> +<li><a href="#ressources">Ressources</a></li> +</ul> +<h2 id="setup">Setup</h2> +<ul> +<li>Download or Clone CssLsd</li> +<li>Start Chromium</li> +<li>Type chrome://extensions in the address bar</li> +<li>Click "Load unpacked extension" and select the csslsd folder</li> +<li>Now the extension should appear in the menu bar</li> +</ul> +<h3 id="browser-comatibility-for-audioworklet">Browser comatibility for AudioWorklet</h3> +<table> +<thead> +<tr> +<th>Chrome</th> +<th>Edge</th> +<th>Firefox</th> +<th>Opéra</th> +<th>Brave</th> +</tr> +</thead> +<tbody> +<tr> +<td>64</td> +<td>79</td> +<td>76</td> +<td>51</td> +<td>64</td> +</tr> +</tbody> +</table> +<h2 id="usage">Usage</h2> +<h3 id="user-interface">User Interface</h3> +<h4 id="open-extension">Open extension</h4> +<h5 id="popup">Popup</h5> +<p><img src="file:///d:\Cours\M2S4\PFE\csslsd\doc\popup.png" alt="Popup view"> +Pin the extension to get it close to URL bar. CLick on CSSLSD logo to open it.</p> +<h5 id="devtool--deported-devtool">Devtool & deported devtool</h5> +<p><img src="file:///d:\Cours\M2S4\PFE\csslsd\doc\devtool.gif" alt="Devtool view"> +Open devtool, in "element", "source", "console" bar click on view more arrow, then drag-and-drop "CSSLSD" button. +You can put "element" tab to bottom by right-clicking on it. +For deported devtool, click on more (top-right) and then click on separate devtool dock.</p> +<h4 id="start-to-use-functionnalities">Start to use functionnalities</h4> +<h5 id="audio">Audio</h5> +<p><img src="file:///d:\Cours\M2S4\PFE\csslsd\doc\activate_audio.gif" alt="Devtool view"></p> +<p>Click on activate button, right top. When it becomes green you can click on audio one. If audio well started it's become green too. Don't forget to authorize the tab to get access to your microphone.</p> +<h5 id="midi">MIDI</h5> +<p>Click on activate button, then on MIDI button. If this one becomes green, the MIDI is operationnal to use. Your device is displayed on top left. On control change on your MIDI device and if the extension pop-up is open the control ID will be displayed on top center. And if you focus text MIDI column parameter, control will be add to the list.</p> +<h5 id="loops">Loops</h5> +<p>When you press record all interactions with the midi device are recorded in a table. When finished recording, press stop. You can then play your loop by pressing play or re-record over the previously created loop. Finally, you can overwrite the created loop. You have 4 slots available to save your loops. You can also map MIDI events to the actions listed above. +You can't record simultaneously loops, push on record N°X button will overwrite the loop N°X.</p> +<h4 id="upload-and-download">Upload and download</h4> +<p>You have the possibility to export all CSS-LSD settings and codes as a JSON file. You can then import a previously exported JSON file from the extension. This can be useful for saving presets according to websites.</p> +<h3 id="csslsd-code">CSSLSD Code</h3> +<p>You need to use a custom CSS template, like below to map your audio or MIDI events to some CSSLSD properties. All parameters are between square brackets you can extend parameter by heritage with a range (this is not mandatory).</p> +<p>Code example:</p> +<pre><code class="language-css"><div><span class="hljs-selector-tag">body</span> { + <span class="hljs-attribute">background-color</span>:[couleur <span class="hljs-number">#000</span>:<span class="hljs-number">#fff</span>]; +} +<span class="hljs-selector-tag">h1</span> { + <span class="hljs-attribute">opacity</span>: [opacité]; +} +</div></code></pre> +<p>Parameters example:</p> +<p align="center"> +<img width="600" alt="Settings" src="file:///d:\Cours\M2S4\PFE\csslsd\doc\settings.png"> +</p> +<p>To <em><strong>save</strong></em> your template, it's automatic ! Just type, edit what you want. It will be saved.</p> +<h3 id="midi-variables">MIDI Variables</h3> +<table> +<thead> +<tr> +<th>Midi Event</th> +<th>Parameter</th> +<th>Informations</th> +</tr> +</thead> +<tbody> +<tr> +<td>note</td> +<td>id</td> +<td>Note on, use case : note:21</td> +</tr> +<tr> +<td>cc</td> +<td>id</td> +<td>Control change, use case : cc:10</td> +</tr> +<tr> +<td>pb</td> +<td></td> +<td>Pitchbend, use case : pb</td> +</tr> +</tbody> +</table> +<h3 id="audio-variables">Audio Variables</h3> +<table> +<thead> +<tr> +<th>Audio Event</th> +<th>Parameter</th> +<th>Informations</th> +</tr> +</thead> +<tbody> +<tr> +<td>low</td> +<td></td> +<td>low energy, use case : low</td> +</tr> +<tr> +<td>lomi</td> +<td></td> +<td>lomi energy, use case : lomi</td> +</tr> +<tr> +<td>low</td> +<td></td> +<td>mid energy, use case : mid</td> +</tr> +<tr> +<td>mihi</td> +<td></td> +<td>mihi energy, use case : mihi</td> +</tr> +<tr> +<td>hi</td> +<td></td> +<td>High energy, use case : hi</td> +</tr> +<tr> +<td>loud</td> +<td></td> +<td>Volume meter, use case : loud</td> +</tr> +<tr> +<td>onset</td> +<td>note</td> +<td>Note, use case : onset:A</td> +</tr> +<tr> +<td>attack</td> +<td></td> +<td>Attack, use case : attack</td> +</tr> +</tbody> +</table> +<h3 id="types">Types</h3> +<table> +<thead> +<tr> +<th>Option</th> +<th>Informations</th> +</tr> +</thead> +<tbody> +<tr> +<td>min:max</td> +<td>Decimal or hexadecimal min and max splited by ":"</td> +</tr> +<tr> +<td>A;B;C</td> +<td>Array splited by ";"</td> +</tr> +</tbody> +</table> +<h3 id="options">Options</h3> +<table> +<thead> +<tr> +<th>Option</th> +<th>Informations</th> +</tr> +</thead> +<tbody> +<tr> +<td>r</td> +<td>Random value between type object</td> +</tr> +<tr> +<td>i:1</td> +<td>Incremental value between type object, increment can be negative</td> +</tr> +<tr> +<td>d</td> +<td>Linear value between type object</td> +</tr> +</tbody> +</table> +<h3 id="examples">Examples</h3> +<p><img src="file:///d:\Cours\M2S4\PFE\csslsd\doc\parameter_opacity.gif" alt="Devtool view"></p> +<p>This exemple show, how to duplicate parameter, to add "opacité" one. And then add it to CSSLSD code via auto-completition.</p> +<h2 id="ressources">Ressources</h2> +<ul> +<li>Chrome extensions : <a href="https://developer.chrome.com/docs/extensions/mv3/getstarted/">https://developer.chrome.com/docs/extensions/mv3/getstarted/</a></li> +<li>ACE.js : <a href="https://ace.c9.io/">https://ace.c9.io/</a></li> +<li>WebMIDI : <a href="https://webmidijs.org/">https://webmidijs.org/</a></li> +<li>CSSParser : <a href="http://glazman.org/JSCSSP/index.html">http://glazman.org/JSCSSP/index.html</a></li> +</ul> +</div> + </div> + </body> + </html> \ No newline at end of file diff --git a/main.js b/main.js index 06c0e5456294672419f08d9cfa45c29486548607..9985aeed307f5226f2ecc68ce5ee04aa93f66d6e 100644 --- a/main.js +++ b/main.js @@ -153,6 +153,10 @@ $(document).on('input', '#loopList span', function () { }); }); +$(document).on('click', '#doc', function(){ + chrome.tabs.create({'url': "/README.html" } ); +}); + var allParameters; document.getElementById("parameters").addEventListener("input", function () { saveParameters(); diff --git a/main.min.js b/main.min.js index 87b8eab8f3dd62313edb5482cd6338553cf36678..7373cc4ca0a9e21b08901f00bfd255d395a5f126 100644 --- a/main.min.js +++ b/main.min.js @@ -1,2 +1,2 @@ -var activateButton,dataMidi,editor,langTools,allParameters,audioButton=!1,midiButton=!1,trashIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-trash" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<line x1="4" y1="7" x2="20" y2="7"></line>\n<line x1="10" y1="11" x2="10" y2="17"></line>\n<line x1="14" y1="11" x2="14" y2="17"></line>\n<path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>\n<path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>\n</svg>',recordIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-record" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<circle cx="12" cy="12" r="7"></circle>\n</svg>',stopIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-stop" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<rect x="5" y="5" width="14" height="14" rx="2"></rect>\n</svg>',pauseIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-pause" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<rect x="6" y="5" width="4" height="14" rx="1"></rect>\n<rect x="14" y="5" width="4" height="14" rx="1"></rect>\n</svg>',playIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-play" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<path d="M7 4v16l13 -8z"></path>\n</svg>',minus='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-minus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><circle cx="12" cy="12" r="9"></circle><line x1="9" y1="12" x2="15" y2="12"></line></svg>',plus='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><circle cx="12" cy="12" r="9"></circle><line x1="9" y1="12" x2="15" y2="12"></line><line x1="12" y1="9" x2="12" y2="15"></line></svg>',icon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-grip-vertical" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <circle cx="9" cy="5" r="1"></circle> <circle cx="9" cy="12" r="1"></circle> <circle cx="9" cy="19" r="1"></circle> <circle cx="15" cy="5" r="1"></circle> <circle cx="15" cy="12" r="1"></circle> <circle cx="15" cy="19" r="1"></circle></svg>';function setAutocompleteParameters(){var e=[];chrome.storage.sync.get(["parameters"],(function(t){parameters=JSON.parse(t.parameters),parameters.forEach(t=>{e.push({value:"["+t[1]+"]",score:1,meta:t[3]+" "+t[4]})})}));const t={getCompletions:(t,n,o,a,i)=>{i(null,e)}};langTools.addCompleter(t)}function loadEditor(){(editor=ace.edit("editor")).setTheme("ace/theme/tomorrow_night_blue"),editor.session.setMode("ace/mode/css"),editor.getSession().setUseWorker(!1),langTools=ace.require("ace/ext/language_tools"),editor.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!0}),chrome.storage.sync.get(["css"],(function(e){editor.getSession().setValue(e.css)})),setAutocompleteParameters(),editor.getSession().on("change",(function(){updateCss()}))}function initUi(){chrome.storage.sync.get(["activate"],(function(e){(activateButton=e.activate)?$("#onOff").addClass("active"):$("#onOff").removeClass("active")})),chrome.storage.sync.get(["audioI"],(function(e){audioButton=e.audioI,e.audioI?$(".audioI").addClass("active"):$(".audioI").removeClass("active")})),chrome.storage.sync.get(["midiI"],(function(e){midiButton=e.midiI,e.midiI?$(".midiI").addClass("active"):$(".midiI").removeClass("active")})),chrome.storage.sync.get(["records"],(function(e){$("#loopList").text("");for(let t=0;t<e.records.loop.length;t++)e.records.loop[t].length>0?$("#loopList").append("<tr><td>Boucle n°"+(t+1)+"</td><td>"+e.records.loop[t][e.records.loop[t].length-1].time+"ms</td><td>"+e.records.loop[t].length+'</td><td><button id="record" value="'+t+'">'+(e.records.info[t].isRecording?stopIcon:recordIcon)+'</button><a>note:<span contenteditable class="spanEditable"></span></a><button id="loopPlay" value="'+t+'">'+(e.records.info[t].isLoop?pauseIcon:playIcon)+'</button><a>note:<span contenteditable class="spanEditable"></span></a></td><td><button id="loopReset" value="'+t+'">'+trashIcon+"</button></td></tr>"):$("#loopList").append("<tr><td>Boucle n°"+(t+1)+'</td><td></td><td>0</td><td><button id="record" value="'+t+'">'+recordIcon+'</button><a>note:<span contenteditable class="spanEditable"></span></a><button id="loopPlay" value="'+t+'">'+playIcon+'</button><a>note:<span contenteditable class="spanEditable"></span></a></td><td><button id="loopReset" value="'+t+'">'+trashIcon+"</button></td></tr>")})),chrome.storage.sync.get(["parameters"],(function(e){parameters=JSON.parse(e.parameters);var t="";parameters.forEach(e=>{var n="";for(let t=1;t<e.length;t++)n+="<td contenteditable>"+e[t]+"</td>";t+="<tr><td>"+icon+plus+minus+"</td>"+n+"</tr>"}),$("#parameters").html(t)})),$((function(){$("#parameters").sortable({axis:"y",containment:"parent",cancel:":input,button,[contenteditable]"})}))}function saveParameters(){var e=$("#parameters tr").get().map((function(e){return $(e).find("td").get().map((function(e){return $(e).text()}))}));allParameters=JSON.stringify(e),chrome.storage.sync.set({parameters:JSON.stringify(e)}),updateCss(),setAutocompleteParameters()}function analyseAll(){chrome.storage.sync.get(["parameters","css"],(function(e){var t=[],n=(new CSSParser).parse(e.css,!1,!1);n.cssRules.length>0&&n.cssRules.forEach(n=>{n.declarations.length>0&&n.declarations.forEach(o=>{var a=[];if(cssValue=o.valueText,count=o.valueText.split("[").length,count>1)for(let t=0;t<count-1;t++){template=cssValue.substring(cssValue.indexOf("[")+1,cssValue.indexOf("]")),cssValue=cssValue.replace("["+template+"]",""),JSON.parse(e.parameters).forEach(e=>{templateSplited=template.split(" "),e[1]==templateSplited[0]&&(""!=e[4]&&e[4].split(" ").forEach(t=>{var n={type:("","midi"),name:templateSplited[0],templateFull:template,eventType:"",eventName:"",options:"",array:templateSplited.length>1&&templateSplited[1].includes(";")?templateSplited[1].split(";"):"",min:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[0]:"",max:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[1]:""};t.includes(":")?(n.eventType=t.split(":")[0],n.eventName=t.split(":")[1]):(n.eventType=t,n.eventName=""),n.options=e[3],n.array=""==n.array?e[2].includes(";")?e[2].split(";"):"":n.array,n.min=""==n.min?e[2].includes(":")?e[2].split(":")[0]:0:n.min,n.max=""==n.max?e[2].includes(":")?e[2].split(":")[1]:1:n.max,a.push(n)}),""!=e[5]&&e[5].split(" ").forEach(t=>{var n={type:("","audio"),name:templateSplited[0],templateFull:template,eventType:"",eventName:"",options:"",array:templateSplited.length>1&&templateSplited[1].includes(";")?templateSplited[1].split(";"):"",min:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[0]:"",max:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[1]:""};t.includes(":")?(n.eventType=t.split(":")[0],n.eventName=t.split(":")[1]):(n.eventType=t,n.eventName=""),n.options=e[3],n.array=""==n.array?e[2].includes(";")?e[2].split(";"):"":n.array,n.min=""==n.min?e[2].includes(":")?e[2].split(":")[0]:0:n.min,n.max=""==n.max?e[2].includes(":")?e[2].split(":")[1]:1:n.max,a.push(n)}))})}else a.push({type:"pure",name:"",templateFull:"",eventType:"",eventName:"",options:"",array:"",min:"",max:""});t.push({element:n.mSelectorText,property:o.property,value:o.valueText,templates:a})})}),chrome.storage.sync.set({all:t})}))}function updateCss(){let e=editor.getValue();chrome.storage.sync.set({css:e}),analyseAll(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"update",data:!1})}))}$(document).on("input","#loopList span",(function(){spans=$("#loopList span"),chrome.storage.sync.get(["records"],(function(e){records=e.records,row=0;for(let e=0;e<4;e++)row=2*e,records.info[e].controllerPlayPause=spans[row].textContent,records.info[e].controllerRecord=spans[row+1].textContent;chrome.storage.sync.set({records:records})}))})),document.getElementById("parameters").addEventListener("input",(function(){saveParameters()}),!1),$("#onOff").on("click",(function(){activateButton=!activateButton,chrome.storage.sync.set({activate:activateButton},(function(){activateButton?$("#onOff").addClass("active"):$("#onOff").removeClass("active"),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.storage.sync.set({audioI:!1}),chrome.storage.sync.set({midiI:!1}),chrome.tabs.sendMessage(e[0].id,{type:"start",data:activateButton})}))}))})),$(".audioI").on("click",(function(){audioButton=!audioButton,chrome.storage.sync.set({audioI:audioButton},(function(){})),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"audio",data:audioButton})})),initUi()})),$(".midiI").on("click",(function(){midiButton=!midiButton,chrome.storage.sync.set({midiB:midiButton},(function(){})),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"midi",data:midiButton})})),initUi()})),$(document).on("click",".icon-tabler-plus",(function(){var e=$(this).parent().parent(),t=e.clone();e.after(t),saveParameters()})),$(document).on("click",".icon-tabler-minus",(function(){var e=$(this).parent().parent(),t=e.parent();e.remove(),saveParameters(),0==t.children().length&&t.append("<tr><td>"+icon+plus+minus+"</td><td contenteditable></td><td contenteditable></td><td contenteditable></td><td contenteditable></td><td contenteditable></td></tr>")}));var record=!1;function onMessage({type:e,data:t}){switch(console.log("onMessage",e,t),e){case"updateUi":initUi();break;case"midiEvent":if(dataMidi!=t){$("#midiEvent").text(t),$("#midiEvent").parent().animate({"background-color":"red"},"slow"),$("#midiEvent").parent().animate({"background-color":"transparent"},"slow");var n=$("[contenteditable]:focus"),o=$(n).index("#parameters tr:eq("+$(n).parent().index("#parameters tr")+") td");n.length>0&&4==o&&focused.text(focused.text()+" "+t),dataMidi=t}break;case"midiDevices":$("#midiDevices").text(t)}}$(document).on("click","#record",(function(){id=$(this).val(),(record=!record)?$("#record").html(stopIcon):$("#record").html(recordIcon),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"record",data:{bool:record,number:id}})}))})),$(document).on("click","#loopPlay",(function(){$(this).html().includes("player-play")?($(this).html(pauseIcon),chrome.storage.sync.set({loopPlay:!0})):($(this).html(playIcon),chrome.storage.sync.set({loopPlay:!1})),id=$(this).val(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"playLoop",data:id})}))})),$(document).on("click","#loopReset",(function(){id=$(this).val(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"resetLoop",data:id})}))})),$("#download").on("click",(function(){chrome.storage.sync.get(["parameters"],(function(e){const t=JSON.stringify([editor.getValue(),e.parameters]);let n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download","data.json"),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}))})),$("#upload").on("change",(function(){const e=this.files[0],t=new FileReader;t.onload=function(e){const t=e.target.result,n=JSON.parse(t);console.log(n),chrome.storage.sync.set({css:n[0]}),chrome.storage.sync.set({parameters:n[1]}),editor.setValue(n[0]),initUi()},t.readAsText(e),this.value=""})),chrome.runtime.onMessage.addListener(onMessage);var port=chrome.runtime.connect({name:"popup"});loadEditor(),initUi(),$(document).tooltip({container:"body",placement:"top left",trigger:"hover"}); +var activateButton,dataMidi,editor,langTools,allParameters,audioButton=!1,midiButton=!1,trashIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-trash" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<line x1="4" y1="7" x2="20" y2="7"></line>\n<line x1="10" y1="11" x2="10" y2="17"></line>\n<line x1="14" y1="11" x2="14" y2="17"></line>\n<path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>\n<path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>\n</svg>',recordIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-record" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<circle cx="12" cy="12" r="7"></circle>\n</svg>',stopIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-stop" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<rect x="5" y="5" width="14" height="14" rx="2"></rect>\n</svg>',pauseIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-pause" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<rect x="6" y="5" width="4" height="14" rx="1"></rect>\n<rect x="14" y="5" width="4" height="14" rx="1"></rect>\n</svg>',playIcon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-player-play" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">\n<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>\n<path d="M7 4v16l13 -8z"></path>\n</svg>',minus='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-minus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><circle cx="12" cy="12" r="9"></circle><line x1="9" y1="12" x2="15" y2="12"></line></svg>',plus='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><circle cx="12" cy="12" r="9"></circle><line x1="9" y1="12" x2="15" y2="12"></line><line x1="12" y1="9" x2="12" y2="15"></line></svg>',icon='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-grip-vertical" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <circle cx="9" cy="5" r="1"></circle> <circle cx="9" cy="12" r="1"></circle> <circle cx="9" cy="19" r="1"></circle> <circle cx="15" cy="5" r="1"></circle> <circle cx="15" cy="12" r="1"></circle> <circle cx="15" cy="19" r="1"></circle></svg>';function setAutocompleteParameters(){var e=[];chrome.storage.sync.get(["parameters"],(function(t){parameters=JSON.parse(t.parameters),parameters.forEach(t=>{e.push({value:"["+t[1]+"]",score:1,meta:t[3]+" "+t[4]})})}));const t={getCompletions:(t,n,o,a,i)=>{i(null,e)}};langTools.addCompleter(t)}function loadEditor(){(editor=ace.edit("editor")).setTheme("ace/theme/tomorrow_night_blue"),editor.session.setMode("ace/mode/css"),editor.getSession().setUseWorker(!1),langTools=ace.require("ace/ext/language_tools"),editor.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!0}),chrome.storage.sync.get(["css"],(function(e){editor.getSession().setValue(e.css)})),setAutocompleteParameters(),editor.getSession().on("change",(function(){updateCss()}))}function initUi(){chrome.storage.sync.get(["activate"],(function(e){(activateButton=e.activate)?$("#onOff").addClass("active"):$("#onOff").removeClass("active")})),chrome.storage.sync.get(["audioI"],(function(e){audioButton=e.audioI,e.audioI?$(".audioI").addClass("active"):$(".audioI").removeClass("active")})),chrome.storage.sync.get(["midiI"],(function(e){midiButton=e.midiI,e.midiI?$(".midiI").addClass("active"):$(".midiI").removeClass("active")})),chrome.storage.sync.get(["records"],(function(e){$("#loopList").text("");for(let t=0;t<e.records.loop.length;t++)e.records.loop[t].length>0?$("#loopList").append("<tr><td>Boucle n°"+(t+1)+"</td><td>"+e.records.loop[t][e.records.loop[t].length-1].time+"ms</td><td>"+e.records.loop[t].length+'</td><td><button id="record" value="'+t+'">'+(e.records.info[t].isRecording?stopIcon:recordIcon)+'</button><a>note:<span contenteditable class="spanEditable"></span></a><button id="loopPlay" value="'+t+'">'+(e.records.info[t].isLoop?pauseIcon:playIcon)+'</button><a>note:<span contenteditable class="spanEditable"></span></a></td><td><button id="loopReset" value="'+t+'">'+trashIcon+"</button></td></tr>"):$("#loopList").append("<tr><td>Boucle n°"+(t+1)+'</td><td></td><td>0</td><td><button id="record" value="'+t+'">'+recordIcon+'</button><a>note:<span contenteditable class="spanEditable"></span></a><button id="loopPlay" value="'+t+'">'+playIcon+'</button><a>note:<span contenteditable class="spanEditable"></span></a></td><td><button id="loopReset" value="'+t+'">'+trashIcon+"</button></td></tr>")})),chrome.storage.sync.get(["parameters"],(function(e){parameters=JSON.parse(e.parameters);var t="";parameters.forEach(e=>{var n="";for(let t=1;t<e.length;t++)n+="<td contenteditable>"+e[t]+"</td>";t+="<tr><td>"+icon+plus+minus+"</td>"+n+"</tr>"}),$("#parameters").html(t)})),$((function(){$("#parameters").sortable({axis:"y",containment:"parent",cancel:":input,button,[contenteditable]"})}))}function saveParameters(){var e=$("#parameters tr").get().map((function(e){return $(e).find("td").get().map((function(e){return $(e).text()}))}));allParameters=JSON.stringify(e),chrome.storage.sync.set({parameters:JSON.stringify(e)}),updateCss(),setAutocompleteParameters()}function analyseAll(){chrome.storage.sync.get(["parameters","css"],(function(e){var t=[],n=(new CSSParser).parse(e.css,!1,!1);n.cssRules.length>0&&n.cssRules.forEach(n=>{n.declarations.length>0&&n.declarations.forEach(o=>{var a=[];if(cssValue=o.valueText,count=o.valueText.split("[").length,count>1)for(let t=0;t<count-1;t++){template=cssValue.substring(cssValue.indexOf("[")+1,cssValue.indexOf("]")),cssValue=cssValue.replace("["+template+"]",""),JSON.parse(e.parameters).forEach(e=>{templateSplited=template.split(" "),e[1]==templateSplited[0]&&(""!=e[4]&&e[4].split(" ").forEach(t=>{var n={type:("","midi"),name:templateSplited[0],templateFull:template,eventType:"",eventName:"",options:"",array:templateSplited.length>1&&templateSplited[1].includes(";")?templateSplited[1].split(";"):"",min:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[0]:"",max:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[1]:""};t.includes(":")?(n.eventType=t.split(":")[0],n.eventName=t.split(":")[1]):(n.eventType=t,n.eventName=""),n.options=e[3],n.array=""==n.array?e[2].includes(";")?e[2].split(";"):"":n.array,n.min=""==n.min?e[2].includes(":")?e[2].split(":")[0]:0:n.min,n.max=""==n.max?e[2].includes(":")?e[2].split(":")[1]:1:n.max,a.push(n)}),""!=e[5]&&e[5].split(" ").forEach(t=>{var n={type:("","audio"),name:templateSplited[0],templateFull:template,eventType:"",eventName:"",options:"",array:templateSplited.length>1&&templateSplited[1].includes(";")?templateSplited[1].split(";"):"",min:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[0]:"",max:templateSplited.length>1&&templateSplited[1].includes(":")?templateSplited[1].split(":")[1]:""};t.includes(":")?(n.eventType=t.split(":")[0],n.eventName=t.split(":")[1]):(n.eventType=t,n.eventName=""),n.options=e[3],n.array=""==n.array?e[2].includes(";")?e[2].split(";"):"":n.array,n.min=""==n.min?e[2].includes(":")?e[2].split(":")[0]:0:n.min,n.max=""==n.max?e[2].includes(":")?e[2].split(":")[1]:1:n.max,a.push(n)}))})}else a.push({type:"pure",name:"",templateFull:"",eventType:"",eventName:"",options:"",array:"",min:"",max:""});t.push({element:n.mSelectorText,property:o.property,value:o.valueText,templates:a})})}),chrome.storage.sync.set({all:t})}))}function updateCss(){let e=editor.getValue();chrome.storage.sync.set({css:e}),analyseAll(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"update",data:!1})}))}$(document).on("input","#loopList span",(function(){spans=$("#loopList span"),chrome.storage.sync.get(["records"],(function(e){records=e.records,row=0;for(let e=0;e<4;e++)row=2*e,records.info[e].controllerPlayPause=spans[row].textContent,records.info[e].controllerRecord=spans[row+1].textContent;chrome.storage.sync.set({records:records})}))})),$(document).on("click","#doc",(function(){chrome.tabs.create({url:"/README.html"})})),document.getElementById("parameters").addEventListener("input",(function(){saveParameters()}),!1),$("#onOff").on("click",(function(){activateButton=!activateButton,chrome.storage.sync.set({activate:activateButton},(function(){activateButton?$("#onOff").addClass("active"):$("#onOff").removeClass("active"),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.storage.sync.set({audioI:!1}),chrome.storage.sync.set({midiI:!1}),chrome.tabs.sendMessage(e[0].id,{type:"start",data:activateButton})}))}))})),$(".audioI").on("click",(function(){audioButton=!audioButton,chrome.storage.sync.set({audioI:audioButton},(function(){})),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"audio",data:audioButton})})),initUi()})),$(".midiI").on("click",(function(){midiButton=!midiButton,chrome.storage.sync.set({midiB:midiButton},(function(){})),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"midi",data:midiButton})})),initUi()})),$(document).on("click",".icon-tabler-plus",(function(){var e=$(this).parent().parent(),t=e.clone();e.after(t),saveParameters()})),$(document).on("click",".icon-tabler-minus",(function(){var e=$(this).parent().parent(),t=e.parent();e.remove(),saveParameters(),0==t.children().length&&t.append("<tr><td>"+icon+plus+minus+"</td><td contenteditable></td><td contenteditable></td><td contenteditable></td><td contenteditable></td><td contenteditable></td></tr>")}));var record=!1;function onMessage({type:e,data:t}){switch(console.log("onMessage",e,t),e){case"updateUi":initUi();break;case"midiEvent":if(dataMidi!=t){$("#midiEvent").text(t),$("#midiEvent").parent().animate({"background-color":"red"},"slow"),$("#midiEvent").parent().animate({"background-color":"transparent"},"slow");var n=$("[contenteditable]:focus"),o=$(n).index("#parameters tr:eq("+$(n).parent().index("#parameters tr")+") td");n.length>0&&4==o&&focused.text(focused.text()+" "+t),dataMidi=t}break;case"midiDevices":$("#midiDevices").text(t)}}$(document).on("click","#record",(function(){id=$(this).val(),(record=!record)?$("#record").html(stopIcon):$("#record").html(recordIcon),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"record",data:{bool:record,number:id}})}))})),$(document).on("click","#loopPlay",(function(){$(this).html().includes("player-play")?($(this).html(pauseIcon),chrome.storage.sync.set({loopPlay:!0})):($(this).html(playIcon),chrome.storage.sync.set({loopPlay:!1})),id=$(this).val(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"playLoop",data:id})}))})),$(document).on("click","#loopReset",(function(){id=$(this).val(),chrome.tabs.query({active:!0,currentWindow:!0},(function(e){chrome.tabs.sendMessage(e[0].id,{type:"resetLoop",data:id})}))})),$("#download").on("click",(function(){chrome.storage.sync.get(["parameters"],(function(e){const t=JSON.stringify([editor.getValue(),e.parameters]);let n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download","data.json"),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}))})),$("#upload").on("change",(function(){const e=this.files[0],t=new FileReader;t.onload=function(e){const t=e.target.result,n=JSON.parse(t);console.log(n),chrome.storage.sync.set({css:n[0]}),chrome.storage.sync.set({parameters:n[1]}),editor.setValue(n[0]),initUi()},t.readAsText(e),this.value=""})),chrome.runtime.onMessage.addListener(onMessage);var port=chrome.runtime.connect({name:"popup"});loadEditor(),initUi(),$(document).tooltip({container:"body",placement:"top left",trigger:"hover"}); //# sourceMappingURL=main.min.js.map \ No newline at end of file diff --git a/main.min.js.map b/main.min.js.map index 1f77dfa3eaedabe091ba035658961425a19d1767..e7b3479676fd6fb7c87eaa00c5c20a748b5dc405 100644 --- a/main.min.js.map +++ b/main.min.js.map @@ -137,6 +137,8 @@ "controllerPlayPause", "textContent", "controllerRecord", + "create", + "url", "getElementById", "addEventListener", "midiB", @@ -189,6 +191,6 @@ "placement", "trigger" ], - "mappings": "AAAA,IAEIA,eACAC,SACAC,OACAC,UAsJAC,cA3JAC,aAAc,EACdC,YAAa,EAMbC,UAAY,gjBAQZC,WAAa,yVAIbC,SAAW,uWAIXC,UAAY,gaAKZC,SAAW,gVAIXC,MAAQ,uXACRC,KAAO,kaACPC,KAAO,whBAEX,SAASC,4BACR,IAAIC,EAAe,GACnBC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,eAAe,SAAUC,GACjDC,WAAaC,KAAKC,MAAMH,EAAOC,YAC/BA,WAAWG,QAAQC,IAClBV,EAAaW,KAAK,CAAEC,MAAO,IAAMF,EAAE,GAAK,IAAKG,MAAO,EAAGC,KAAMJ,EAAE,GAAK,IAAMA,EAAE,UAG9E,MAAMK,EAAc,CACnBC,eAAgB,CAAC9B,EAAQ+B,EAASC,EAAKC,EAAQC,KAC9CA,EAAS,KAAMpB,KAGjBb,UAAUkC,aAAaN,GAMxB,SAASO,cACRpC,OAASqC,IAAIC,KAAK,WACXC,SAAS,iCAChBvC,OAAO+B,QAAQS,QAAQ,gBACvBxC,OAAOyC,aAAaC,cAAa,GACjCzC,UAAYoC,IAAIM,QAAQ,0BACxB3C,OAAO4C,WAAW,CACjBC,2BAA2B,EAC3BC,gBAAgB,EAChBC,0BAA0B,IAE3BhC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,QAAQ,SAAUC,GAC1CnB,OAAOyC,aAAaO,SAAS7B,EAAO8B,QAErCpC,4BACAb,OAAOyC,aAAaS,GAAG,UAAU,WAChCC,eAWF,SAASC,SACRrC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,aAAa,SAAUC,IAC/CrB,eAAiBqB,EAAOkC,UAEvBC,EAAE,UAAUC,SAAS,UAErBD,EAAE,UAAUE,YAAY,aAG1BzC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,WAAW,SAAUC,GAC7ChB,YAAcgB,EAAOsC,OACjBtC,EAAOsC,OACVH,EAAE,WAAWC,SAAS,UAGtBD,EAAE,WAAWE,YAAY,aAG3BzC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,UAAU,SAAUC,GAC5Cf,WAAae,EAAOuC,MAChBvC,EAAOuC,MACVJ,EAAE,UAAUC,SAAS,UAGrBD,EAAE,UAAUE,YAAY,aAG1BzC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,YAAY,SAAUC,GAC9CmC,EAAE,aAAaK,KAAK,IACpB,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,EAAO0C,QAAQC,KAAKC,OAAQH,IAC3CzC,EAAO0C,QAAQC,KAAKF,GAAGG,OAAS,EACnCT,EAAE,aAAaU,OAAO,qBAAuBJ,EAAI,GAAK,YAAczC,EAAO0C,QAAQC,KAAKF,GAAGzC,EAAO0C,QAAQC,KAAKF,GAAGG,OAAS,GAAGE,KAAO,cAAgB9C,EAAO0C,QAAQC,KAAKF,GAAGG,OAAS,uCAAyCH,EAAI,MAAQzC,EAAO0C,QAAQK,KAAKN,GAAGO,YAAc5D,SAAWD,YAAc,uGAAyGsD,EAAI,MAAQzC,EAAO0C,QAAQK,KAAKN,GAAGQ,OAAS5D,UAAYC,UAAY,iHAAmHmD,EAAI,KAAOvD,UAAY,uBAG/lBiD,EAAE,aAAaU,OAAO,qBAAuBJ,EAAI,GAAK,0DAA4DA,EAAI,KAAOtD,WAAa,uGAAyGsD,EAAI,KAAOnD,SAAW,iHAAmHmD,EAAI,KAAOvD,UAAY,0BAItZU,OAAOC,QAAQC,KAAKC,IAAI,CAAC,eAAe,SAAUC,GACjDC,WAAaC,KAAKC,MAAMH,EAAOC,YAC/B,IAAIiD,EAAW,GACfjD,WAAWG,QAAQC,IAClB,IAAI8C,EAAU,GACd,IAAK,IAAIC,EAAQ,EAAGA,EAAQ/C,EAAEuC,OAAQQ,IACrCD,GAAW,uBAAyB9C,EAAE+C,GAAS,QAEhDF,GAAY,WAAazD,KAAOD,KAAOD,MAAQ,QAAU4D,EAAU,UAEpEhB,EAAE,eAAekB,KAAKH,MAEvBf,GAAE,WACDA,EAAE,eAAemB,SAAS,CAEzBC,KAAM,IACNC,YAAa,SACbC,OAAQ,uCAuBX,SAASC,iBACR,IAAIC,EAAMxB,EAAE,kBAAkBpC,MAAM6D,KAAI,SAAUC,GACjD,OAAO1B,EAAE0B,GAAKC,KAAK,MAAM/D,MAAM6D,KAAI,SAAUG,GAC5C,OAAO5B,EAAE4B,GAAMvB,aAGjBzD,cAAgBmB,KAAK8D,UAAUL,GAC/B/D,OAAOC,QAAQC,KAAKmE,IAAI,CAAEhE,WAAYC,KAAK8D,UAAUL,KACrD3B,YACAtC,4BAGD,SAASwE,aACRtE,OAAOC,QAAQC,KAAKC,IAAI,CAAC,aAAc,QAAQ,SAAUC,GACxD,IAAImE,EAAM,GAENC,GADS,IAAIC,WACElE,MAAMH,EAAO8B,KAAK,GAAO,GACxCsC,EAAME,SAAS1B,OAAS,GAC3BwB,EAAME,SAASlE,QAAQmE,IAClBA,EAAQC,aAAa5B,OAAS,GACjC2B,EAAQC,aAAapE,QAAQ0B,IAC5B,IAAI2C,EAAY,GAGhB,GAFAC,SAAW5C,EAAI6C,UACfC,MAAQ9C,EAAI6C,UAAUE,MAAM,KAAKjC,OAC7BgC,MAAQ,EACX,IAAK,IAAIxB,EAAQ,EAAGA,EAAQwB,MAAQ,EAAGxB,IAAS,CAC/C0B,SAAWJ,SAASK,UACnBL,SAASM,QAAQ,KAAO,EACxBN,SAASM,QAAQ,MAElBN,SAAWA,SAASO,QAAQ,IAAMH,SAAW,IAAK,IACjC5E,KAAKC,MAAMH,EAAOC,YACxBG,QAAQC,IAClB6E,gBAAkBJ,SAASD,MAAM,KAC7BxE,EAAE,IAAM6E,gBAAgB,KACf,IAAR7E,EAAE,IACLA,EAAE,GAAGwE,MAAM,KAAKzE,QAAQ+E,IACvB,IAAIC,EAAM,CACTC,MAAM,GAUI,QATVC,KAAMJ,gBAAgB,GACtBK,aAAcT,SACdU,UAAW,GACXC,UAAW,GACXC,QAAS,GACTC,MAAOT,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAa,GAC9GgB,IAAKX,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAK,GAAW,GAC/GiB,IAAKZ,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAK,GAAW,IAG5GM,EAAMS,SAAS,MAClBR,EAAII,UAAYL,EAAMN,MAAM,KAAK,GACjCO,EAAIK,UAAYN,EAAMN,MAAM,KAAK,KAGjCO,EAAII,UAAYL,EAChBC,EAAIK,UAAY,IAEjBL,EAAIM,QAAUrF,EAAE,GAChB+E,EAAIO,MAAuB,IAAbP,EAAIO,MAAgBtF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAO,GAAMO,EAAIO,MACnFP,EAAIS,IAAmB,IAAXT,EAAIS,IAAcxF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAK,GAAK,EAAKO,EAAIS,IACjFT,EAAIU,IAAmB,IAAXV,EAAIU,IAAczF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAK,GAAK,EAAKO,EAAIU,IACjFrB,EAAUnE,KAAK8E,KAGL,IAAR/E,EAAE,IACLA,EAAE,GAAGwE,MAAM,KAAKzE,QAAQ2F,IACvB,IAAIX,EAAM,CACTC,MAAM,GAUI,SATVC,KAAMJ,gBAAgB,GACtBK,aAAcT,SACdU,UAAW,GACXC,UAAW,GACXC,QAAS,GACTC,MAAOT,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAa,GAC9GgB,IAAKX,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAK,GAAW,GAC/GiB,IAAKZ,gBAAgBtC,OAAS,GAAKsC,gBAAgB,GAAGU,SAAS,KAAOV,gBAAgB,GAAGL,MAAM,KAAK,GAAW,IAG5GkB,EAAOH,SAAS,MACnBR,EAAII,UAAYO,EAAOlB,MAAM,KAAK,GAClCO,EAAIK,UAAYM,EAAOlB,MAAM,KAAK,KAGlCO,EAAII,UAAYO,EAChBX,EAAIK,UAAY,IAEjBL,EAAIM,QAAUrF,EAAE,GAChB+E,EAAIO,MAAuB,IAAbP,EAAIO,MAAgBtF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAO,GAAMO,EAAIO,MACnFP,EAAIS,IAAmB,IAAXT,EAAIS,IAAcxF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAK,GAAK,EAAKO,EAAIS,IACjFT,EAAIU,IAAmB,IAAXV,EAAIU,IAAczF,EAAE,GAAGuF,SAAS,KAAOvF,EAAE,GAAGwE,MAAM,KAAK,GAAK,EAAKO,EAAIU,IACjFrB,EAAUnE,KAAK8E,aAQpBX,EAAUnE,KAAK,CACd+E,KAAM,OACNC,KAAM,GACNC,aAAc,GACdC,UAAW,GACXC,UAAW,GACXC,QAAS,GACTC,MAAO,GACPE,IAAK,GACLC,IAAK,KAGP3B,EAAI7D,KAAK,CACRiE,QAASA,EAAQyB,cACjBC,SAAUnE,EAAImE,SACd1F,MAAOuB,EAAI6C,UACXF,UAAWA,QAMhB7E,OAAOC,QAAQC,KAAKmE,IAAI,CAAEE,IAAKA,OAQjC,SAASnC,YACR,IAAIkE,EAASrH,OAAOsH,WACpBvG,OAAOC,QAAQC,KAAKmE,IAAI,CAAEnC,IAAKoE,IAC/BhC,aACAtE,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,SAAUqB,MAAM,OAzJ/DvE,EAAEwE,UAAU5E,GAAG,QAAS,kBAAkB,WACzC6E,MAAQzE,EAAE,kBACVvC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,YAAY,SAAUC,GAC9C0C,QAAU1C,EAAO0C,QACjBmB,IAAM,EACN,IAAK,IAAIpB,EAAI,EAAGA,EAAI,EAAGA,IACtBoB,IAAU,EAAJpB,EACNC,QAAQK,KAAKN,GAAGoE,oBAAsBD,MAAM/C,KAAKiD,YACjDpE,QAAQK,KAAKN,GAAGsE,iBAAmBH,MAAM/C,IAAM,GAAGiD,YAEnDlH,OAAOC,QAAQC,KAAKmE,IAAI,CAAEvB,QAAWA,gBAKvCiE,SAASK,eAAe,cAAcC,iBAAiB,SAAS,WAC/DvD,oBACE,GAiJHvB,EAAE,UAAUJ,GAAG,SAAS,WACvBpD,gBAAkBA,eAClBiB,OAAOC,QAAQC,KAAKmE,IAAI,CAAE/B,SAAUvD,iBAAkB,WACjDA,eACHwD,EAAE,UAAUC,SAAS,UAErBD,EAAE,UAAUE,YAAY,UAEzBzC,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOC,QAAQC,KAAKmE,IAAI,CAAE3B,QAAQ,IAClC1C,OAAOC,QAAQC,KAAKmE,IAAI,CAAE1B,OAAO,IACjC3C,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,QAASqB,KAAM/H,0BAU/DwD,EAAE,WAAWJ,GAAG,SAAS,WACxB/C,aAAeA,YACfY,OAAOC,QAAQC,KAAKmE,IAAI,CAAE3B,OAAQtD,cAAe,eAEjDY,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,QAASqB,KAAM1H,iBAE7DiD,YAODE,EAAE,UAAUJ,GAAG,SAAS,WACvB9C,YAAcA,WACdW,OAAOC,QAAQC,KAAKmE,IAAI,CAAEiD,MAAOjI,aAAc,eAE/CW,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,OAAQqB,KAAMzH,gBAE5DgD,YAEDE,EAAEwE,UAAU5E,GAAG,QAAS,qBAAqB,WAE5C,IAAI8B,EAAM1B,EAAEgF,MAAMC,SAASA,SACvBC,EAASxD,EAAIyD,QAEjBzD,EAAI0D,MAAMF,GACV3D,oBAEDvB,EAAEwE,UAAU5E,GAAG,QAAS,sBAAsB,WAE7C,IAAI8B,EAAM1B,EAAEgF,MAAMC,SAASA,SACvBI,EAAQ3D,EAAIuD,SAChBvD,EAAI4D,SACJ/D,iBAE+B,GAA3B8D,EAAME,WAAW9E,QACpB4E,EAAM3E,OAAO,WAAapD,KAAOD,KAAOD,MAAQ,8IAOlD,IAAIoI,QAAS,EAkFZ,SAASC,WAAUvC,KAAEA,EAAIqB,KAAEA,IAE3B,OADAmB,QAAQC,IAAI,YAAazC,EAAMqB,GACvBrB,GACP,IAAK,WACJpD,SACA,MAED,IAAK,YACJ,GAAIrD,UAAY8H,EAAM,CACrBvE,EAAE,cAAcK,KAAKkE,GACrBvE,EAAE,cAAciF,SAASW,QAAQ,CAAEC,mBAAoB,OAAS,QAChE7F,EAAE,cAAciF,SAASW,QAAQ,CAAEC,mBAAoB,eAAiB,QACxE,IAAIC,EAAY9F,EAAE,2BACd+F,EAAa/F,EAAE8F,GAAW7E,MAAM,qBAAuBjB,EAAE8F,GAAWb,SAAShE,MAAM,kBAAoB,QACvG6E,EAAUrF,OAAS,GAAmB,GAAdsF,GAC3BC,QAAQ3F,KAAK2F,QAAQ3F,OAAS,IAAMkE,GAErC9H,SAAW8H,EAEZ,MAED,IAAK,cACJvE,EAAE,gBAAgBK,KAAKkE,IAvG1BvE,EAAEwE,UAAU5E,GAAG,QAAS,WAAW,WAClC0E,GAAKtE,EAAEgF,MAAMiB,OACbT,QAAUA,QAETxF,EAAE,WAAWkB,KAAKjE,UAGlB+C,EAAE,WAAWkB,KAAKlE,YAEnBS,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,SAAUqB,KAAM,CAAE2B,KAAMV,OAAQW,OAAQ7B,YAIvFtE,EAAEwE,UAAU5E,GAAG,QAAS,aAAa,WAChCI,EAAEgF,MAAM9D,OAAOuC,SAAS,gBAC3BzD,EAAEgF,MAAM9D,KAAKhE,WACbO,OAAOC,QAAQC,KAAKmE,IAAI,CAAEsE,UAAU,MAEpCpG,EAAEgF,MAAM9D,KAAK/D,UACbM,OAAOC,QAAQC,KAAKmE,IAAI,CAAEsE,UAAU,KAGrC9B,GAAKtE,EAAEgF,MAAMiB,MACbxI,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,WAAYqB,KAAMD,WAIjEtE,EAAEwE,UAAU5E,GAAG,QAAS,cAAc,WACrC0E,GAAKtE,EAAEgF,MAAMiB,MACbxI,OAAOwG,KAAKC,MAAM,CAAEC,QAAQ,EAAMC,eAAe,IAChD,SAAUH,GACTxG,OAAOwG,KAAKI,YAAYJ,EAAK,GAAGK,GAAI,CAAEpB,KAAM,YAAaqB,KAAMD,WAMlEtE,EAAE,aAAaJ,GAAG,SAAS,WAE1BnC,OAAOC,QAAQC,KAAKC,IAAI,CAAC,eAAe,SAAUC,GACjD,MAAMwI,EAAUtI,KAAK8D,UAAU,CAACnF,OAAOsH,WAAYnG,EAAOC,aAE1D,IAAIsE,EAAUoC,SAAS8B,cAAc,KACrClE,EAAQmE,aAAa,OAAQ,iCAAmCC,mBAAmBH,IACnFjE,EAAQmE,aAAa,WANL,aAQhBnE,EAAQqE,MAAMC,QAAU,OACxBlC,SAASmC,KAAKC,YAAYxE,GAE1BA,EAAQyE,QAERrC,SAASmC,KAAKG,YAAY1E,SAI5BpC,EAAE,WAAWJ,GAAG,UAAU,WACzB,MAAMmH,EAAO/B,KAAKgC,MAAM,GAClBC,EAAS,IAAIC,WACnBD,EAAOE,OAAS,SAAUC,GACzB,MAAMf,EAAUe,EAAEC,OAAOxJ,OACnByJ,EAAUvJ,KAAKC,MAAMqI,GAC3BX,QAAQC,IAAI2B,GACZ7J,OAAOC,QAAQC,KAAKmE,IAAI,CAAEnC,IAAK2H,EAAQ,KACvC7J,OAAOC,QAAQC,KAAKmE,IAAI,CAAEhE,WAAYwJ,EAAQ,KAC9C5K,OAAOgD,SAAS4H,EAAQ,IACxBxH,UAEDmH,EAAOM,WAAWR,GAClB/B,KAAK5G,MAAQ,MAsCdX,OAAO+J,QAAQ/B,UAAUgC,YAAYhC,WAErC,IAAIiC,KAAOjK,OAAO+J,QAAQG,QAAQ,CAAExE,KAAM,UAG1CrE,aAEAgB,SAEAE,EAAEwE,UAAUoD,QAAQ,CACnBC,UAAW,OACXC,UAAW,WACXC,QAAS", + "mappings": "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", "file": "main.js" } \ No newline at end of file diff --git a/popup.html b/popup.html index 1a1a75e7d14224af67cc2a1cada7ab8b5e22007a..281bbeccf9c1f4414d5a5712758bc58279262fe5 100644 --- a/popup.html +++ b/popup.html @@ -126,6 +126,7 @@ </tr> </table> </details> + <p style="text-align: center;">© 2022 - Universite de Lille - <a id="doc">Voir la documentation</a></p> <script src="cssParser.js" type="text/javascript" charset="utf-8"></script> <script src="ace/ace.js" type="text/javascript" charset="utf-8"></script> diff --git a/style.css b/style.css index faac5a2a06cb41c272d2feb16532907c549b44bd..6c33139a8c71650134cf129b99c83ca2391aecc9 100644 --- a/style.css +++ b/style.css @@ -251,3 +251,6 @@ td label { padding-left: 2px; padding-bottom: 2px; } +a#doc { + cursor: pointer; +} \ No newline at end of file