diff --git a/colorschemes/Makefile b/colorschemes/Makefile index cf3a25b..52b08a3 100644 --- a/colorschemes/Makefile +++ b/colorschemes/Makefile @@ -9,7 +9,7 @@ MAKEFLAGS += --no-builtin-rules .PHONY: all clean OUT_DIR := out -OUT_FILES := iterm.itermcolors kitty.conf vim.vim setvtrgb.txt zsh.zsh termux.properties variables.css prismjs-theme.css vscode-colorCustomizations.json xfce4-terminal.theme +OUT_FILES := iterm.itermcolors kitty.conf vim.vim setvtrgb.txt zsh.zsh termux.properties variables.css colorscheme.scss prismjs-theme.css vscode-colorCustomizations.json xfce4-terminal.theme all: $(OUT_DIR) $(addprefix $(OUT_DIR)/,$(OUT_FILES)) diff --git a/colorschemes/_theme.py b/colorschemes/_theme.py index 644f440..0fb8671 100644 --- a/colorschemes/_theme.py +++ b/colorschemes/_theme.py @@ -3,6 +3,7 @@ # base16-eighties by Chris Kempson (http://chriskempson.com) base16_name = "eighties" name = "base16-" + base16_name +is_dark = True base16_colors = [ "#2d2d2d", # 0 "#393939", # 1 diff --git a/colorschemes/colorscheme.scss.py b/colorschemes/colorscheme.scss.py new file mode 100755 index 0000000..9eff318 --- /dev/null +++ b/colorschemes/colorscheme.scss.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +# TODO: Prefix the name with an underscore when I rewrite the theme generator, +# see . + +import _theme as theme + + +print('$is-dark: {};'.format("true" if theme.is_dark else "false")) +for var_name, color in theme.css_variables.items(): + print("${}: {};".format(var_name, color)) +print("$base: ({});".format(', '.join(theme.base16_colors))) +print("$ansi: ({});".format(', '.join(theme.ansi_colors))) diff --git a/colorschemes/out/colorscheme.scss b/colorschemes/out/colorscheme.scss new file mode 100644 index 0000000..6ce8cd2 --- /dev/null +++ b/colorschemes/out/colorscheme.scss @@ -0,0 +1,25 @@ +$is-dark: true; +$bg: #2d2d2d; +$fg: #d3d0c8; +$selection-bg: #515151; +$selection-fg: #d3d0c8; +$cursor-bg: #d3d0c8; +$cursor-fg: #2d2d2d; +$base-00: #2d2d2d; +$base-01: #393939; +$base-02: #515151; +$base-03: #747369; +$base-04: #a09f93; +$base-05: #d3d0c8; +$base-06: #e8e6df; +$base-07: #f2f0ec; +$base-08: #f2777a; +$base-09: #f99157; +$base-0A: #ffcc66; +$base-0B: #99cc99; +$base-0C: #66cccc; +$base-0D: #6699cc; +$base-0E: #cc99cc; +$base-0F: #d27b53; +$base: (#2d2d2d, #393939, #515151, #747369, #a09f93, #d3d0c8, #e8e6df, #f2f0ec, #f2777a, #f99157, #ffcc66, #99cc99, #66cccc, #6699cc, #cc99cc, #d27b53); +$ansi: (#2d2d2d, #f2777a, #99cc99, #ffcc66, #6699cc, #cc99cc, #66cccc, #d3d0c8, #747369, #f2777a, #99cc99, #ffcc66, #6699cc, #cc99cc, #66cccc, #f2f0ec, #f99157, #d27b53, #393939, #515151, #a09f93, #e8e6df); diff --git a/colorschemes/out/prismjs-theme.css b/colorschemes/out/prismjs-theme.css index 5c2d831..010b18a 100644 --- a/colorschemes/out/prismjs-theme.css +++ b/colorschemes/out/prismjs-theme.css @@ -14,12 +14,8 @@ } .markdown-body pre::-moz-selection, -.markdown-body pre ::-moz-selection { - background-color: #515151; - color: #d3d0c8; -} - .markdown-body pre::selection, +.markdown-body pre ::-moz-selection, .markdown-body pre ::selection { background-color: #515151; color: #d3d0c8; diff --git a/colorschemes/prismjs-theme-src.css b/colorschemes/prismjs-theme-src.css index 4215cda..50733e4 100644 --- a/colorschemes/prismjs-theme-src.css +++ b/colorschemes/prismjs-theme-src.css @@ -14,12 +14,8 @@ } .markdown-body pre::-moz-selection, -.markdown-body pre ::-moz-selection { - background-color: var(--dotfiles-colorscheme-selection-bg); - color: var(--dotfiles-colorscheme-selection-fg); -} - .markdown-body pre::selection, +.markdown-body pre ::-moz-selection, .markdown-body pre ::selection { background-color: var(--dotfiles-colorscheme-selection-bg); color: var(--dotfiles-colorscheme-selection-fg); diff --git a/nvim/colors/dotfiles.vim b/nvim/colors/dotfiles.vim index 157fb63..ec50d72 100644 --- a/nvim/colors/dotfiles.vim +++ b/nvim/colors/dotfiles.vim @@ -293,6 +293,7 @@ hi! link scssSelectorName cssClassName hi! link scssSelectorChar cssClassnameDot hi! link scssAmpersand cssSelectorOp + hi! link scssProperty cssProp " }}} " JavaScript {{{ diff --git a/script-resources/markdown2htmldoc/github-markdown-additions.css b/script-resources/markdown2htmldoc/github-markdown-additions.css deleted file mode 100644 index 15b26fd..0000000 --- a/script-resources/markdown2htmldoc/github-markdown-additions.css +++ /dev/null @@ -1,11 +0,0 @@ -html, -body { - padding: 0; - margin: 0; -} - -.markdown-body { - max-width: 882px; - margin: 0 auto; - padding: 32px; -} diff --git a/script-resources/markdown2htmldoc/main.js b/script-resources/markdown2htmldoc/main.js index 8138353..312896e 100755 --- a/script-resources/markdown2htmldoc/main.js +++ b/script-resources/markdown2htmldoc/main.js @@ -33,8 +33,9 @@ parser.add_argument('--output-encoding', { help: '(utf-8 by default)', }); -parser.add_argument('--no-default-stylesheets', { - action: argparse.BooleanOptionalAction, +parser.add_argument('--theme', { + choices: ['dotfiles', 'github', 'none'], + default: 'dotfiles', }); parser.add_argument('--syntax-theme', { choices: [...PRISM_THEMES, 'none', 'dotfiles'], @@ -70,14 +71,14 @@ let renderedMarkdown = md.render(markdownDocument); let stylesheetsTexts = []; let scriptsTexts = []; -let syntaxThemeName = null; +let syntaxThemeName = 'dotfiles'; -if (!args.no_default_stylesheets) { - syntaxThemeName = 'dotfiles'; - stylesheetsTexts.push( - fs.readFileSync(require.resolve('github-markdown-css/github-markdown.css'), 'utf-8'), - fs.readFileSync(require.resolve('./github-markdown-additions.css'), 'utf-8'), - ); +if (args.theme === 'dotfiles') { + stylesheetsTexts.push(fs.readFileSync(require.resolve('./themes-out/my.css'), 'utf-8')); +} else if (args.theme === 'github') { + stylesheetsTexts.push(fs.readFileSync(require.resolve('./themes-out/github.css'), 'utf-8')); +} else { + syntaxThemeName = 'none'; } syntaxThemeName = args.syntax_theme || syntaxThemeName; diff --git a/script-resources/markdown2htmldoc/markdown-it-header-anchors.js b/script-resources/markdown2htmldoc/markdown-it-header-anchors.js index 80fa250..34e46bf 100644 --- a/script-resources/markdown2htmldoc/markdown-it-header-anchors.js +++ b/script-resources/markdown2htmldoc/markdown-it-header-anchors.js @@ -1,12 +1,21 @@ const GithubSlugger = require('github-slugger'); +const OCTICON_LINK_ICON_SVG = [ + // Basically copied from Github's HTML. Also see + // . I wonder what other + // attributes can be thrown out to make this image smaller? After all, it is + // duplicated for each and every heading. + '', +].join(''); + function markdownItHeaderAnchors(md) { let slugger = new GithubSlugger(); let defaultRender = md.renderer.rules.heading_open || - ((tokens, idx, options, _env, self) => - self.renderToken(tokens, idx, options)); + ((tokens, idx, options, _env, self) => self.renderToken(tokens, idx, options)); // eslint-disable-next-line camelcase md.renderer.rules.heading_open = (tokens, idx, opts, env, self) => { @@ -29,7 +38,7 @@ function markdownItHeaderAnchors(md) { if (innerText.length > 0) { let id = md.utils.escapeHtml(slugger.slug(innerText)); - renderedHeadingOpen += ``; + renderedHeadingOpen += ``; } return renderedHeadingOpen; diff --git a/script-resources/markdown2htmldoc/package.json b/script-resources/markdown2htmldoc/package.json index 60a265a..d85fba2 100644 --- a/script-resources/markdown2htmldoc/package.json +++ b/script-resources/markdown2htmldoc/package.json @@ -1,8 +1,12 @@ { "private": true, + "scripts": { + "theme:build": "sass --no-source-map --style=compressed themes-src/:themes-out/", + "theme:watch": "sass --no-source-map --style=compressed --watch themes-src/:themes-out/" + }, "dependencies": { "argparse": "^2.0.1", - "github-markdown-css": "^4.0.0", + "github-markdown-css": "*", "github-slugger": "^1.2.1", "markdown-it": "12.0.6", "markdown-it-emoji": "2.0.0", @@ -15,6 +19,8 @@ "eslint-config-prettier": "8.3.0", "eslint-plugin-node": "*", "eslint-plugin-prettier": "3.4.0", - "prettier": "2.2.1" + "normalize.css": "^8.0.1", + "prettier": "2.2.1", + "sass": "^1.33.0" } } diff --git a/script-resources/markdown2htmldoc/themes-out/github.css b/script-resources/markdown2htmldoc/themes-out/github.css new file mode 100644 index 0000000..a1648be --- /dev/null +++ b/script-resources/markdown2htmldoc/themes-out/github.css @@ -0,0 +1 @@ +.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{width:16px;height:16px;content:" ";display:inline-block;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' d='M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z'%3E%3C/path%3E%3C/svg%3E")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;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}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:initial}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:initial;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;appearance:none}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .border{border:1px solid #e1e4e8 !important}.markdown-body .border-0{border:0 !important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8 !important}.markdown-body .rounded-1{border-radius:3px !important}.markdown-body .bg-white{background-color:#fff !important}.markdown-body .bg-gray-light{background-color:#fafbfc !important}.markdown-body .text-gray-light{color:#6a737d !important}.markdown-body .mb-0{margin-bottom:0 !important}.markdown-body .my-2{margin-top:8px !important;margin-bottom:8px !important}.markdown-body .pl-0{padding-left:0 !important}.markdown-body .py-0{padding-top:0 !important;padding-bottom:0 !important}.markdown-body .pl-1{padding-left:4px !important}.markdown-body .pl-2{padding-left:8px !important}.markdown-body .py-2{padding-top:8px !important;padding-bottom:8px !important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px !important}.markdown-body .px-3{padding-right:16px !important}.markdown-body .pl-4{padding-left:24px !important}.markdown-body .pl-5{padding-left:32px !important}.markdown-body .pl-6{padding-left:40px !important}.markdown-body .f6{font-size:12px !important}.markdown-body .lh-condensed{line-height:1.25 !important}.markdown-body .text-bold{font-weight:600 !important}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .mb-0{margin-bottom:0 !important}.markdown-body .my-2{margin-bottom:8px !important}.markdown-body .my-2{margin-top:8px !important}.markdown-body .pl-0{padding-left:0 !important}.markdown-body .py-0{padding-top:0 !important;padding-bottom:0 !important}.markdown-body .pl-1{padding-left:4px !important}.markdown-body .pl-2{padding-left:8px !important}.markdown-body .py-2{padding-top:8px !important;padding-bottom:8px !important}.markdown-body .pl-3{padding-left:16px !important}.markdown-body .pl-4{padding-left:24px !important}.markdown-body .pl-5{padding-left:32px !important}.markdown-body .pl-6{padding-left:40px !important}.markdown-body .pl-7{padding-left:48px !important}.markdown-body .pl-8{padding-left:64px !important}.markdown-body .pl-9{padding-left:80px !important}.markdown-body .pl-10{padding-left:96px !important}.markdown-body .pl-11{padding-left:112px !important}.markdown-body .pl-12{padding-left:128px !important}.markdown-body hr{border-bottom-color:#eee}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0 !important}.markdown-body>:last-child{margin-bottom:0 !important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:initial;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27, 31, 35, 0.05);border-radius:3px}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:initial;border:0}.markdown-body .commit-tease-sha{display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:90%;color:#444d56}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body .blob-wrapper{overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:20px;color:rgba(27, 31, 35, 0.3);text-align:right;white-space:nowrap;vertical-align:top;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-body .blob-num:hover{color:rgba(27, 31, 35, 0.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{position:relative;padding-right:10px;padding-left:10px;line-height:20px;vertical-align:top}.markdown-body .blob-code-inner{overflow:visible;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;color:#24292e;word-wrap:normal;white-space:pre}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{cursor:pointer;background:#ffea7f}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}html,body{padding:0;margin:0}.markdown-body{box-sizing:border-box;min-width:200px;max-width:960px;margin:0 auto;padding:32px}@media(max-width: 767px){.markdown-body{padding:16px}} diff --git a/script-resources/markdown2htmldoc/themes-out/my.css b/script-resources/markdown2htmldoc/themes-out/my.css new file mode 100644 index 0000000..af9f8a5 --- /dev/null +++ b/script-resources/markdown2htmldoc/themes-out/my.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*{box-sizing:border-box}body{color:#d3d0c8;background-color:#2d2d2d;font-family:"Ubuntu",sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body::-moz-selection,body::selection,body ::-moz-selection,body ::selection{color:#d3d0c8;background-color:#515151}article{min-width:200px;max-width:960px;margin:0 auto;padding:32px}@media(max-width: 767px){article{padding:24px}}article::after,article::before{display:table;content:""}article::after{clear:both}article>:first-child{margin-block-start:0 !important}article>:last-child{margin-block-end:0 !important}.octicon{display:inline-block;overflow:visible !important;vertical-align:text-bottom;fill:currentColor}a{color:#69c;text-decoration:none}a:hover,a:focus,a:active{text-decoration:underline}a:not([href]){color:unset;text-decoration:none}hr{margin-block-start:1.5em;margin-block-end:1.5em;border:.2em solid #515151}hr::after,hr::before{display:table;content:""}hr::after{clear:both}dl,details,table,blockquote,ul,ol,pre,p{margin-block-start:1em;margin-block-end:1em}blockquote{margin-inline-start:0;margin-inline-end:0;padding-inline-start:1em;border-inline-start:.25em solid #515151}blockquote>:first-child{margin-block-start:0 !important}blockquote>:last-child{margin-block-end:0 !important}summary{cursor:pointer}img{max-width:100%;box-sizing:content-box;background-color:#393939}img[align=left],img[align=right]{margin:.5em 1.25em}img[align=left]{margin-left:0}img[align=right]{margin-right:0}ins,del{text-decoration:none}ins{color:#9c9}del{color:#f2777a}mark{background-color:#fc6;color:#2d2d2d}h1,h2,h3,h4,h5,h6{margin-block-start:1.5em;margin-block-end:1em;padding-block-end:.3em;border-block-end:1px solid #515151;font-weight:600;line-height:1.25}h1 .anchor,h2 .anchor,h3 .anchor,h4 .anchor,h5 .anchor,h6 .anchor{float:left;padding-right:4px;margin-left:-20px;color:unset}h1 .anchor:hover,h2 .anchor:hover,h3 .anchor:hover,h4 .anchor:hover,h5 .anchor:hover,h6 .anchor:hover{text-decoration:none}h1 .anchor:focus,h2 .anchor:focus,h3 .anchor:focus,h4 .anchor:focus,h5 .anchor:focus,h6 .anchor:focus{outline:none}h1 .anchor>*,h2 .anchor>*,h3 .anchor>*,h4 .anchor>*,h5 .anchor>*,h6 .anchor>*{visibility:hidden;vertical-align:middle}h1:hover .anchor>*,h2:hover .anchor>*,h3:hover .anchor>*,h4:hover .anchor>*,h5:hover .anchor>*,h6:hover .anchor>*{visibility:visible}h1{font-size:2em}h2{font-size:1.5em}h3{font-size:1.25em}h4{font-size:1em}h5{font-size:.875em}h6{font-size:.85em}code,kbd,samp,pre{font-family:"Ubuntu Mono",monospace}code{padding-block-start:.2em;padding-block-end:.2em;padding-inline-start:.3em;padding-inline-end:.3em;background-color:rgba(116,115,105,.2);border-radius:4px}pre{padding:1em;overflow:auto;color:#d3d0c8;background-color:#2d2d2d;border:1px solid #515151;border-radius:4px;line-height:1.3;word-wrap:normal}pre code{padding:unset;background-color:unset;border:unset}kbd{display:inline-block;padding-block-start:.2em;padding-block-end:.2em;padding-inline-start:.3em;padding-inline-end:.3em;vertical-align:bottom;font:0.75em/0.8333333333 Ubuntu Mono, monospace;color:#d3d0c8;background-color:#1a1a1a;border:.1em solid #0d0d0d;border-bottom-width:.4em;border-radius:4px}table{display:block;width:100%;overflow:auto;border-spacing:0;border-collapse:collapse;width:max-content;max-width:100%}th{font-weight:600}td,th{padding-block-start:.4em;padding-block-end:.4em;padding-inline-start:.75em;padding-inline-end:.75em;border:1px solid #515151}tr:nth-child(2n){background-color:rgba(81,81,81,.1)}ol,ul{padding-inline-start:2em}ol ol,ol ul,ul ol,ul ul{margin-block-start:0;margin-block-end:0}li{margin-block-start:.25em;margin-block-end:.25em}dt{margin-block-start:1em;font-weight:600;font-style:italic}dd{margin-block-end:1em;margin-inline-start:1em}ul>li.task-list-item{list-style-type:none}ul>li.task-list-item input[type=checkbox]:first-child{margin:0 .2em .25em -1.6em;vertical-align:middle} diff --git a/script-resources/markdown2htmldoc/themes-src/github.scss b/script-resources/markdown2htmldoc/themes-src/github.scss new file mode 100644 index 0000000..d62cf79 --- /dev/null +++ b/script-resources/markdown2htmldoc/themes-src/github.scss @@ -0,0 +1,24 @@ +// See also: +// <-- Nice. +// +// +// + +@use '../node_modules/github-markdown-css/github-markdown.css'; + +html, +body { + padding: 0; + margin: 0; +} + +.markdown-body { + box-sizing: border-box; + min-width: 200px; + max-width: 960px; + margin: 0 auto; + padding: 32px; + @media (max-width: 768px - 1px) { + padding: 16px; + } +} diff --git a/script-resources/markdown2htmldoc/themes-src/my.scss b/script-resources/markdown2htmldoc/themes-src/my.scss new file mode 100644 index 0000000..45be05f --- /dev/null +++ b/script-resources/markdown2htmldoc/themes-src/my.scss @@ -0,0 +1,472 @@ +// My GLORIOUS theme for rendered Markdown documents (But may come in handy for +// other projects? Who knows!). Integrated with my colorscheme generators, best +// paired with my very own syntax highlighting theme. Based on +// sindresorhus/github-markdown-css[1] and primer/css[2]. By the way, here[3] +// is the first ever public version of the Markdown styles. Also, GitLab's +// stylesheet can be found here[4], it supports way more syntactical features. +// +// [1]: +// [2]: +// [3]: +// [4]: +// +// User-Agent stylesheets (): +// Firefox: +// Chromium: +// +// NOTE: This stylesheet makes heavy use of the +// {margin,padding,border}-{inline,block}-{start,end} rules (apparently they +// are called CSS Logical Properties[5]), for two reasons: +// +// 1. Judging by MDN this might give us not only easy RTL support, but possibly +// even support for vertical text directions. +// +// 2. UA stylesheets also rely on those, so overrides of those end up being +// more explicit and are shown in the devtools correctly. +// +// 3. However, they have pretty bad cross-browser support at the moment, so TODO: remove. +// +// [5]: + +@use 'sass:math'; +@use 'sass:color'; + +// NOTE: GitHub uses an ancient version of normalize.css: +// +@use '../node_modules/normalize.css/normalize.css'; + +@use '../../../colorschemes/out/colorscheme.scss'; + +//////////////////////////////////////////////////////////////////////////////// +// CONFIGURATION CONSTANTS AND FUNCTIONS +//////////////////////////////////////////////////////////////////////////////// + +// +$font-default: 'Ubuntu', sans-serif; +$font-monospace: 'Ubuntu Mono', monospace; +// https://github.com/primer/css/blob/63764f7edd59c5f4949c91e5373471aa8b0d4865/src/support/variables/typography.scss#L29-L32 +$line-height-headings: 1.25; +$line-height-code-blocks: 1.3; +$line-height-default: 1.5; +// +$font-size-default: 16px; + +// +$border-radius: 4px; +@function border($width: 1px, $style: solid, $color: colorscheme.$base-02) { + @return $width $style $color; +} + +$paragraph-spacing: 1em; + +//////////////////////////////////////////////////////////////////////////////// +// MIXINS AND FUNCTIONS +//////////////////////////////////////////////////////////////////////////////// + +@mixin clearfix { + &::after, + &::before { + display: table; + content: ''; + } + &::after { + clear: both; + } +} + +@mixin cancel-out-child-margins { + & > :first-child { + margin-block-start: 0 !important; + } + & > :last-child { + margin-block-end: 0 !important; + } +} + +// prettier-ignore +@mixin margin-block($margin) { margin-block-start: $margin; margin-block-end: $margin; } +// prettier-ignore +@mixin margin-inline($margin) { margin-inline-start: $margin; margin-inline-end: $margin; } +// prettier-ignore +@mixin padding-block($padding) { padding-block-start: $padding; padding-block-end: $padding; } +// prettier-ignore +@mixin padding-inline($padding) { padding-inline-start: $padding; padding-inline-end: $padding; } + +//////////////////////////////////////////////////////////////////////////////// +// BASE STYLES +// +// +//////////////////////////////////////////////////////////////////////////////// + +// +* { + box-sizing: border-box; +} + +// +// +body { + color: colorscheme.$fg; + background-color: colorscheme.$bg; + font-family: $font-default; + font-size: $font-size-default; + line-height: $line-height-default; + word-wrap: break-word; + + $tab-size: 4; + -moz-tab-size: $tab-size; + -o-tab-size: $tab-size; + tab-size: $tab-size; + + &::-moz-selection, + &::selection, + & ::-moz-selection, + & ::selection { + color: colorscheme.$selection-fg; + background-color: colorscheme.$selection-bg; + } +} + +// Also called `.markdown-body` by GitHub. +article { + min-width: 200px; + max-width: 960px; + margin: 0 auto; + padding: 32px; + @media (max-width: 768px - 1px) { + padding: 24px; + } + + @include clearfix(); + @include cancel-out-child-margins(); +} + +// +// +.octicon { + display: inline-block; + overflow: visible !important; // Not sure about this. + vertical-align: text-bottom; + fill: currentColor; +} + +// +a { + color: colorscheme.$base-0D; + text-decoration: none; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + + // + &:not([href]) { + color: unset; + text-decoration: none; + } +} + +// +// +hr { + @include margin-block($paragraph-spacing * 1.5); + border: border($width: 0.2em); + @include clearfix(); +} + +// Set up paragraph margins for paragraphs themselves and other elements that +// will appear at the top level. +// +dl, +details, +table, +blockquote, +ul, +ol, +pre, +p { + @include margin-block($paragraph-spacing); +} + +// +blockquote { + @include margin-inline(0); + padding-inline-start: 1em; + border-inline-start: border($width: 0.25em); + @include cancel-out-child-margins(); +} + +// +summary { + cursor: pointer; +} + +// +img { + max-width: 100%; + // Fixes manually specified widths for images. + box-sizing: content-box; + background-color: colorscheme.$base-01; + + &[align='left'], + &[align='right'] { + margin: 0.5em 1.25em; + } + + &[align='left'] { + margin-left: 0; + } + + &[align='right'] { + margin-right: 0; + } +} + +ins, +del { + text-decoration: none; +} + +ins { + color: colorscheme.$base-0B; +} + +del { + color: colorscheme.$base-08; +} + +mark { + background-color: colorscheme.$base-0A; + color: colorscheme.$bg; +} + +//////////////////////////////////////////////////////////////////////////////// +// HEADINGS +// +//////////////////////////////////////////////////////////////////////////////// + +// +h1, +h2, +h3, +h4, +h5, +h6 { + margin-block-start: $paragraph-spacing * 1.5; + margin-block-end: $paragraph-spacing * 1; + padding-block-end: 0.3em; + border-block-end: border(); + // Make the headers less bold, the default font-weight is 700. + font-weight: 600; + line-height: $line-height-headings; + + // + .anchor { + float: left; + $size: 16px; + $offset: 4px; + padding-right: $offset; + margin-left: -($size + $offset); + + // Undo the default styles for links. + color: unset; + &:hover { + text-decoration: none; + } + &:focus { + outline: none; + } + + > * { + visibility: hidden; + vertical-align: middle; + } + } + + &:hover .anchor { + > * { + visibility: visible; + } + } +} + +h1 { + font-size: 2em; +} + +h2 { + font-size: 1.5em; +} + +h3 { + font-size: 1.25em; +} + +h4 { + font-size: 1em; +} + +h5 { + font-size: 0.875em; +} + +h6 { + font-size: 0.85em; +} + +//////////////////////////////////////////////////////////////////////////////// +// CODE +// +// +//////////////////////////////////////////////////////////////////////////////// + +code, +kbd, +samp, +pre { + font-family: $font-monospace; +} + +// Inline code snippets. +code { + @include padding-block(0.2em); + @include padding-inline(0.3em); + background-color: rgba(colorscheme.$base-03, 0.2); + border-radius: $border-radius; +} + +// Code blocks. +pre { + padding: 1em; + overflow: auto; + color: colorscheme.$fg; + background-color: colorscheme.$bg; + border: border(); + border-radius: $border-radius; + line-height: $line-height-code-blocks; + word-wrap: normal; + + // Undo the highlighting of inline snippets. + code { + padding: unset; + background-color: unset; + border: unset; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// KEYBOARD SHORTCUTS +// +//////////////////////////////////////////////////////////////////////////////// + +kbd { + display: inline-block; + @include padding-block(0.2em); + @include padding-inline(0.3em); + vertical-align: bottom; + + // The original stylesheet specifies both font-size and line-height in + // pixels, but I want to do the same in relative units instead, so + // recalculating everything proportionally. + $orig-font-size: /* 11px */ 12px; + $orig-line-height: 10px; + $rel-font-size: math.div($orig-font-size, 16px) * 1em; + $rel-line-height: math.div($orig-line-height, $orig-font-size); + // This rule implicitly resets all inherited font-related properties. + font: #{$rel-font-size}/#{$rel-line-height} #{$font-monospace}; + + $kbd-bg-color: if(colorscheme.$is-dark, colorscheme.$bg, colorscheme.$fg); + $kbd-fg-color: if(colorscheme.$is-dark, colorscheme.$fg, colorscheme.$bg); + + color: $kbd-fg-color; + background-color: color.change($kbd-bg-color, $lightness: 10%); + border: border($width: 0.1em, $color: color.change($kbd-bg-color, $lightness: 5%)); + border-bottom-width: 0.4em; + border-radius: $border-radius; +} + +//////////////////////////////////////////////////////////////////////////////// +// TABLES +// +//////////////////////////////////////////////////////////////////////////////// + +// +table { + display: block; + width: 100%; + overflow: auto; + // + border-spacing: 0; + border-collapse: collapse; + + // For browsers with support for `max-content`. Not sure what this pair of + // rules does differently from just `width: 100%`. + width: max-content; + max-width: 100%; +} + +th { + font-weight: 600; +} + +td, +th { + @include padding-block(0.4em); + @include padding-inline(0.75em); + border: border(); +} + +tr:nth-child(2n) { + background-color: rgba(colorscheme.$base-02, 0.1); +} + +//////////////////////////////////////////////////////////////////////////////// +// LISTS +// +//////////////////////////////////////////////////////////////////////////////// + +// +ol, +ul { + padding-inline-start: 2em; + + // Disable the "paragraph" margins for nested lists. + // + & & { + @include margin-block(0); + } +} + +// +li { + @include margin-block($paragraph-spacing * 0.25); +} + +// +dt { + margin-block-start: $paragraph-spacing; + font-weight: 600; + font-style: italic; +} + +// +dd { + margin-block-end: $paragraph-spacing; + margin-inline-start: 1em; +} + +// Apparently not available in Primer? Had to copy from the extracted +// production stylesheets. +// +// +ul > li.task-list-item { + list-style-type: none; + input[type='checkbox']:first-child { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; + } +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/script-resources/markdown2htmldoc/yarn.lock b/script-resources/markdown2htmldoc/yarn.lock index 04554e2..1ef4184 100644 --- a/script-resources/markdown2htmldoc/yarn.lock +++ b/script-resources/markdown2htmldoc/yarn.lock @@ -92,6 +92,14 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +anymatch@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -114,6 +122,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -122,6 +135,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -144,6 +164,21 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +"chokidar@>=3.0.0 <4.0.0": + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + clipboard@^2.0.0: version "2.0.8" resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.8.tgz#ffc6c103dd2967a83005f3f61976aa4655a4cdba" @@ -416,6 +451,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -434,6 +476,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -444,7 +491,7 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -github-markdown-css@^4.0.0: +github-markdown-css@*: version "4.0.0" resolved "https://registry.yarnpkg.com/github-markdown-css/-/github-markdown-css-4.0.0.tgz#be9f4caf7a389228d4c368336260ffc909061f35" integrity sha512-mH0bcIKv4XAN0mQVokfTdKo2OD5K8WJE9+lbMdM32/q0Ie5tXgVN/2o+zvToRMxSTUuiTRcLg5hzkFfOyBYreg== @@ -456,7 +503,7 @@ github-slugger@^1.2.1: dependencies: emoji-regex ">=6.0.0 <=6.1.1" -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -549,6 +596,13 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-core-module@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" @@ -566,13 +620,18 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -686,6 +745,16 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" + integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -727,6 +796,11 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -761,6 +835,13 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -791,6 +872,13 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +sass@^1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.33.0.tgz#a26186902ee56585b9db6751fd151237f561dbc2" + integrity sha512-9v0MUXnSi62FtfjqcwZ+b8B9FIxdwFEb3FPUkjEPXWd0b5KcnPGSp2XF9WrzcH1ZxedfgJVTdA3A1j4eEj53xg== + dependencies: + chokidar ">=3.0.0 <4.0.0" + select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" @@ -891,6 +979,13 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"