From f65382b12a3323bb8d1bdd9095fee90bb3d9ea4f Mon Sep 17 00:00:00 2001 From: Sivan Date: Tue, 11 Feb 2020 20:47:29 +0800 Subject: [PATCH 001/127] Aloha --- .editorconfig | 14 + .gitignore | 21 + .stylelintrc | 11 + README.md | 40 + index.scss | 8 + lib/_base.scss | 89 + lib/_font.scss | 57 + lib/_heading.scss | 65 + lib/_helper-block.scss | 59 + lib/_helper-inline.scss | 47 + lib/_inline.scss | 173 ++ lib/_list.scss | 55 + lib/_modifier-font.scss | 78 + lib/_modifier-layout.scss | 79 + lib/_table.scss | 30 + lib/_variables.scss | 108 + lib/heti.scss | 41 + package-lock.json | 4074 +++++++++++++++++++++++++++++++++++++ package.json | 36 + 19 files changed, 5085 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .stylelintrc create mode 100644 README.md create mode 100644 index.scss create mode 100644 lib/_base.scss create mode 100644 lib/_font.scss create mode 100644 lib/_heading.scss create mode 100644 lib/_helper-block.scss create mode 100644 lib/_helper-inline.scss create mode 100644 lib/_inline.scss create mode 100644 lib/_list.scss create mode 100644 lib/_modifier-font.scss create mode 100644 lib/_modifier-layout.scss create mode 100644 lib/_table.scss create mode 100644 lib/_variables.scss create mode 100644 lib/heti.scss create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6fe2c74 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig from https://github.com/sivan/dotfiles +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +indent_size = 4 +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38ac529 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Editor generate files +.idea/ +.settings/ + +# Dev dependencies and cache files +dist/ +node_modules/ +npm-debug.log + +# Folder view configuration files +.DS_Store +Desktop.ini + +# Thumbnail cache files +*~ +._* +Thumbs.db + +# Files that might appear on external disks +.Spotlight-V100 +.Trashes diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..7a54241 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,11 @@ +{ + "extends": ["stylelint-config-standard", "stylelint-config-recommended-scss"], + "rules": { + "no-descending-specificity": [ + true, + { + "ignore": ["selectors-within-list"] + } + ] + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f0fba7 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# 赫蹏 + +赫蹏(hètí)是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来,可以为网站的读者带来更好的文章阅读体验。 + +主要特性: +- 全标签样式统一; +- 贴合网格的排版; +- 内置多种预设字体族(仅限桌面端); +- 支持横排、竖排两种排版; +- 支持诗词、行间注版式; +- 兼容 *normalize.css*、**CSS Reset** 等大部分重置样式; +- 移动端支持; +- …… + +## 使用方法 + +1. 在页面的 `` 标签中引入 `heti.css` 文件: + ``` + + ``` +1. 在要作用的容器元素上增加 `class="heti"` 的类名即可:。 + ``` +
+

我的世界观

+

有钱人的生活就是这么朴实无华,且枯燥

+ …… +
+ ``` + + +## WIP + +- [ ] 繁体中文支持 +- [ ] 中、西文混排 +- [ ] 标点挤压 +- [ ] 标点悬挂 +- [x] 诗词版式 +- [x] 行间注版式 + +-- EOF -- diff --git a/index.scss b/index.scss new file mode 100644 index 0000000..284b8d0 --- /dev/null +++ b/index.scss @@ -0,0 +1,8 @@ +/*! + * Project: Heti + * URL: https://github.com/sivan/heti + * Author: Sivan [sun.sivan@gmail.com] + * Date: 2020-01-22 00:00 + */ + +@import './lib/heti'; diff --git a/lib/_base.scss b/lib/_base.scss new file mode 100644 index 0000000..502ae13 --- /dev/null +++ b/lib/_base.scss @@ -0,0 +1,89 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: base reset and entry styles. + */ +@import "variables"; + +@mixin hetiBase { + // 清容器浮动 + @include clear-float(); + + // 清容器内首尾元素外边距 + &, + section, + td { + > *:first-child { + margin-block-start: 0 !important; + } + + > *:last-child { + margin-block-end: 0 !important; + } + } + + // 定义块级元素样式 + blockquote { + margin-block-start: $std-block-unit / 2; + margin-block-end: $std-block-unit; + margin-inline-start: $std-inline-unit * 2; + margin-inline-end: $std-inline-unit * 2; + padding-block-start: $std-block-unit / 2; + padding-block-end: $std-block-unit / 2; + padding-inline-start: $std-inline-unit; + padding-inline-end: $std-inline-unit; + background-color: rgba(0, 0, 0, 0.054); + //border-radius: 4px; + } + + figure { + display: block; + text-align: center; + + > img { + display: block; + margin-inline-start: auto; + margin-inline-end: auto; + } + } + + hr { + width: 30%; + height: 1px; + margin-block-start: $std-block-unit * 2; + margin-block-end: $std-block-unit * 2 - 1px; + margin-inline-start: auto; + margin-inline-end: auto; + border: 0; + background-color: #ddd; + } + + p { + margin-block-start: $std-block-unit / 2; + margin-block-end: $std-block-unit; + text-align: justify; + + @include non-cjk-block { + text-align: left; + } + + //+ pre { + // margin-block-start: -$std-block-unit / 2; + //} + } + + pre { + margin-block-start: $std-block-unit / 2; + margin-block-end: $std-block-unit / 2; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block-start: $std-block-unit / 2; + padding-block-end: $std-block-unit / 2; + padding-inline-start: $std-inline-unit; + padding-inline-end: $std-inline-unit; + overflow: auto; + white-space: pre; + word-wrap: normal; + background-color: rgba(0, 0, 0, 0.054); + border-radius: 4px; + } +} diff --git a/lib/_font.scss b/lib/_font.scss new file mode 100644 index 0000000..af70ef3 --- /dev/null +++ b/lib/_font.scss @@ -0,0 +1,57 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define font-face. + */ +@import "variables"; + +// 黑体 +@font-face { + font-family: "Heti-Hei"; + src: local("PingFang SC Light"), local("Heiti SC Light"), local("STXihei"); + font-weight: 200; +} + +@font-face { + font-family: "Heti-Hei"; + src: local("Pingfang SC Regular"), local("Heiti SC Medium"), local(STHeiti); + font-weight: 400; +} + +@font-face { + font-family: "Heti-Hei"; + src: local("PingFang SC Medium"), local("Heiti SC Light"); + font-weight: 600; +} + +@font-face { + font-family: "Heti-Hei"; + src: local("Pingfang SC Semibold"), local("Heiti SC Light"); + font-weight: 800; +} + +// 宋体 + +// 楷体 +@font-face { + font-family: "Heti-Kai"; + src: local("Kaiti SC Regular"), local("Heiti SC Light"); + font-weight: 200; +} + +@font-face { + font-family: "Heti-Kai"; + src: local("Kaiti SC Regular"), local(STKaiti); + font-weight: 400; +} + +@font-face { + font-family: "Heti-Kai"; + src: local("Kaiti SC Bold"), local(STKaiti); + font-weight: 600; +} + +@font-face { + font-family: "Heti-Kai"; + src: local("Kaiti SC Black"), local(STKaiti); + font-weight: 800; +} diff --git a/lib/_heading.scss b/lib/_heading.scss new file mode 100644 index 0000000..4462bd1 --- /dev/null +++ b/lib/_heading.scss @@ -0,0 +1,65 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: heading styles. + */ +@import "variables"; + +@mixin hetiHeading { + h1, + h2, + h3, + h4, + h5, + h6 { + position: relative; + + // 顶边距默认为一行间距,且不因边距重叠原因减半 + // 底边距考虑到亲密性,默认为半行间距 + margin-block-start: $std-block-unit; + margin-block-end: $std-block-unit / 2; + font-weight: $font-weight-bold; + } + + h1 { + margin-block-end: $std-block-unit; + font-size: $font-size-h1; + line-height: $line-height-size-h1; + letter-spacing: $font-size-h1 * 0.05; + } + + h2 { + font-size: $font-size-h2; + line-height: $line-height-size-h2; + letter-spacing: $font-size-h2 * 0.05; + } + + h3 { + font-size: $font-size-h3; + line-height: $line-height-size-h3; + letter-spacing: $font-size-h3 * 0.05; + } + + h4 { + font-size: $font-size-h4; + line-height: $line-height-size-h4; + } + + h5 { + font-size: $font-size-h5; + line-height: $line-height-size-h5; + } + + h6 { + font-size: $font-size-h6; + line-height: $line-height-size-h6; + } + + // 压缩两个标题之间的间距 + h1 + h2, + h2 + h3, + h3 + h4, + h4 + h5, + h5 + h6 { + margin-block-start: $std-block-unit / 2; + } +} diff --git a/lib/_helper-block.scss b/lib/_helper-block.scss new file mode 100644 index 0000000..5f8e482 --- /dev/null +++ b/lib/_helper-block.scss @@ -0,0 +1,59 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define block helper classes. + */ +@import "variables"; + +@mixin hetiBlockHelperClasses { + // 定义拉丁字母的有序列表 + #{$root-selector}-list-latin { + list-style-type: upper-latin; + + ol { + list-style-type: lower-roman; + + ol { + list-style-type: lower-latin; + } + } + } + + // 定义中文序号的有序列表 + #{$root-selector}-list-han { + list-style-type: cjk-ideographic; + + ol { + list-style-type: decimal; + + ol { + list-style-type: decimal-leading-zero; + } + } + } + + // 定义多栏布局 + @each $columns in (2, 3, 4) { + #{$root-selector}-columns-#{$columns} { + // 多行时不再设总宽度限制 + max-width: none; + column-count: #{$columns}; + column-gap: 2em; + } + } + + @each $column-width in (16em, 20em, 24em, 28em, 32em, 36em, 40em, 44em, 48em) { + #{$root-selector}-columns-#{$column-width} { + // 多行时不再设总宽度限制 + max-width: none; + column-width: #{$column-width}; + column-gap: 2em; + } + } + + // 元信息、诗节居中显示 + #{$root-selector}-meta { + line-height: $line-height-size-normal; + text-align: center; + text-indent: 0; + } +} diff --git a/lib/_helper-inline.scss b/lib/_helper-inline.scss new file mode 100644 index 0000000..e7403ab --- /dev/null +++ b/lib/_helper-inline.scss @@ -0,0 +1,47 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define inline helper classes. + */ +@import "variables"; + +@mixin hetiInlineHelperClasses { + // 标题内锚点 + #{$root-selector}-anchor { + position: absolute; + left: -1em; + width: 1em; + font-family: $font-family-hei; + font-weight: 400; + line-height: inherit; + text-align: center; + opacity: 0; + transition: opacity 0.2s linear; + + &:hover { + text-decoration: none; + border-block-end: 0; + } + + @at-root { + #{$root-selector} { + h1, + h2, + h3, + h4, + h5, + h6 { + position: relative; + + &:hover #{$root-selector}-anchor { + opacity: 1; + } + } + } + } + } + + // @todo: 用于标点悬挂用的样式 + #{$root-selector}-hang { + @include hang(); + } +} diff --git a/lib/_inline.scss b/lib/_inline.scss new file mode 100644 index 0000000..2fc1ad2 --- /dev/null +++ b/lib/_inline.scss @@ -0,0 +1,173 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: inline element styles. + */ +@import "variables"; + +@mixin hetiInline { + a { + text-decoration: none; + + &:hover { + padding-block-end: 1px; + border-block-end: 1px solid currentColor; + text-decoration: none; + } + } + + abbr[title] { + padding-block-end: 1px; + border-block-end: 1px dotted; + text-decoration: none; + cursor: help; + } + + b, + strong { + font-weight: $font-weight-bold; + } + + code { + font-family: $font-family-mono; + font-size: $font-size-small; + } + + dfn { + font-weight: $font-weight-bold; + + // 非中文时显示斜体 + @include non-cjk-block { + font-weight: $font-weight-normal; + } + } + + em { + font-weight: $font-weight-bold; + } + + // 标题单行时居中,多行时居左 + figcaption { + display: inline-block; + vertical-align: top; + font-size: $font-size-small; + text-align: start; + } + + // 显式斜体标签予以保留 + i { + font-style: italic; + } + + ins, + u { + padding-block-end: 1px; + border-block-end: 1px solid; + text-decoration: none; + } + + mark { + padding-block-start: 2px; + padding-block-end: 2px; + padding-inline-start: 1px; + padding-inline-end: 1px; + margin-inline-start: 1px; + margin-inline-end: 1px; + background-color: rgba(255, 247, 0, 0.88); + } + + // 设置引用文本为中文引号 + q { + quotes: "「" "」" "『" "』"; + + @include non-cjk-block { + quotes: initial; + quotes: auto; + } + } + + rt { + font-size: 0.875em; + color: rgba(0, 0, 0, 0.88); + } + + // 完美 字号 by Sivan + /// 12px * 0.875 => 11px + /// 14px * 0.875 => 12px + /// 16px * 0.875 => 14px + /// 18px * 0.875 => 16px + /// 20px * 0.875 => 18px + small { + font-size: 0.875em; + } + + strong { + font-weight: $font-weight-bold; + } + + sub, + sup { + position: relative; + margin-inline-start: 0.25em; + margin-inline-end: 0.25em; + font-size: 0.75em; + line-height: 1; + vertical-align: baseline; + } + + sub { + bottom: -0.25em; + } + + sup { + top: -0.5em; + } + + summary { + padding-left: 1em; + outline: 0; + cursor: pointer; + } + + summary::-webkit-details-marker { + width: 0.6em; + margin-inline-end: 0.4em; + } + + u[title] { + cursor: help; + border-block-end-color: rgba(0, 0, 0, 0.54); + border-block-end-width: 3px; + border-block-end-style: double; + } + + // 默认禁用中文斜体 https://www.zhihu.com/question/20120243 + address, + cite, + dfn, + dt, + em { + font-style: normal; + + // 非中文时显示斜体 + @include non-cjk-block { + font-style: italic; + } + } + + //b, + //cite, + //dfn, + //em, + //strong { + // margin-inline-start: 1px; + // margin-inline-end: 1px; + //} + + // 带边框的元素,两个相连时添加间距,以防止视觉上混为一个元素 + // @todo: 此处有一个问题:如果结构是 倚天屠龙,「屠龙」前面仍然会有边距。此处跟预期不一致,应该只在两个同名元素紧邻时增加边距,即:倚天剑屠龙刀 + //@each $tag in (abbr, del, ins, s, u) { + // #{$tag} + #{$tag} { + // margin-inline-start: 0.125em; + // } + //} +} diff --git a/lib/_list.scss b/lib/_list.scss new file mode 100644 index 0000000..82a4174 --- /dev/null +++ b/lib/_list.scss @@ -0,0 +1,55 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: list styles. + */ +@import "variables"; + +@mixin hetiList { + // 标准化间距 + ul, + ol, + dl { + margin-block-start: $line-height-size-normal / 2; + margin-block-end: $line-height-size-normal; + } + + ul, + ol { + padding-inline-start: $text-indent-length; + + ul, + ol { + margin-block-start: 0; + margin-block-end: 0; + } + } + + // 重置部分 CSS Reset 中 ul, ol { list-style: none; } 造成的样式污染 + // 如果搭配 normalize.css 使用,则不存在这些样式污染 + @if $_css-reset-scheme == "reset" { + ul { + list-style-type: disc; + } + + ol { + list-style-type: decimal; + } + + ul ul, + ol ul { + list-style-type: circle; + } + + ul ul ul, + ul ol ul, + ol ul ul, + ol ol ul { + list-style-type: square; + } + + // 重置不知道哪里散播出来的垃圾代码 ul, li { list-style: none; } + li { + list-style-type: unset; + } + } +} diff --git a/lib/_modifier-font.scss b/lib/_modifier-font.scss new file mode 100644 index 0000000..2bddb9a --- /dev/null +++ b/lib/_modifier-font.scss @@ -0,0 +1,78 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define font stack classes. + */ +@import "variables"; + +@mixin hetiFontModifier { + // 定义无衬线字体为黑体 + &-sans { + font-family: $font-family-hei; + } + + // 定义衬线字体为宋体 + &-serif { + font-family: $font-family-song; + } + + // 定义传统字体 + &-classic { + font-family: $font-family-song; + + // 标题使用 800 字重 + h1, + h2, + h3, + h4, + h5, + h6 { + font-weight: $font-weight-bolder; + } + + // 标题、引用使用楷体 + h1, + h2, + h3, + h4, + h5, + h6, + blockquote, + cite, + q { + font-family: $font-family-kai; + } + + // 说明文字、角标、表头使用黑体 + figcaption, + caption, + sup, + sub, + th { + font-family: $font-family-hei; + } + } + + // 定义超大号字 + &-x-large { + font-size: $font-size-x-large; + line-height: $line-height-size-x-large; + } + + // 定义大号字 + &-large { + font-size: $font-size-large; + line-height: $line-height-size-large; + } + + // 定义小号字 + &-small { + font-size: $font-size-small; + line-height: $line-height-size-small; + } + + // 定义超小号字 + &-x-small { + font-size: $font-size-x-small; + line-height: $line-height-size-x-small; + } +} diff --git a/lib/_modifier-layout.scss b/lib/_modifier-layout.scss new file mode 100644 index 0000000..c58a135 --- /dev/null +++ b/lib/_modifier-layout.scss @@ -0,0 +1,79 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define vertical layout classes. + */ +@import "variables"; + +@mixin hetiLayoutModifier { + // 定义垂直布局 + &-vertical { + max-width: none; + max-height: $line-length; + writing-mode: vertical-rl; + letter-spacing: 0.125em; + } + + // 定义古文、诗词样式 + &-poetry, + &-ancient { + font-family: $font-family-song; + + h1, + h2, + h3 { + font-family: $font-family-song; + font-weight: $font-weight-bolder; + text-align: center; + + // 标题内元信息,不应占据空间影响标题文字居中 + #{$root-selector}-meta { + display: block; + font-weight: 400; + + @media screen and (min-width: 640px) { + @include hang(); + + display: inline; + margin-block-start: 4px; + margin-inline-start: 8px; + } + } + } + + #{$root-selector}-verse { + text-align: center; + text-indent: 0; + } + + // 古文(文言文、词)默认首行缩进 + p { + text-indent: $text-indent-length; + } + } + + // 定义行间注样式 + // @todo: 类名太长了,得简化一下 + &-interlinear-annotation { + // 首行缩进且行间距大,无需添加段落边距 + p { + margin-block-start: 0; + margin-block-end: 0; + line-height: $line-height-expanded-ultra; + text-indent: $text-indent-length; + } + + // 着重号不应影响行间距,经测试最小可用行高为 1.7 + em { + -webkit-text-emphasis: filled circle; + -webkit-text-emphasis-position: under; + font-weight: $font-weight-normal; + + @include non-cjk-block { + -webkit-text-emphasis: none; + } + } + + // ruby 不应影响行间距,经测试最小可用行高为 2 + //ruby {} + } +} diff --git a/lib/_table.scss b/lib/_table.scss new file mode 100644 index 0000000..eb2f7f8 --- /dev/null +++ b/lib/_table.scss @@ -0,0 +1,30 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: 表格样式 + */ +@import "variables"; + +@mixin hetiTable { + table { + box-sizing: border-box; + table-layout: fixed; + border-collapse: collapse; + border: 1px solid #ccc; + margin-block-start: $std-block-unit / 2; + margin-block-end: $std-block-unit; + margin-inline-start: auto; + margin-inline-end: auto; + } + + th, + td { + border: 1px solid #ccc; + padding: 8px 16px; + } + + caption { + caption-side: bottom; + font-size: $font-size-small; + line-height: $line-height-size-small; + } +} diff --git a/lib/_variables.scss b/lib/_variables.scss new file mode 100644 index 0000000..0e40d06 --- /dev/null +++ b/lib/_variables.scss @@ -0,0 +1,108 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ + +// 定义赫蹏根 class 名 +$root-selector: '.heti' !default; + +// 字体 Fonts +/// 字体栈 Font Stacks +$_font-stack-hei: "Pingfang SC", "Pingfang TC", "Heiti SC", "Heiti TC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei" !default; +$_font-stack-song: 'Noto Serif','Noto Serif CJK SC', 'Noto Serif CJK', 'Source Han Serif SC', ‘Source Han Serif’, source-han-serif-sc, "Songti SC", "Songti TC", STSong, SimSun !default; +$_font-stack-kai: "Kaiti SC", STKaiti !default; +$_font-stack-sans: "Helvetica Neue", Helvetica, Arial !default; +$_font-stack-serif: "Times New Roman", Times !default; +$_font-stack-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier !default; +$_font-stack-symbol: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; + +/// 字体族 Font Families +$font-family-hei: $_font-stack-sans, $_font-stack-hei, sans-serif, $_font-stack-symbol !default; +$font-family-song: $_font-stack-serif, $_font-stack-song, serif, $_font-stack-symbol !default; +$font-family-kai: $_font-stack-serif, $_font-stack-kai, serif, $_font-stack-symbol !default; +$font-family-mono: $_font-stack-mono, monospace, $_font-stack-symbol !default; + +/// 字重 Font Weights +$font-weight-bolder: 800 !default; +$font-weight-bold: 600 !default; +$font-weight-normal: 400 !default; +$font-weight-lighter: 200 !default; + +/// 字号 Font Sizes +$font-size-normal: 16px !default; +$font-size-x-large: 20px !default; +$font-size-large: 18px !default; +$font-size-small: 14px !default; +$font-size-x-small: 12px !default; + +$font-size-h1: 32px !default; +$font-size-h2: 24px !default; +$font-size-h3: 20px !default; +$font-size-h4: 18px !default; +$font-size-h5: 16px !default; +$font-size-h6: 14px !default; + +// 行宽 +$line-length: 42em !default; + +// 行高 Line Heights +$line-height-normal: 1.5 !default; +//$line-height-expanded: 1.875 !default; +$line-height-expanded-ultra: 2.25 !default; +//$line-height-condensed: 1.25 !default; +//$line-height-condensed-ultra: 1 !default; + +$line-height-size-normal: $font-size-normal * $line-height-normal !default; +$line-height-size-large: $line-height-size-normal !default; +$line-height-size-x-large: $font-size-x-large * $line-height-normal !default; +$line-height-size-small: $line-height-size-normal !default; +$line-height-size-x-small: 18px !default; +$line-height-size-h1: 48px !default; +$line-height-size-h2: 36px !default; +$line-height-size-h3: 36px !default; +$line-height-size-h4: 24px !default; +$line-height-size-h5: 24px !default; +$line-height-size-h6: 24px !default; + +// 标准网格单位变量 Standard Length +// 垂直方向标准单位 = 标准行高 +// 水平方向标准单位 = 标准字号 +$std-block-unit: $line-height-size-normal !default; +$std-inline-unit: $font-size-normal !default; + +// 示例:缩进单位 = 二倍文字宽度 +$text-indent-length: 2em !default; + +// 开发用配置项 Develop Configs + +/// 预设重置方案 "reset" | "normalize" +/// reset:假定 Eric Meyer 的 CSS Reset 或其它流行的 Reset +/// normalize:指定为 normalize.css +$_css-reset-scheme: "reset"; + +// Mix-in: Clear float +@mixin clear-float { + &::before, + &::after { + content: ""; + display: table; + } + + &::after { + clear: both; + } +} + +// Mix-in: Include Non-cjk styles +@mixin non-cjk-block { + &:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), + &:not(:lang(zh)) { + @content; + } +} + +// Mix-in: Hang Punctuation Mark +@mixin hang { + position: absolute; + line-height: inherit; +} diff --git a/lib/heti.scss b/lib/heti.scss new file mode 100644 index 0000000..06b9b16 --- /dev/null +++ b/lib/heti.scss @@ -0,0 +1,41 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + */ +@import "variables"; +@import "base"; +@import "heading"; +@import "list"; +@import "table"; +@import "inline"; +@import "modifier-layout"; +@import "modifier-font"; +@import "helper-block"; +@import "helper-inline"; + +#{$root-selector} { + // 中文每行展示文字(CPL)建议在 30~50 之间,默认 42 + max-width: $line-length; + + // 默认字体大小为 16px,行高 1.5 + font-size: $font-size-normal; + font-weight: $font-weight-normal; + line-height: $line-height-normal; + + // 自动在中西文间加 1/4 空格(暂无浏览器支持) + //text-spacing: ideograph-alpha; + + // 引入各模块 + @include hetiBase(); + @include hetiHeading(); + @include hetiList(); + @include hetiTable(); + @include hetiInline(); + + // 定义所有状态样式(与 .heti 并列使用) + @include hetiLayoutModifier(); + @include hetiFontModifier(); + + // 定义所有内嵌样式(仅在 .heti 内使用有效) + @include hetiBlockHelperClasses(); + @include hetiInlineHelperClasses(); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a93d5ee --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4074 @@ +{ + "name": "heti", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", + "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", + "integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", + "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==", + "dev": true + }, + "@babel/runtime": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", + "integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", + "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/node": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.8.tgz", + "integrity": "sha512-6XzyyNM9EKQW4HKuzbo/CkOIjn/evtCmsU+MUM1xDfJ+3/rNjBttM1NgN7AOQvN6tP1Sl1D1PIKMreTArnxM9A==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", + "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", + "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", + "dev": true, + "requires": { + "vfile-message": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "bail": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", + "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.5.tgz", + "integrity": "sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001022", + "electron-to-chromium": "^1.3.338", + "node-releases": "^1.1.46" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.1.tgz", + "integrity": "sha512-kEPCddRFChEzO0d6w61yh0WbBiSv9gBnfZWGfXRYPlGqIdIGef6HMR6pgqVSEWCYkrp8B0AtEpEXNY+Jx0xk1A==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001022", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001022.tgz", + "integrity": "sha512-FjwPPtt/I07KyLPkBQ0g7/XuZg6oUkYBVnPHNj3VHJbOjmmJ/GdSo/GUY6MwINEQvjhP6WZVbX8Tvms8xh0D5A==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "ccount": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", + "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", + "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", + "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", + "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", + "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", + "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.3.339", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.339.tgz", + "integrity": "sha512-C1i/vH6/kQx9YV8RddMkmW216GwW4pTrnYIlKmDFIqXA4fPwqDxIdGyHsuG+fgurHoljRz7/oaD+tztcryW/9g==", + "dev": true + }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", + "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A=", + "dev": true, + "requires": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gh-pages": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", + "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "globule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", + "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", + "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", + "dev": true, + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", + "dev": true, + "requires": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", + "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", + "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-decimal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", + "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", + "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", + "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", + "dev": true + }, + "is-word-character": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", + "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "known-css-properties": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.17.0.tgz", + "integrity": "sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isregexp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz", + "integrity": "sha1-4T5kezDNVZdSoEzZEghvr32hwws=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "longest-streak": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", + "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, + "markdown-escapes": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", + "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, + "mathml-tag-names": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", + "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", + "dev": true + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "meow": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.0.0.tgz", + "integrity": "sha512-x4rYsjigPBDAxY+BGuK83YLhUIqui5wYyZoqb6QJCUOs+0fiYq+i/NV4Jt8OgIfObZFxG9iTyvLDu4UTohGTFw==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.1.1", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.0.0", + "minimist-options": "^4.0.1", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.0", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.8.1", + "yargs-parser": "^16.1.0" + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minimist-options": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", + "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", + "integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "node-sass": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", + "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "postcss": { + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", + "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", + "dev": true, + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", + "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "dev": true, + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-sass": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.2.tgz", + "integrity": "sha512-hcRgnd91OQ6Ot9R90PE/khUDCJHG8Uxxd3F7Y0+9VHjBiJgNv7sK5FxyHMCBtoLmmkzVbSj3M3OlqUfLJpq0CQ==", + "dev": true, + "requires": { + "gonzales-pe": "^4.2.4", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", + "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "readable-stream": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", + "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "dev": true, + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", + "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "state-toggle": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", + "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylelint": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.0.0.tgz", + "integrity": "sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg==", + "dev": true, + "requires": { + "autoprefixer": "^9.7.3", + "balanced-match": "^1.0.0", + "chalk": "^3.0.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "execall": "^2.0.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.0", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.17.0", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "log-symbols": "^3.0.0", + "mathml-tag-names": "^2.1.1", + "meow": "^6.0.0", + "micromatch": "^4.0.2", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.26", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.3", + "postcss-less": "^3.1.4", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.1", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.1", + "postcss-sass": "^0.4.2", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.0.2", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.4.6", + "v8-compile-cache": "^2.1.0", + "write-file-atomic": "^3.0.1" + } + }, + "stylelint-config-recommended": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", + "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "dev": true + }, + "stylelint-config-recommended-scss": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.1.0.tgz", + "integrity": "sha512-4012ca0weVi92epm3RRBRZcRJIyl5vJjJ/tJAKng+Qat5+cnmuCwyOI2vXkKdjNfGd0gvzyKCKEkvTMDcbtd7Q==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0" + } + }, + "stylelint-config-standard": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-19.0.0.tgz", + "integrity": "sha512-VvcODsL1PryzpYteWZo2YaA5vU/pWfjqBpOvmeA8iB2MteZ/ZhI1O4hnrWMidsS4vmEJpKtjdhLdfGJmmZm6Cg==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0" + } + }, + "stylelint-scss": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.13.0.tgz", + "integrity": "sha512-SaLnvQyndaPcsgVJsMh6zJ1uKVzkRZJx+Wg/stzoB1mTBdEmGketbHrGbMQNymzH/0mJ06zDSpeCDvNxqIJE5A==", + "dev": true, + "requires": { + "lodash.isboolean": "^3.0.3", + "lodash.isregexp": "^4.0.1", + "lodash.isstring": "^4.0.1", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "trim-trailing-lines": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", + "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", + "dev": true + }, + "trough": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", + "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unherit": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", + "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz", + "integrity": "sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", + "dev": true + }, + "vfile-message": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.2.tgz", + "integrity": "sha512-gNV2Y2fDvDOOqq8bEe7cF3DXU6QgV4uA9zMR2P8tix11l1r7zju3zry3wZ8sx+BEfuO6WQ7z2QzfWTvqHQiwsA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", + "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", + "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..fe735b0 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "heti", + "version": "0.1.0", + "description": "赫蹏", + "main": "index.scss", + "directories": { + "lib": "lib" + }, + "scripts": { + "start": "node-sass -w --output-style=compressed index.scss dist/heti.css", + "build": "node-sass index.scss dist/heti.css --output-style=compressed", + "deploy": "gh-pages -d dist", + "test": "npx stylelint --config .stylelintrc 'lib/**/*.scss'" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sivan/heti.git" + }, + "keywords": [ + "typography" + ], + "author": "Sivan ", + "license": "MIT", + "bugs": { + "url": "https://github.com/sivan/heti/issues" + }, + "homepage": "https://github.com/sivan/heti#readme", + "devDependencies": { + "gh-pages": "^2.2.0", + "node-sass": "^4.13.1", + "stylelint": "^13.0.0", + "stylelint-config-recommended-scss": "^4.1.0", + "stylelint-config-standard": "^19.0.0", + "stylelint-scss": "^3.13.0" + } +} From 5d0323c90e139d2c59f87945f52b5d6f7bb8194a Mon Sep 17 00:00:00 2001 From: Sivan Date: Tue, 11 Feb 2020 20:48:49 +0800 Subject: [PATCH 002/127] Updates --- heti.css | 6 + index.css | 251 +++++++++++++++++++++++++++ index.html | 467 ++++++++++++++++++++++++++++++++++++++++++++++++++ normalize.css | 349 +++++++++++++++++++++++++++++++++++++ 4 files changed, 1073 insertions(+) create mode 100644 heti.css create mode 100644 index.css create mode 100644 index.html create mode 100644 normalize.css diff --git a/heti.css b/heti.css new file mode 100644 index 0000000..5ec3b5e --- /dev/null +++ b/heti.css @@ -0,0 +1,6 @@ +/*! + * Project: Heti + * URL: https://github.com/sivan/heti + * Author: Sivan [sun.sivan@gmail.com] + * Date: 2020-01-22 00:00 + */.heti{max-width:42em;font-size:16px;font-weight:400;line-height:1.5}.heti::before,.heti::after{content:"";display:table}.heti::after{clear:both}.heti>*:first-child,.heti section>*:first-child,.heti td>*:first-child{margin-block-start:0 !important}.heti>*:last-child,.heti section>*:last-child,.heti td>*:last-child{margin-block-end:0 !important}.heti blockquote{margin-block-start:12px;margin-block-end:24px;margin-inline-start:32px;margin-inline-end:32px;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;background-color:rgba(0,0,0,0.054)}.heti figure{display:block;text-align:center}.heti figure>img{display:block;margin-inline-start:auto;margin-inline-end:auto}.heti hr{width:30%;height:1px;margin-block-start:48px;margin-block-end:47px;margin-inline-start:auto;margin-inline-end:auto;border:0;background-color:#ddd}.heti p{margin-block-start:12px;margin-block-end:24px;text-align:justify}.heti p:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti p:not(:lang(zh)){text-align:left}.heti pre{margin-block-start:12px;margin-block-end:12px;margin-inline-start:0;margin-inline-end:0;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;overflow:auto;white-space:pre;word-wrap:normal;background-color:rgba(0,0,0,0.054);border-radius:4px}.heti h1,.heti h2,.heti h3,.heti h4,.heti h5,.heti h6{position:relative;margin-block-start:24px;margin-block-end:12px;font-weight:600}.heti h1{margin-block-end:24px;font-size:32px;line-height:48px;letter-spacing:1.6px}.heti h2{font-size:24px;line-height:36px;letter-spacing:1.2px}.heti h3{font-size:20px;line-height:36px;letter-spacing:1px}.heti h4{font-size:18px;line-height:24px}.heti h5{font-size:16px;line-height:24px}.heti h6{font-size:14px;line-height:24px}.heti h1+h2,.heti h2+h3,.heti h3+h4,.heti h4+h5,.heti h5+h6{margin-block-start:12px}.heti ul,.heti ol,.heti dl{margin-block-start:12px;margin-block-end:24px}.heti ul,.heti ol{padding-inline-start:2em}.heti ul ul,.heti ul ol,.heti ol ul,.heti ol ol{margin-block-start:0;margin-block-end:0}.heti ul{list-style-type:disc}.heti ol{list-style-type:decimal}.heti ul ul,.heti ol ul{list-style-type:circle}.heti ul ul ul,.heti ul ol ul,.heti ol ul ul,.heti ol ol ul{list-style-type:square}.heti li{list-style-type:unset}.heti table{box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border:1px solid #ccc;margin-block-start:12px;margin-block-end:24px;margin-inline-start:auto;margin-inline-end:auto}.heti th,.heti td{border:1px solid #ccc;padding:8px 16px}.heti caption{caption-side:bottom;font-size:14px;line-height:24px}.heti a{text-decoration:none}.heti a:hover{padding-block-end:1px;border-block-end:1px solid currentColor;text-decoration:none}.heti abbr[title]{padding-block-end:1px;border-block-end:1px dotted;text-decoration:none;cursor:help}.heti b,.heti strong{font-weight:600}.heti code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:14px}.heti dfn{font-weight:600}.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dfn:not(:lang(zh)){font-weight:400}.heti em{font-weight:600}.heti figcaption{display:inline-block;vertical-align:top;font-size:14px;text-align:start}.heti i{font-style:italic}.heti ins,.heti u{padding-block-end:1px;border-block-end:1px solid;text-decoration:none}.heti mark{padding-block-start:2px;padding-block-end:2px;padding-inline-start:1px;padding-inline-end:1px;margin-inline-start:1px;margin-inline-end:1px;background-color:rgba(255,247,0,0.88)}.heti q{quotes:"「" "」" "『" "』"}.heti q:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti q:not(:lang(zh)){quotes:initial;quotes:auto}.heti rt{font-size:0.875em;color:rgba(0,0,0,0.88)}.heti small{font-size:0.875em}.heti strong{font-weight:600}.heti sub,.heti sup{position:relative;margin-inline-start:0.25em;margin-inline-end:0.25em;font-size:0.75em;line-height:1;vertical-align:baseline}.heti sub{bottom:-0.25em}.heti sup{top:-0.5em}.heti summary{padding-left:1em;outline:0;cursor:pointer}.heti summary::-webkit-details-marker{width:0.6em;margin-inline-end:0.4em}.heti u[title]{cursor:help;border-block-end-color:rgba(0,0,0,0.54);border-block-end-width:3px;border-block-end-style:double}.heti address,.heti cite,.heti dfn,.heti dt,.heti em{font-style:normal}.heti address:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti address:not(:lang(zh)),.heti cite:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti cite:not(:lang(zh)),.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dfn:not(:lang(zh)),.heti dt:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dt:not(:lang(zh)),.heti em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti em:not(:lang(zh)){font-style:italic}.heti-vertical{max-width:none;max-height:42em;writing-mode:vertical-rl;letter-spacing:0.125em}.heti-poetry,.heti-ancient{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-poetry h1,.heti-poetry h2,.heti-poetry h3,.heti-ancient h1,.heti-ancient h2,.heti-ancient h3{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:800;text-align:center}.heti-poetry h1 .heti-meta,.heti-poetry h2 .heti-meta,.heti-poetry h3 .heti-meta,.heti-ancient h1 .heti-meta,.heti-ancient h2 .heti-meta,.heti-ancient h3 .heti-meta{display:block;font-weight:400}@media screen and (min-width: 640px){.heti-poetry h1 .heti-meta,.heti-poetry h2 .heti-meta,.heti-poetry h3 .heti-meta,.heti-ancient h1 .heti-meta,.heti-ancient h2 .heti-meta,.heti-ancient h3 .heti-meta{position:absolute;line-height:inherit;display:inline;margin-block-start:4px;margin-inline-start:8px}}.heti-poetry .heti-verse,.heti-ancient .heti-verse{text-align:center;text-indent:0}.heti-poetry p,.heti-ancient p{text-indent:2em}.heti-interlinear-annotation p{margin-block-start:0;margin-block-end:0;line-height:2.25;text-indent:2em}.heti-interlinear-annotation em{-webkit-text-emphasis:filled circle;-webkit-text-emphasis-position:under;font-weight:400}.heti-interlinear-annotation em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti-interlinear-annotation em:not(:lang(zh)){-webkit-text-emphasis:none}.heti-sans{font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-serif{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic h1,.heti-classic h2,.heti-classic h3,.heti-classic h4,.heti-classic h5,.heti-classic h6{font-weight:800}.heti-classic h1,.heti-classic h2,.heti-classic h3,.heti-classic h4,.heti-classic h5,.heti-classic h6,.heti-classic blockquote,.heti-classic cite,.heti-classic q{font-family:"Times New Roman",Times,"Kaiti SC",STKaiti,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic figcaption,.heti-classic caption,.heti-classic sup,.heti-classic sub,.heti-classic th{font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-x-large{font-size:20px;line-height:30px}.heti-large{font-size:18px;line-height:24px}.heti-small{font-size:14px;line-height:24px}.heti-x-small{font-size:12px;line-height:18px}.heti .heti-list-latin{list-style-type:upper-latin}.heti .heti-list-latin ol{list-style-type:lower-roman}.heti .heti-list-latin ol ol{list-style-type:lower-latin}.heti .heti-list-han{list-style-type:cjk-ideographic}.heti .heti-list-han ol{list-style-type:decimal}.heti .heti-list-han ol ol{list-style-type:decimal-leading-zero}.heti .heti-columns-2{max-width:none;column-count:2;column-gap:2em}.heti .heti-columns-3{max-width:none;column-count:3;column-gap:2em}.heti .heti-columns-4{max-width:none;column-count:4;column-gap:2em}.heti .heti-columns-16em{max-width:none;column-width:16em;column-gap:2em}.heti .heti-columns-20em{max-width:none;column-width:20em;column-gap:2em}.heti .heti-columns-24em{max-width:none;column-width:24em;column-gap:2em}.heti .heti-columns-28em{max-width:none;column-width:28em;column-gap:2em}.heti .heti-columns-32em{max-width:none;column-width:32em;column-gap:2em}.heti .heti-columns-36em{max-width:none;column-width:36em;column-gap:2em}.heti .heti-columns-40em{max-width:none;column-width:40em;column-gap:2em}.heti .heti-columns-44em{max-width:none;column-width:44em;column-gap:2em}.heti .heti-columns-48em{max-width:none;column-width:48em;column-gap:2em}.heti .heti-meta{line-height:24px;text-align:center;text-indent:0}.heti .heti-anchor{position:absolute;left:-1em;width:1em;font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:400;line-height:inherit;text-align:center;opacity:0;transition:opacity 0.2s linear}.heti .heti-anchor:hover{text-decoration:none;border-block-end:0}.heti h1,.heti h2,.heti h3,.heti h4,.heti h5,.heti h6{position:relative}.heti h1:hover .heti-anchor,.heti h2:hover .heti-anchor,.heti h3:hover .heti-anchor,.heti h4:hover .heti-anchor,.heti h5:hover .heti-anchor,.heti h6:hover .heti-anchor{opacity:1}.heti .heti-hang{position:absolute;line-height:inherit} diff --git a/index.css b/index.css new file mode 100644 index 0000000..5767b4d --- /dev/null +++ b/index.css @@ -0,0 +1,251 @@ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Date: 2020-01-22 00:00 + */ + +/** 测试用代码段 开始 **/ + +/* 简单模拟 css reset */ +* { + margin: 0; + padding: 0; +} + +ul, +ol { + list-style: none; +} + +/* 模拟不知道哪里流传出来的垃圾代码 */ +ul, +li { + list-style: none; +} + +/** 测试用代码段 结束 **/ + +/** 基础样式 **/ +body { + background-color: #fff; +} + +a { + color: #4285f4; + text-decoration: none; +} + +.container { + box-sizing: border-box; + padding-block-start: 12px; + padding-block-end: 12px; + padding-inline-start: 12px; + padding-inline-end: 12px; +} + +/** 首页样式 **/ +.article { + margin-inline-start: auto; + margin-inline-end: auto; + outline: 1px solid transparent; +} + +.article[data-bg-grid="page-grid-24"] { + background-size: 100% 24px; + background-image: + linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #f8f8f8 1px, rgba(255, 255, 255, 0) 33px), + linear-gradient(rgba(255, 255, 255, 0) 23px, #f8f8f8 1px); + outline-color: #eee; +} + +.article[data-bg-grid="page-grid-24"], +.article[data-bg-grid="page-grid-24"]:hover { + background-image: + linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #eee 1px, rgba(255, 255, 255, 0) 33px), + linear-gradient(rgba(255, 255, 255, 0) 23px, #eee 1px); +} + +.article[data-bg-grid="page-grid-24"] .heti-vertical { + background-size: 24px 100%; + background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 23px, #f8f8f8 1px); + outline: 1px solid #eee; +} + +.article[data-bg-grid="page-grid-24"] .heti-vertical, +.article[data-bg-grid="page-grid-24"]:hover .heti-vertical { + background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 23px, #eee 1px); +} + +.article[data-bg-grid="page-grid-12"] { + background-size: 100% 12px; + background-image: + linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #f8f8f8 1px, rgba(255, 255, 255, 0) 33px), + linear-gradient(rgba(255, 255, 255, 0) 11px, #f8f8f8 12px); + outline-color: #eee; +} + +.article[data-bg-grid="page-grid-12"], +.article[data-bg-grid="page-grid-12"]:hover { + background-image: + linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #eee 1px, rgba(255, 255, 255, 0) 33px), + linear-gradient(rgba(255, 255, 255, 0) 11px, #eee 12px); +} + +.article[data-bg-grid="page-grid-12"] .heti-vertical { + background-size: 12px 100%; + background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 11px, #f8f8f8 1px); + outline: 1px solid #eee; +} + +.article[data-bg-grid="page-grid-12"] .heti-vertical, +.article[data-bg-grid="page-grid-12"]:hover .heti-vertical { + background-image: linear-gradient(to left, transparent 11px, #eee 1px); +} + +/** 导航样式 **/ +.article__toc details ol { + margin-block-start: 24px; + margin-block-end: 24px; +} + +/** 页脚样式 **/ +.fn { + max-width: 42em; + margin-block-start: 12px; + margin-block-end: 12px; + margin-inline-start: auto; + margin-inline-end: auto; + padding-block-start: 4px; + border-block-start: 1px solid #ccc; +} + +.fn__list { + margin-block-start: 0; + margin-block-end: 0; + padding-inline-start: 2em; + list-style-type: decimal; + font-size: 14px; + line-height: 24px; +} + +.fn__list li { + list-style-type: unset; +} + +/** 控制栏样式 **/ +.panel { + position: fixed; + z-index: 2; + right: 10px; + top: 10px; + text-align: right; +} + +/** 演示区块 **/ +.demo__main { + margin-block-start: 24px; + margin-block-end: 24px; +} + +/** 演示卡片 **/ +.card { + box-sizing: border-box; + position: relative; + width: 100%; + margin-block-start: 24px; + margin-block-end: 72px; + padding-block-start: 24px; + padding-block-end: 24px; + padding-inline-start: 16px; + padding-inline-end: 16px; + border-radius: 2px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16); + background-color: #fff; +} + +.card__vertical-container { + box-sizing: border-box; + width: 100%; + height: 30em; + border: 1px solid #eee; + overflow: auto; + writing-mode: vertical-rl; +} + +.article .card { + text-align: left; +} + +.article .card > figcaption { + display: inline-block; + margin-block-start: 16px; + padding-block-start: 4px; + padding-block-end: 3px; + padding-inline-start: 0; + padding-inline-end: 72px; + line-height: 24px; + border-block-start: 1px solid #ccc; +} + +/* +heti-jiya { + display: inline; + width: 0; + margin-inline-start: -0.5em; +} +*/ + +@media screen and (min-width: 640px) { + body { + min-width: 900px; + background-color: #eee; + } + + .container { + box-sizing: border-box; + width: 75%; + min-width: 720px; + max-width: 880px; + margin-block-start: 48px; + margin-block-end: 48px; + margin-inline-start: auto; + margin-inline-end: auto; + padding-block-start: 48px; + padding-block-end: 48px; + padding-inline-start: 48px; + padding-inline-end: 48px; + border-radius: 2px; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.32); + background-color: #fff; + } + + .card { + left: -20%; + width: 140%; + padding-inline-start: 32px; + padding-inline-end: 32px; + } +} + +@media screen and (min-width: 1080px) { + .article__toc { + position: relative; + z-index: 1; + float: right; + width: 192px; + margin-block-start: 0; + margin-block-end: 12px; + margin-inline-start: 32px; + margin-inline-end: -48px; + padding-block-start: 12px; + padding-block-end: 12px; + padding-inline-start: 8px; + padding-inline-end: 8px; + border: 1px solid #eee; + border-radius: 2px; + background-color: #fff; + } + + .article__toc details ol { + margin-block-end: 0; + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..58e8d5a --- /dev/null +++ b/index.html @@ -0,0 +1,467 @@ + + + + + 赫蹏 - 一个简约又简单的网页中文排版增强 + + + + + + +
+
+

赫蹏

+
古代称用以书写的小幅绢帛。后亦以借指纸。《汉书·外戚传下·孝成赵皇后》:武(籍武 )发篋中,有裹药二枚,赫蹏书。颜师古注:邓展曰:赫音兄弟鬩墙之鬩。应劭曰:赫蹏,薄小纸也。 赵彦卫 《云麓漫钞》卷七:《赵后传》所谓『赫蹏』者,注云薄小纸,然其寔亦縑帛。
+ + + +

介绍#

+

赫蹏(hètí)是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来,可以为网站的读者带来更好的文章阅读体验。由于它不同于传统的网页样式重置,而是专注于正文区域的样式增强,因此可以很好的与常见的 CSS 样式重置方案共存。它的主要功能有:

+
    +
  • 全标签样式统一;
  • +
  • 贴合网格的排版;
  • +
  • 内置多种预设字体族(仅限桌面端);
  • +
  • 支持横排、竖排两种排版;
  • +
  • 支持诗词、行间注版式;
  • +
  • 兼容 normalize.cssCSS Reset[1]等大部分重置样式;
  • +
  • 移动端支持;
  • +
  • ……
  • +
+

总之,用上就是好看。

+ +
+ +

使用方法#

+

赫蹏的使用方法很简单,只需要引入样式文件并设定作用范围即可:

+
    +
  1. + 在页面的 <head> 标签中引入 heti.css 文件: +
    <link rel="stylesheet" href="./heti.css">
    +
  2. +
  3. + 在要作用的容器元素上增加 class="heti" 的类名即可: +
    +<article class="entry heti">
    +  <h1>我的世界观</h1>
    +  <p>有钱人的生活就是这么朴实无华,且枯燥</p>
    +  ……
    +</article>
    +
  4. +
  5. 不建议将样式作用在根标签(比如 <body><div class="container">)上,除非你的页面通篇都是文章的一部分
  6. +
+ +
+ +

效果示例#

+
+ 示例1:出师表 +
+
+

出师表

+

作者:諸葛亮(181年~234年10月8日)

+

先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

+

宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。

+

侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。

+

将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。

+

亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。

+

臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。

+

先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。

+

愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。

+

今当远离,临表涕零,不知所言。

+
+
+
+ +
+ 示例2:诗词 +
+
+

一剪梅·红藕香残玉簟秋[宋]李清照

+

+ 红藕香残玉簟秋。轻解罗裳,独上兰舟
+ 云中谁寄锦书来,雁字回时,月满西楼
+ 花自飘零水自流。一种相思,两处闲愁
+ 此情无计可消除,才下眉头,却上心头 +

+
+

丑奴儿·书博山道中壁[宋]辛弃疾

+

+ 少年不识愁滋味,爱上层楼
+ 爱上层楼,为赋新词强说愁
+ 而今识尽愁滋味,欲说还休
+ 欲说还休,却道天凉好个秋 +

+
+
+
+ +
+ 示例3:行间注 +
+
+

庖丁解牛

+

作者:庄周(公元前369~公元前286年)

+

吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为恶无近刑。缘督以为经,可以保身,可以全生,可以养亲,可以尽年。

+

(páo)为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所()(huā)(xiǎng)然,奏刀(huō),莫不中音。合于《桑林》之舞,乃中《经首》之会。

+

文惠君曰:「嘻,善哉!技()至此乎?」

+

庖丁释刀对曰:「臣之所好者,道也,进乎技矣。始臣之解牛之时,所见无非牛者。三年之后,未尝见全牛也。方今之时,臣以神遇而不以目视,官知止而神欲行。依乎天理批大()导大(kuǎn)固然,技经肯(qìng)之未尝,而况大()乎!良庖岁更刀,割也;族庖月更刀,折也。今臣之刀十九年矣,所解数千牛矣,而刀刃若新发于(xíng)。彼节者有间,而刀刃者无厚;以无厚入有间,恢恢乎其于游刃必有余地矣,是以十九年而刀刃若新发于硎。虽然,每至于族,吾见其难为,(chù)然为戒,视为止,行为迟。动刀甚微,(huò)然已解,如土委地。提刀而立,为之四顾,为之(chóu)(chú)满志,善刀而藏之。」

+

文惠君曰:「善哉!吾闻庖丁之言,得养生焉。」

+
+
+
+ +
+ 示例4:英文演示 +
+

Lorem Ipsum

+

There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain...

+

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

+

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

+

The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.

+
+
+ +
+ +

多栏排版#

+

赫蹏预置了多种多栏布局类,可以按栏数或栏宽进行设置。

+
+ 查看使用说明 +

为容器元素添加名为 heti-columns-2 的 class 即可实现三栏排版。

+
<div class="heti heti-columns-2"></div>
+ + + + + + + + + + + + + + + + + + + + +
方式对应类名可选数值
按数量heti-columns-32, 3, 4
按宽度heti-columns-16em16em, 20em, 24em, … +4em, … , 48em
+
+
+
+

以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

+

以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

+

以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

+

以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

+
+
多栏排版演示
+
+ +
+ +

垂直排版#

+

赫蹏预置了传统的垂直方向排版,同样贴合栅格。

+
+ 查看使用说明 +

为容器元素添加名为 heti-vertical 的 class 即可实现垂直布局:

+
<div class="heti heti-vertical"></div>
+
+
+
+
+

出師表

+

作者:諸葛亮(181年-234年10月8日)

+

先帝創業未半,而中道崩殂;今天下三分,益州疲弊,此誠危急存亡之秋也﹗然侍衞之臣,不懈於內;忠志之士,忘身於外者,蓋追先帝之殊遇,欲報之於陛下也。

+

誠宜開張聖聽,以光先帝遺德,恢弘志士之氣﹔不宜妄自菲薄,引喻失義,以塞忠諫之路也。

+

宮中、府中,俱為一體;陟罰臧否,不宜異同。若有作姦、犯科,及為忠善者,宜付有司,論其刑賞,以昭陛下平明之治;不宜偏私,使內外異法也。

+

侍中、侍郎郭攸之、費禕、董允等,此皆良實,志慮忠純,是以先帝簡拔以遺陛下。愚以為宮中之事,事無大小,悉以咨之,然後施行,必能裨補闕漏,有所廣益。將軍向寵,性行淑均,曉暢軍事,試用於昔日,先 帝稱之曰「能」,是以眾議舉寵為督。愚以為營中之事,悉以咨之,必能使行陣和睦,優劣得所。

+

親賢臣,遠小人,此先漢所以興隆也﹔親小人,遠賢臣,此後漢所以傾頹也。先帝在時,每與臣論此事,未嘗不歎息痛恨於桓、靈也!侍中、尚書、長史、參軍,此悉貞良死節之臣,願陛下親之、信之,則漢室之隆,可計日而待也。

+

臣本布衣,躬耕於南陽,苟全性命於亂世,不求聞達於諸侯。先帝不以臣卑鄙,猥自枉屈,三顧臣於草廬之中,諮臣以當世之事;由是感激,遂許先帝以驅馳。後值傾覆,受任於敗軍之際,奉命於危難之間,爾來二十有一年矣。先帝知臣謹慎,故臨崩寄臣以大事也。受命以來,夙夜憂歎,恐託付不效,以傷先帝之明。故五月渡瀘,深入不毛。今南方已定,兵甲已足,當獎率三軍,北定中原,庶竭駑鈍,攘除姦凶,興復漢室,還於舊都。此臣所以報先帝而忠陛下之職分也。至於斟酌損益,進盡忠言,則攸之、禕、允之任也。

+

願陛下託臣以討賊興復之效;不效,則治臣之罪,以告先帝之靈。若無興德之言,則責攸之、禕、允等之慢,以彰其咎。陛下亦宜自謀,以諮諏善道,察納雅言,深追先帝遺詔。臣不勝受恩感激。今當遠離,臨表涕零,不知所言!

+
+
+
垂直排版演示
+
+ +
+ +

排版原则#

+

核心

+

以美化中文方块字排版为目标,假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

+

使用heti.css时建议搭配良好的中文书写习惯,即:使用正确的 HTML 标签、正确的引号、中文全角标点等。使用 Markdown 书写文章将助你一臂之力。

+

字号

+

heti.css 采用 16px 作为默认字号。在文字较大时(作用于标题等情况),会适当地增加字间距以便获得更好地可读性。

+

字体

+

参考《中文排版需求[2]》中描述的四种常见书籍排版字体:宋体、楷体、黑体、仿宋。赫蹏提供黑体、宋体和传统三种字体风格,前两者分别对应无衬线、衬线字体族。

+
+ 查看对照表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
各字体族下不同标签对应的字体
黑体宋体传统备注
标题黑体宋体(粗)楷体 +
+

记忆中的站台

+
+
正文黑体宋体宋体 +
+

那是一个风雨交加的夜晚。

+
+
引用黑体宋体楷体 +
+
锣鼓喧天,鞭炮齐鸣,红旗招展,人山人海。
+
+
强调黑体宋体宋体 +
+

父亲特意嘱咐了我两句。

+
+
对话黑体宋体楷体 +
+

他说:我买几个橘子去。你就在此地,不要走动。

+
+
图例黑体宋体黑体 +
+
+ +
橘子
+
+
+
表头黑体宋体黑体 +
+ + + + + + + + + + + + + + +
当时的情形
角色物品
父亲橘子
车票
+
+
角标黑体黑体黑体鲁迅[1]曾经没有说过
+
+

标点

+

参考《中文排版需求》制定符号样式。唯一差异在于简体中文一律采用直角引号(「」)替代圆角引号(“”),这样可以保持字符等宽。

+

间距

+

为保持页面元素总是贴合垂直栅格,大部分块级元素(段落、列表、表格等)采用一行行高作为底边距,半行行高作为顶边距。

+ +
+ +

附录#

+

兼容性#

+

赫蹏在间距、边框、位置属性上采用了 Logical properties,在所有现代浏览器上表现良好。

+
+ 查看兼容性详情 + + + + + + + + + + + + + + + + + + +
兼容性列表
ChromeSafariFirefoxIEEdge
兼容性12345
+
+ +

标签示例表#

+
+ 标签示例表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
类型标签效果
链接<a href="https://github.com/sivan/heti" title="赫蹏" target="_blank">heti.css</a>heti.css
缩写<abbr title="Cascading Style Sheets">CSS</abbr>CSS
代码<code>.heti { star: 5; }</code>.heti { star: 5; }
删除的文字<del datetime="2020-01-23">过期的内容</del>过期的内容
强调这次的疫情<em>必将</em>取得胜利。这次的疫情必将取得胜利。
标记这道题<mark>必考</mark>,你们爱记不记。这道题必考,你们爱记不记。
+
+ +
+ +

待开发功能#

+
    +
  • ️☑ 中、西文混排
  • +
  • ☑ 标点挤压
  • +
  • ☑ 标点悬挂
  • +
  • ✅ 诗词版式
  • +
  • ✅ 行间注版式
  • +
+

-- EOF --

+
+
+
    +
  1. CSS Reset:指代类似 Eric Meyer's Reset CSS 的样式重置方案
  2. +
  3. 《中文排版需求》:https://w3c.github.io/clreq/
  4. +
+
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/normalize.css b/normalize.css new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/normalize.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} From e2628020d77b0d1e7e4f69964155d154a94716c7 Mon Sep 17 00:00:00 2001 From: Sivan Date: Tue, 11 Feb 2020 20:55:25 +0800 Subject: [PATCH 003/127] Set theme jekyll-theme-cayman --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file From f250891f5cc2d6c9dc32cbb8cd4d78b4d6eb369d Mon Sep 17 00:00:00 2001 From: Sivan Date: Tue, 11 Feb 2020 21:04:24 +0800 Subject: [PATCH 004/127] Updates --- _config.yml | 1 - index.html | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 _config.yml diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/index.html b/index.html index 58e8d5a..709e548 100644 --- a/index.html +++ b/index.html @@ -52,11 +52,11 @@
  • 内置多种预设字体族(仅限桌面端);
  • 支持横排、竖排两种排版;
  • 支持诗词、行间注版式;
  • -
  • 兼容 normalize.cssCSS Reset[1]等大部分重置样式;
  • +
  • 兼容 normalize.cssCSS Reset[1]等常见样式重置;
  • 移动端支持;
  • ……
  • -

    总之,用上就是好看。

    +

    总之,用上就会变好看。


    From d0488130aee4465f35766740f6623f48f8217192 Mon Sep 17 00:00:00 2001 From: Sivan Date: Tue, 11 Feb 2020 21:01:13 +0800 Subject: [PATCH 005/127] feat: update BEM naming --- README.md | 15 +++- lib/_base.scss | 7 +- lib/_heading.scss | 1 + lib/_helper-inline.scss | 47 ----------- lib/_inline.scss | 3 +- lib/_list.scss | 1 + lib/_modifier-layout.scss | 79 ------------------- lib/_table.scss | 4 +- lib/_variables.scss | 43 +++++++--- .../_block.scss} | 65 ++++++++------- lib/helpers/_inline.scss | 22 ++++++ lib/heti.scss | 27 +++++-- lib/modifiers/ancient.scss | 60 ++++++++++++++ lib/modifiers/annotation.scss | 37 +++++++++ lib/modifiers/column.scss | 35 ++++++++ .../font-stack.scss} | 41 +++------- lib/modifiers/writing-mode.scss | 24 ++++++ package.json | 2 +- 18 files changed, 297 insertions(+), 216 deletions(-) delete mode 100644 lib/_helper-inline.scss delete mode 100644 lib/_modifier-layout.scss rename lib/{_helper-block.scss => helpers/_block.scss} (51%) create mode 100644 lib/helpers/_inline.scss create mode 100644 lib/modifiers/ancient.scss create mode 100644 lib/modifiers/annotation.scss create mode 100644 lib/modifiers/column.scss rename lib/{_modifier-font.scss => modifiers/font-stack.scss} (50%) create mode 100644 lib/modifiers/writing-mode.scss diff --git a/README.md b/README.md index 5f0fba7..e928c72 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,23 @@ 赫蹏(hètí)是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来,可以为网站的读者带来更好的文章阅读体验。 +预览:[https://sivan.github.io/heti/](https://sivan.github.io/heti/) + 主要特性: - 全标签样式统一; - 贴合网格的排版; -- 内置多种预设字体族(仅限桌面端); -- 支持横排、竖排两种排版; -- 支持诗词、行间注版式; -- 兼容 *normalize.css*、**CSS Reset** 等大部分重置样式; +- 预置多种预设字体族(仅限桌面端); +- 预置横排、直排(竖排)样式; +- 预置古文、诗词样式; +- 预置行间注排版样式; +- 预置多栏排版样式; +- 兼容 *normalize.css*、*CSS Reset* 等常见样式重置; - 移动端支持; +- 基于 BEM; - …… +总之,用上就会变好看。 + ## 使用方法 1. 在页面的 `` 标签中引入 `heti.css` 文件: diff --git a/lib/_base.scss b/lib/_base.scss index 502ae13..80e5145 100644 --- a/lib/_base.scss +++ b/lib/_base.scss @@ -63,12 +63,8 @@ text-align: justify; @include non-cjk-block { - text-align: left; + text-align: start; } - - //+ pre { - // margin-block-start: -$std-block-unit / 2; - //} } pre { @@ -81,6 +77,7 @@ padding-inline-start: $std-inline-unit; padding-inline-end: $std-inline-unit; overflow: auto; + font-family: $font-family-mono; white-space: pre; word-wrap: normal; background-color: rgba(0, 0, 0, 0.054); diff --git a/lib/_heading.scss b/lib/_heading.scss index 4462bd1..67b3718 100644 --- a/lib/_heading.scss +++ b/lib/_heading.scss @@ -15,6 +15,7 @@ // 顶边距默认为一行间距,且不因边距重叠原因减半 // 底边距考虑到亲密性,默认为半行间距 + margin: 0; margin-block-start: $std-block-unit; margin-block-end: $std-block-unit / 2; font-weight: $font-weight-bold; diff --git a/lib/_helper-inline.scss b/lib/_helper-inline.scss deleted file mode 100644 index e7403ab..0000000 --- a/lib/_helper-inline.scss +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Author: Sivan [sun.sivan@gmail.com] - * Description: define inline helper classes. - */ -@import "variables"; - -@mixin hetiInlineHelperClasses { - // 标题内锚点 - #{$root-selector}-anchor { - position: absolute; - left: -1em; - width: 1em; - font-family: $font-family-hei; - font-weight: 400; - line-height: inherit; - text-align: center; - opacity: 0; - transition: opacity 0.2s linear; - - &:hover { - text-decoration: none; - border-block-end: 0; - } - - @at-root { - #{$root-selector} { - h1, - h2, - h3, - h4, - h5, - h6 { - position: relative; - - &:hover #{$root-selector}-anchor { - opacity: 1; - } - } - } - } - } - - // @todo: 用于标点悬挂用的样式 - #{$root-selector}-hang { - @include hang(); - } -} diff --git a/lib/_inline.scss b/lib/_inline.scss index 2fc1ad2..4904b82 100644 --- a/lib/_inline.scss +++ b/lib/_inline.scss @@ -35,7 +35,7 @@ dfn { font-weight: $font-weight-bold; - // 非中文时显示斜体 + // 非中文时不加粗 @include non-cjk-block { font-weight: $font-weight-normal; } @@ -110,6 +110,7 @@ margin-inline-start: 0.25em; margin-inline-end: 0.25em; font-size: 0.75em; + font-family: $font-family-hei; line-height: 1; vertical-align: baseline; } diff --git a/lib/_list.scss b/lib/_list.scss index 82a4174..70c88df 100644 --- a/lib/_list.scss +++ b/lib/_list.scss @@ -24,6 +24,7 @@ } } + /* 兼容性处理 */ // 重置部分 CSS Reset 中 ul, ol { list-style: none; } 造成的样式污染 // 如果搭配 normalize.css 使用,则不存在这些样式污染 @if $_css-reset-scheme == "reset" { diff --git a/lib/_modifier-layout.scss b/lib/_modifier-layout.scss deleted file mode 100644 index c58a135..0000000 --- a/lib/_modifier-layout.scss +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Author: Sivan [sun.sivan@gmail.com] - * Description: define vertical layout classes. - */ -@import "variables"; - -@mixin hetiLayoutModifier { - // 定义垂直布局 - &-vertical { - max-width: none; - max-height: $line-length; - writing-mode: vertical-rl; - letter-spacing: 0.125em; - } - - // 定义古文、诗词样式 - &-poetry, - &-ancient { - font-family: $font-family-song; - - h1, - h2, - h3 { - font-family: $font-family-song; - font-weight: $font-weight-bolder; - text-align: center; - - // 标题内元信息,不应占据空间影响标题文字居中 - #{$root-selector}-meta { - display: block; - font-weight: 400; - - @media screen and (min-width: 640px) { - @include hang(); - - display: inline; - margin-block-start: 4px; - margin-inline-start: 8px; - } - } - } - - #{$root-selector}-verse { - text-align: center; - text-indent: 0; - } - - // 古文(文言文、词)默认首行缩进 - p { - text-indent: $text-indent-length; - } - } - - // 定义行间注样式 - // @todo: 类名太长了,得简化一下 - &-interlinear-annotation { - // 首行缩进且行间距大,无需添加段落边距 - p { - margin-block-start: 0; - margin-block-end: 0; - line-height: $line-height-expanded-ultra; - text-indent: $text-indent-length; - } - - // 着重号不应影响行间距,经测试最小可用行高为 1.7 - em { - -webkit-text-emphasis: filled circle; - -webkit-text-emphasis-position: under; - font-weight: $font-weight-normal; - - @include non-cjk-block { - -webkit-text-emphasis: none; - } - } - - // ruby 不应影响行间距,经测试最小可用行高为 2 - //ruby {} - } -} diff --git a/lib/_table.scss b/lib/_table.scss index eb2f7f8..0c0c7cd 100644 --- a/lib/_table.scss +++ b/lib/_table.scss @@ -1,6 +1,6 @@ /** * Author: Sivan [sun.sivan@gmail.com] - * Description: 表格样式 + * Description: table styles. */ @import "variables"; @@ -24,6 +24,8 @@ caption { caption-side: bottom; + margin-block-start: 2px; + margin-block-end: -4px; font-size: $font-size-small; line-height: $line-height-size-small; } diff --git a/lib/_variables.scss b/lib/_variables.scss index 0e40d06..cd88303 100644 --- a/lib/_variables.scss +++ b/lib/_variables.scss @@ -6,29 +6,29 @@ // 定义赫蹏根 class 名 $root-selector: '.heti' !default; -// 字体 Fonts -/// 字体栈 Font Stacks -$_font-stack-hei: "Pingfang SC", "Pingfang TC", "Heiti SC", "Heiti TC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei" !default; -$_font-stack-song: 'Noto Serif','Noto Serif CJK SC', 'Noto Serif CJK', 'Source Han Serif SC', ‘Source Han Serif’, source-han-serif-sc, "Songti SC", "Songti TC", STSong, SimSun !default; +/* 字体 Fonts */ +// 字体栈 Font Stacks +$_font-stack-hei: "Pingfang SC", "Heiti SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei" !default; +$_font-stack-song: "Songti SC", STSong, SimSun !default; $_font-stack-kai: "Kaiti SC", STKaiti !default; $_font-stack-sans: "Helvetica Neue", Helvetica, Arial !default; $_font-stack-serif: "Times New Roman", Times !default; $_font-stack-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier !default; $_font-stack-symbol: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; -/// 字体族 Font Families +// 字体族 Font Families $font-family-hei: $_font-stack-sans, $_font-stack-hei, sans-serif, $_font-stack-symbol !default; $font-family-song: $_font-stack-serif, $_font-stack-song, serif, $_font-stack-symbol !default; $font-family-kai: $_font-stack-serif, $_font-stack-kai, serif, $_font-stack-symbol !default; $font-family-mono: $_font-stack-mono, monospace, $_font-stack-symbol !default; -/// 字重 Font Weights +// 字重 Font Weights $font-weight-bolder: 800 !default; $font-weight-bold: 600 !default; $font-weight-normal: 400 !default; $font-weight-lighter: 200 !default; -/// 字号 Font Sizes +// 字号 Font Sizes $font-size-normal: 16px !default; $font-size-x-large: 20px !default; $font-size-large: 18px !default; @@ -42,6 +42,7 @@ $font-size-h4: 18px !default; $font-size-h5: 16px !default; $font-size-h6: 14px !default; +/* 行 Lines */ // 行宽 $line-length: 42em !default; @@ -64,6 +65,7 @@ $line-height-size-h4: 24px !default; $line-height-size-h5: 24px !default; $line-height-size-h6: 24px !default; +/* 段落 Paragraphs */ // 标准网格单位变量 Standard Length // 垂直方向标准单位 = 标准行高 // 水平方向标准单位 = 标准字号 @@ -73,13 +75,18 @@ $std-inline-unit: $font-size-normal !default; // 示例:缩进单位 = 二倍文字宽度 $text-indent-length: 2em !default; -// 开发用配置项 Develop Configs +/* 栏 Columns */ +// 分栏 +$column-count-list: (1, 2, 3, 4) !default; +$column-width-list: (16em, 20em, 24em, 28em, 32em, 36em, 40em, 44em, 48em) !default; -/// 预设重置方案 "reset" | "normalize" -/// reset:假定 Eric Meyer 的 CSS Reset 或其它流行的 Reset -/// normalize:指定为 normalize.css +/* 开发用配置项 Develop Configs */ +// 预设重置方案 +// `reset`:假定 Eric Meyer 的 CSS Reset 或其它流行的 Reset +// `normalize`:指定为 normalize.css $_css-reset-scheme: "reset"; +/* 混合 Mix-ins */ // Mix-in: Clear float @mixin clear-float { &::before, @@ -105,4 +112,18 @@ $_css-reset-scheme: "reset"; @mixin hang { position: absolute; line-height: inherit; + text-indent: 0; +} + +/* 函数 Functions */ +// Function: batch prefix/suffix list-item +// batch-fix-list((2, 3), '#{$root-selector}--columns-') => (.heti--columns-2, .heti--columns-3) +@function batch-fix-list($list, $prefix: '', $suffix: '') { + $_list: () !default; + + @each $item in $list { + $_list: append($_list, #{$prefix}#{$item}#{$suffix}, comma); + } + + @return $_list; } diff --git a/lib/_helper-block.scss b/lib/helpers/_block.scss similarity index 51% rename from lib/_helper-block.scss rename to lib/helpers/_block.scss index 5f8e482..2eee34f 100644 --- a/lib/_helper-block.scss +++ b/lib/helpers/_block.scss @@ -2,9 +2,46 @@ * Author: Sivan [sun.sivan@gmail.com] * Description: define block helper classes. */ -@import "variables"; +@import "../variables"; @mixin hetiBlockHelperClasses { + /* 段落相关 */ + // 元信息无缩进 + #{$root-selector}-meta { + display: block; + text-indent: 0; + } + + // 诗节无缩进,居中显示 + #{$root-selector}-verse { + text-align: center; + text-indent: 0; + } + + // 定义扩展字号 + #{$root-selector} { + &-large { + font-size: $font-size-large; + line-height: $line-height-size-large; + } + + &-x-large { + font-size: $font-size-x-large; + line-height: $line-height-size-x-large; + } + + &-small { + font-size: $font-size-small; + line-height: $line-height-size-small; + } + + &-x-small { + font-size: $font-size-x-small; + line-height: $line-height-size-x-small; + } + } + + /* 列表相关 */ // 定义拉丁字母的有序列表 #{$root-selector}-list-latin { list-style-type: upper-latin; @@ -30,30 +67,4 @@ } } } - - // 定义多栏布局 - @each $columns in (2, 3, 4) { - #{$root-selector}-columns-#{$columns} { - // 多行时不再设总宽度限制 - max-width: none; - column-count: #{$columns}; - column-gap: 2em; - } - } - - @each $column-width in (16em, 20em, 24em, 28em, 32em, 36em, 40em, 44em, 48em) { - #{$root-selector}-columns-#{$column-width} { - // 多行时不再设总宽度限制 - max-width: none; - column-width: #{$column-width}; - column-gap: 2em; - } - } - - // 元信息、诗节居中显示 - #{$root-selector}-meta { - line-height: $line-height-size-normal; - text-align: center; - text-indent: 0; - } } diff --git a/lib/helpers/_inline.scss b/lib/helpers/_inline.scss new file mode 100644 index 0000000..9dca81e --- /dev/null +++ b/lib/helpers/_inline.scss @@ -0,0 +1,22 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define inline helper classes. + */ +@import "../variables"; + +@mixin hetiInlineHelperClasses { + // @todo: 用于标点悬挂用的样式 + #{$root-selector}-hang { + @include hang(); + } + + // 显示强烈的着重号 + #{$root-selector}-em { + -webkit-text-emphasis: filled circle; + -webkit-text-emphasis-position: under; + + @include non-cjk-block { + -webkit-text-emphasis: none; + } + } +} diff --git a/lib/heti.scss b/lib/heti.scss index 06b9b16..3d9f3d5 100644 --- a/lib/heti.scss +++ b/lib/heti.scss @@ -7,10 +7,13 @@ @import "list"; @import "table"; @import "inline"; -@import "modifier-layout"; -@import "modifier-font"; -@import "helper-block"; -@import "helper-inline"; +@import "modifiers/font-stack"; +@import "modifiers/writing-mode"; +@import "modifiers/column"; +@import "modifiers/ancient"; +@import "modifiers/annotation"; +@import "helpers/block"; +@import "helpers/inline"; #{$root-selector} { // 中文每行展示文字(CPL)建议在 30~50 之间,默认 42 @@ -24,18 +27,26 @@ // 自动在中西文间加 1/4 空格(暂无浏览器支持) //text-spacing: ideograph-alpha; - // 引入各模块 + // 模块引用顺序 + + // 1. 引入各模块 + // .heti h1, .heti p, .heti ul @include hetiBase(); @include hetiHeading(); @include hetiList(); @include hetiTable(); @include hetiInline(); - // 定义所有状态样式(与 .heti 并列使用) - @include hetiLayoutModifier(); + // 2. 定义所有修饰器(需与 .heti 组合使用) + // .heti--sans h1, .heti--vertical h1 etc. @include hetiFontModifier(); + @include hetiColumnModifier(); + @include hetiWritingModeModifier(); + @include hetiAncientModifier(); + @include hetiAnnotationModifier(); - // 定义所有内嵌样式(仅在 .heti 内使用有效) + // 3. 定义工具类样式(仅在 .heti 内部使用) + // .heti .heti-verse, .heti .heti-hang @include hetiBlockHelperClasses(); @include hetiInlineHelperClasses(); } diff --git a/lib/modifiers/ancient.scss b/lib/modifiers/ancient.scss new file mode 100644 index 0000000..4932a32 --- /dev/null +++ b/lib/modifiers/ancient.scss @@ -0,0 +1,60 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define ancient styles. + */ +@import "../variables"; + +@mixin hetiAncientModifier { + // 定义古文、古诗样式 + &--ancient, + &--poetry { + // 古文、古诗用宋体(覆盖全局字体) + font-family: $font-family-song; + + // 古文标题用楷体(覆盖全局字体) + h1, + h2, + h3, + h4, + h5, + h6 { + font-family: $font-family-kai; + font-weight: $font-weight-bolder; + text-align: center; + + // 标题内元信息仅在桌面端采取悬挂处理,且不占据空间影响文字居中 + #{$root-selector}-meta { + font-weight: 400; + + @media screen and (min-width: 640px) { + @include hang(); + + display: inline; + margin-block-start: 4px; + margin-inline-start: 8px; + } + } + } + + #{$root-selector}-meta { + line-height: $line-height-size-normal; + text-align: center; + text-indent: 0; + } + } + + &--ancient { + // 古文(文言文、词)首行缩进 + p { + text-indent: $text-indent-length; + } + } + + &--poetry { + // 诗节无缩进,居中显示 + p { + text-align: center; + text-indent: 0; + } + } +} diff --git a/lib/modifiers/annotation.scss b/lib/modifiers/annotation.scss new file mode 100644 index 0000000..6a51150 --- /dev/null +++ b/lib/modifiers/annotation.scss @@ -0,0 +1,37 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define interlinear annotation styles. + */ +@import "../variables"; + +@mixin hetiAnnotationModifier { + &--annotation { + // 首行缩进且行间距加大,去除段落间距 + p { + margin-block-start: 0; + margin-block-end: 0; + line-height: $line-height-expanded-ultra; + text-indent: $text-indent-length; + } + + // 着重号不应影响行间距,经测试最小可用行高为 1.7 + em { + -webkit-text-emphasis: filled circle; + -webkit-text-emphasis-position: under; + font-weight: $font-weight-normal; + + @include non-cjk-block { + -webkit-text-emphasis: none; + } + } + + // 元信息保持间距 + #{$root-selector}-meta { + margin-block-start: $std-block-unit / 2; + margin-block-end: $std-block-unit; + } + + // ruby 不应影响行间距,经测试最小可用行高为 2 + //ruby {} + } +} diff --git a/lib/modifiers/column.scss b/lib/modifiers/column.scss new file mode 100644 index 0000000..6c6d11b --- /dev/null +++ b/lib/modifiers/column.scss @@ -0,0 +1,35 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define column styles. + */ +@import "../variables"; + +@mixin hetiColumnModifier { + // 定义多栏排版 + $selector-list: batch-fix-list(join($column-count-list, $column-width-list), '&--columns-'); + + #{join($selector-list, comma)} { + // 多行时不再设总宽度限制 + max-width: none; + column-gap: 2em; + + // 多栏排版时减半段间距 + p { + margin-block-start: $std-block-unit / 2 / 2; + margin-block-end: $std-block-unit / 2; + text-indent: $text-indent-length; + } + } + + @each $columns in $column-count-list { + &--columns-#{$columns} { + column-count: #{$columns}; + } + } + + @each $column-width in $column-width-list { + &--columns-#{$column-width} { + column-width: #{$column-width}; + } + } +} diff --git a/lib/_modifier-font.scss b/lib/modifiers/font-stack.scss similarity index 50% rename from lib/_modifier-font.scss rename to lib/modifiers/font-stack.scss index 2bddb9a..f8fd8f2 100644 --- a/lib/_modifier-font.scss +++ b/lib/modifiers/font-stack.scss @@ -1,22 +1,25 @@ /* * Author: Sivan [sun.sivan@gmail.com] - * Description: define font stack classes. + * Description: define global font stacks. */ -@import "variables"; +@import "../variables"; @mixin hetiFontModifier { + // 定义默认采用无衬线字体 // 定义无衬线字体为黑体 - &-sans { + &, + &--sans { font-family: $font-family-hei; } // 定义衬线字体为宋体 - &-serif { + &--serif { font-family: $font-family-song; } // 定义传统字体 - &-classic { + &--classic { + // 正文使用宋体 font-family: $font-family-song; // 标题使用 800 字重 @@ -42,37 +45,11 @@ font-family: $font-family-kai; } - // 说明文字、角标、表头使用黑体 + // 说明文字、表头使用黑体 figcaption, caption, - sup, - sub, th { font-family: $font-family-hei; } } - - // 定义超大号字 - &-x-large { - font-size: $font-size-x-large; - line-height: $line-height-size-x-large; - } - - // 定义大号字 - &-large { - font-size: $font-size-large; - line-height: $line-height-size-large; - } - - // 定义小号字 - &-small { - font-size: $font-size-small; - line-height: $line-height-size-small; - } - - // 定义超小号字 - &-x-small { - font-size: $font-size-x-small; - line-height: $line-height-size-x-small; - } } diff --git a/lib/modifiers/writing-mode.scss b/lib/modifiers/writing-mode.scss new file mode 100644 index 0000000..f2f587c --- /dev/null +++ b/lib/modifiers/writing-mode.scss @@ -0,0 +1,24 @@ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define writing mode styles. + */ +@import "../variables"; + +@mixin hetiWritingModeModifier { + // 定义垂直布局 + &--vertical { + max-width: none; + max-height: $line-length; + writing-mode: vertical-rl; + letter-spacing: 0.125em; + + h1, + h2, + h3, + h4, + h5, + h6 { + text-align: start; + } + } +} diff --git a/package.json b/package.json index fe735b0..55ba5e1 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "lib": "lib" }, "scripts": { - "start": "node-sass -w --output-style=compressed index.scss dist/heti.css", + "start": "node-sass -w --output-style=nested index.scss dist/heti.css", "build": "node-sass index.scss dist/heti.css --output-style=compressed", "deploy": "gh-pages -d dist", "test": "npx stylelint --config .stylelintrc 'lib/**/*.scss'" From 17f9586f3c3b5ebaa6aa303c9c72cbdfdbd42b83 Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 12:33:20 +0800 Subject: [PATCH 006/127] Updates --- heti.css | 631 ++++++++++++++++++++++++++++++++++++++++++++++++++++- index.css | 62 ++++-- index.html | 156 ++++++++----- 3 files changed, 771 insertions(+), 78 deletions(-) diff --git a/heti.css b/heti.css index 5ec3b5e..4ccf79c 100644 --- a/heti.css +++ b/heti.css @@ -1,6 +1,627 @@ -/*! - * Project: Heti - * URL: https://github.com/sivan/heti +@charset "UTF-8"; +/** * Author: Sivan [sun.sivan@gmail.com] - * Date: 2020-01-22 00:00 - */.heti{max-width:42em;font-size:16px;font-weight:400;line-height:1.5}.heti::before,.heti::after{content:"";display:table}.heti::after{clear:both}.heti>*:first-child,.heti section>*:first-child,.heti td>*:first-child{margin-block-start:0 !important}.heti>*:last-child,.heti section>*:last-child,.heti td>*:last-child{margin-block-end:0 !important}.heti blockquote{margin-block-start:12px;margin-block-end:24px;margin-inline-start:32px;margin-inline-end:32px;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;background-color:rgba(0,0,0,0.054)}.heti figure{display:block;text-align:center}.heti figure>img{display:block;margin-inline-start:auto;margin-inline-end:auto}.heti hr{width:30%;height:1px;margin-block-start:48px;margin-block-end:47px;margin-inline-start:auto;margin-inline-end:auto;border:0;background-color:#ddd}.heti p{margin-block-start:12px;margin-block-end:24px;text-align:justify}.heti p:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti p:not(:lang(zh)){text-align:left}.heti pre{margin-block-start:12px;margin-block-end:12px;margin-inline-start:0;margin-inline-end:0;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;overflow:auto;white-space:pre;word-wrap:normal;background-color:rgba(0,0,0,0.054);border-radius:4px}.heti h1,.heti h2,.heti h3,.heti h4,.heti h5,.heti h6{position:relative;margin-block-start:24px;margin-block-end:12px;font-weight:600}.heti h1{margin-block-end:24px;font-size:32px;line-height:48px;letter-spacing:1.6px}.heti h2{font-size:24px;line-height:36px;letter-spacing:1.2px}.heti h3{font-size:20px;line-height:36px;letter-spacing:1px}.heti h4{font-size:18px;line-height:24px}.heti h5{font-size:16px;line-height:24px}.heti h6{font-size:14px;line-height:24px}.heti h1+h2,.heti h2+h3,.heti h3+h4,.heti h4+h5,.heti h5+h6{margin-block-start:12px}.heti ul,.heti ol,.heti dl{margin-block-start:12px;margin-block-end:24px}.heti ul,.heti ol{padding-inline-start:2em}.heti ul ul,.heti ul ol,.heti ol ul,.heti ol ol{margin-block-start:0;margin-block-end:0}.heti ul{list-style-type:disc}.heti ol{list-style-type:decimal}.heti ul ul,.heti ol ul{list-style-type:circle}.heti ul ul ul,.heti ul ol ul,.heti ol ul ul,.heti ol ol ul{list-style-type:square}.heti li{list-style-type:unset}.heti table{box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border:1px solid #ccc;margin-block-start:12px;margin-block-end:24px;margin-inline-start:auto;margin-inline-end:auto}.heti th,.heti td{border:1px solid #ccc;padding:8px 16px}.heti caption{caption-side:bottom;font-size:14px;line-height:24px}.heti a{text-decoration:none}.heti a:hover{padding-block-end:1px;border-block-end:1px solid currentColor;text-decoration:none}.heti abbr[title]{padding-block-end:1px;border-block-end:1px dotted;text-decoration:none;cursor:help}.heti b,.heti strong{font-weight:600}.heti code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:14px}.heti dfn{font-weight:600}.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dfn:not(:lang(zh)){font-weight:400}.heti em{font-weight:600}.heti figcaption{display:inline-block;vertical-align:top;font-size:14px;text-align:start}.heti i{font-style:italic}.heti ins,.heti u{padding-block-end:1px;border-block-end:1px solid;text-decoration:none}.heti mark{padding-block-start:2px;padding-block-end:2px;padding-inline-start:1px;padding-inline-end:1px;margin-inline-start:1px;margin-inline-end:1px;background-color:rgba(255,247,0,0.88)}.heti q{quotes:"「" "」" "『" "』"}.heti q:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti q:not(:lang(zh)){quotes:initial;quotes:auto}.heti rt{font-size:0.875em;color:rgba(0,0,0,0.88)}.heti small{font-size:0.875em}.heti strong{font-weight:600}.heti sub,.heti sup{position:relative;margin-inline-start:0.25em;margin-inline-end:0.25em;font-size:0.75em;line-height:1;vertical-align:baseline}.heti sub{bottom:-0.25em}.heti sup{top:-0.5em}.heti summary{padding-left:1em;outline:0;cursor:pointer}.heti summary::-webkit-details-marker{width:0.6em;margin-inline-end:0.4em}.heti u[title]{cursor:help;border-block-end-color:rgba(0,0,0,0.54);border-block-end-width:3px;border-block-end-style:double}.heti address,.heti cite,.heti dfn,.heti dt,.heti em{font-style:normal}.heti address:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti address:not(:lang(zh)),.heti cite:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti cite:not(:lang(zh)),.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dfn:not(:lang(zh)),.heti dt:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti dt:not(:lang(zh)),.heti em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti em:not(:lang(zh)){font-style:italic}.heti-vertical{max-width:none;max-height:42em;writing-mode:vertical-rl;letter-spacing:0.125em}.heti-poetry,.heti-ancient{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-poetry h1,.heti-poetry h2,.heti-poetry h3,.heti-ancient h1,.heti-ancient h2,.heti-ancient h3{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:800;text-align:center}.heti-poetry h1 .heti-meta,.heti-poetry h2 .heti-meta,.heti-poetry h3 .heti-meta,.heti-ancient h1 .heti-meta,.heti-ancient h2 .heti-meta,.heti-ancient h3 .heti-meta{display:block;font-weight:400}@media screen and (min-width: 640px){.heti-poetry h1 .heti-meta,.heti-poetry h2 .heti-meta,.heti-poetry h3 .heti-meta,.heti-ancient h1 .heti-meta,.heti-ancient h2 .heti-meta,.heti-ancient h3 .heti-meta{position:absolute;line-height:inherit;display:inline;margin-block-start:4px;margin-inline-start:8px}}.heti-poetry .heti-verse,.heti-ancient .heti-verse{text-align:center;text-indent:0}.heti-poetry p,.heti-ancient p{text-indent:2em}.heti-interlinear-annotation p{margin-block-start:0;margin-block-end:0;line-height:2.25;text-indent:2em}.heti-interlinear-annotation em{-webkit-text-emphasis:filled circle;-webkit-text-emphasis-position:under;font-weight:400}.heti-interlinear-annotation em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)),.heti-interlinear-annotation em:not(:lang(zh)){-webkit-text-emphasis:none}.heti-sans{font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-serif{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic{font-family:"Times New Roman",Times,"Noto Serif","Noto Serif CJK SC","Noto Serif CJK","Source Han Serif SC",‘Source Han Serif’,source-han-serif-sc,"Songti SC","Songti TC",STSong,SimSun,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic h1,.heti-classic h2,.heti-classic h3,.heti-classic h4,.heti-classic h5,.heti-classic h6{font-weight:800}.heti-classic h1,.heti-classic h2,.heti-classic h3,.heti-classic h4,.heti-classic h5,.heti-classic h6,.heti-classic blockquote,.heti-classic cite,.heti-classic q{font-family:"Times New Roman",Times,"Kaiti SC",STKaiti,serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-classic figcaption,.heti-classic caption,.heti-classic sup,.heti-classic sub,.heti-classic th{font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti-x-large{font-size:20px;line-height:30px}.heti-large{font-size:18px;line-height:24px}.heti-small{font-size:14px;line-height:24px}.heti-x-small{font-size:12px;line-height:18px}.heti .heti-list-latin{list-style-type:upper-latin}.heti .heti-list-latin ol{list-style-type:lower-roman}.heti .heti-list-latin ol ol{list-style-type:lower-latin}.heti .heti-list-han{list-style-type:cjk-ideographic}.heti .heti-list-han ol{list-style-type:decimal}.heti .heti-list-han ol ol{list-style-type:decimal-leading-zero}.heti .heti-columns-2{max-width:none;column-count:2;column-gap:2em}.heti .heti-columns-3{max-width:none;column-count:3;column-gap:2em}.heti .heti-columns-4{max-width:none;column-count:4;column-gap:2em}.heti .heti-columns-16em{max-width:none;column-width:16em;column-gap:2em}.heti .heti-columns-20em{max-width:none;column-width:20em;column-gap:2em}.heti .heti-columns-24em{max-width:none;column-width:24em;column-gap:2em}.heti .heti-columns-28em{max-width:none;column-width:28em;column-gap:2em}.heti .heti-columns-32em{max-width:none;column-width:32em;column-gap:2em}.heti .heti-columns-36em{max-width:none;column-width:36em;column-gap:2em}.heti .heti-columns-40em{max-width:none;column-width:40em;column-gap:2em}.heti .heti-columns-44em{max-width:none;column-width:44em;column-gap:2em}.heti .heti-columns-48em{max-width:none;column-width:48em;column-gap:2em}.heti .heti-meta{line-height:24px;text-align:center;text-indent:0}.heti .heti-anchor{position:absolute;left:-1em;width:1em;font-family:"Helvetica Neue",Helvetica,Arial,"Pingfang SC","Pingfang TC","Heiti SC","Heiti TC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:400;line-height:inherit;text-align:center;opacity:0;transition:opacity 0.2s linear}.heti .heti-anchor:hover{text-decoration:none;border-block-end:0}.heti h1,.heti h2,.heti h3,.heti h4,.heti h5,.heti h6{position:relative}.heti h1:hover .heti-anchor,.heti h2:hover .heti-anchor,.heti h3:hover .heti-anchor,.heti h4:hover .heti-anchor,.heti h5:hover .heti-anchor,.heti h6:hover .heti-anchor{opacity:1}.heti .heti-hang{position:absolute;line-height:inherit} + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: base reset and entry styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: heading styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: list styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: table styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: inline element styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define global font stacks. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define writing mode styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define column styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define ancient styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define interlinear annotation styles. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define block helper classes. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +/* + * Author: Sivan [sun.sivan@gmail.com] + * Description: define inline helper classes. + */ +/** + * Author: Sivan [sun.sivan@gmail.com] + * Description: define variables, alias etc. + */ +/* 字体 Fonts */ +/* 行 Lines */ +/* 段落 Paragraphs */ +/* 栏 Columns */ +/* 开发用配置项 Develop Configs */ +/* 混合 Mix-ins */ +/* 函数 Functions */ +.heti { + max-width: 42em; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + /* 兼容性处理 */ + /* 段落相关 */ + /* 列表相关 */ } + .heti::before, .heti::after { + content: ""; + display: table; } + .heti::after { + clear: both; } + .heti > *:first-child, + .heti section > *:first-child, + .heti td > *:first-child { + margin-block-start: 0 !important; } + .heti > *:last-child, + .heti section > *:last-child, + .heti td > *:last-child { + margin-block-end: 0 !important; } + .heti blockquote { + margin-block-start: 12px; + margin-block-end: 24px; + margin-inline-start: 32px; + margin-inline-end: 32px; + padding-block-start: 12px; + padding-block-end: 12px; + padding-inline-start: 16px; + padding-inline-end: 16px; + background-color: rgba(0, 0, 0, 0.054); } + .heti figure { + display: block; + text-align: center; } + .heti figure > img { + display: block; + margin-inline-start: auto; + margin-inline-end: auto; } + .heti hr { + width: 30%; + height: 1px; + margin-block-start: 48px; + margin-block-end: 47px; + margin-inline-start: auto; + margin-inline-end: auto; + border: 0; + background-color: #ddd; } + .heti p { + margin-block-start: 12px; + margin-block-end: 24px; + text-align: justify; } + .heti p:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti p:not(:lang(zh)) { + text-align: start; } + .heti pre { + margin-block-start: 12px; + margin-block-end: 12px; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block-start: 12px; + padding-block-end: 12px; + padding-inline-start: 16px; + padding-inline-end: 16px; + overflow: auto; + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + white-space: pre; + word-wrap: normal; + background-color: rgba(0, 0, 0, 0.054); + border-radius: 4px; } + .heti h1, + .heti h2, + .heti h3, + .heti h4, + .heti h5, + .heti h6 { + position: relative; + margin: 0; + margin-block-start: 24px; + margin-block-end: 12px; + font-weight: 600; } + .heti h1 { + margin-block-end: 24px; + font-size: 32px; + line-height: 48px; + letter-spacing: 1.6px; } + .heti h2 { + font-size: 24px; + line-height: 36px; + letter-spacing: 1.2px; } + .heti h3 { + font-size: 20px; + line-height: 36px; + letter-spacing: 1px; } + .heti h4 { + font-size: 18px; + line-height: 24px; } + .heti h5 { + font-size: 16px; + line-height: 24px; } + .heti h6 { + font-size: 14px; + line-height: 24px; } + .heti h1 + h2, + .heti h2 + h3, + .heti h3 + h4, + .heti h4 + h5, + .heti h5 + h6 { + margin-block-start: 12px; } + .heti ul, + .heti ol, + .heti dl { + margin-block-start: 12px; + margin-block-end: 24px; } + .heti ul, + .heti ol { + padding-inline-start: 2em; } + .heti ul ul, + .heti ul ol, + .heti ol ul, + .heti ol ol { + margin-block-start: 0; + margin-block-end: 0; } + .heti ul { + list-style-type: disc; } + .heti ol { + list-style-type: decimal; } + .heti ul ul, + .heti ol ul { + list-style-type: circle; } + .heti ul ul ul, + .heti ul ol ul, + .heti ol ul ul, + .heti ol ol ul { + list-style-type: square; } + .heti li { + list-style-type: unset; } + .heti table { + box-sizing: border-box; + table-layout: fixed; + border-collapse: collapse; + border: 1px solid #ccc; + margin-block-start: 12px; + margin-block-end: 24px; + margin-inline-start: auto; + margin-inline-end: auto; } + .heti th, + .heti td { + border: 1px solid #ccc; + padding: 8px 16px; } + .heti caption { + caption-side: bottom; + margin-block-start: 2px; + margin-block-end: -4px; + font-size: 14px; + line-height: 24px; } + .heti a { + text-decoration: none; } + .heti a:hover { + padding-block-end: 1px; + border-block-end: 1px solid currentColor; + text-decoration: none; } + .heti abbr[title] { + padding-block-end: 1px; + border-block-end: 1px dotted; + text-decoration: none; + cursor: help; } + .heti b, + .heti strong { + font-weight: 600; } + .heti code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px; } + .heti dfn { + font-weight: 600; } + .heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti dfn:not(:lang(zh)) { + font-weight: 400; } + .heti em { + font-weight: 600; } + .heti figcaption { + display: inline-block; + vertical-align: top; + font-size: 14px; + text-align: start; } + .heti i { + font-style: italic; } + .heti ins, + .heti u { + padding-block-end: 1px; + border-block-end: 1px solid; + text-decoration: none; } + .heti mark { + padding-block-start: 2px; + padding-block-end: 2px; + padding-inline-start: 1px; + padding-inline-end: 1px; + margin-inline-start: 1px; + margin-inline-end: 1px; + background-color: rgba(255, 247, 0, 0.88); } + .heti q { + quotes: "「" "」" "『" "』"; } + .heti q:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti q:not(:lang(zh)) { + quotes: initial; + quotes: auto; } + .heti rt { + font-size: 0.875em; + color: rgba(0, 0, 0, 0.88); } + .heti small { + font-size: 0.875em; } + .heti strong { + font-weight: 600; } + .heti sub, + .heti sup { + position: relative; + margin-inline-start: 0.25em; + margin-inline-end: 0.25em; + font-size: 0.75em; + font-family: "Helvetica Neue", Helvetica, Arial, "Pingfang SC", "Heiti SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + line-height: 1; + vertical-align: baseline; } + .heti sub { + bottom: -0.25em; } + .heti sup { + top: -0.5em; } + .heti summary { + padding-left: 1em; + outline: 0; + cursor: pointer; } + .heti summary::-webkit-details-marker { + width: 0.6em; + margin-inline-end: 0.4em; } + .heti u[title] { + cursor: help; + border-block-end-color: rgba(0, 0, 0, 0.54); + border-block-end-width: 3px; + border-block-end-style: double; } + .heti address, + .heti cite, + .heti dfn, + .heti dt, + .heti em { + font-style: normal; } + .heti address:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti address:not(:lang(zh)), + .heti cite:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), + .heti cite:not(:lang(zh)), + .heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), + .heti dfn:not(:lang(zh)), + .heti dt:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), + .heti dt:not(:lang(zh)), + .heti em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), + .heti em:not(:lang(zh)) { + font-style: italic; } + .heti, .heti--sans { + font-family: "Helvetica Neue", Helvetica, Arial, "Pingfang SC", "Heiti SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--serif { + font-family: "Times New Roman", Times, "Songti SC", STSong, SimSun, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--classic { + font-family: "Times New Roman", Times, "Songti SC", STSong, SimSun, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--classic h1, + .heti--classic h2, + .heti--classic h3, + .heti--classic h4, + .heti--classic h5, + .heti--classic h6 { + font-weight: 800; } + .heti--classic h1, + .heti--classic h2, + .heti--classic h3, + .heti--classic h4, + .heti--classic h5, + .heti--classic h6, + .heti--classic blockquote, + .heti--classic cite, + .heti--classic q { + font-family: "Times New Roman", Times, "Kaiti SC", STKaiti, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--classic figcaption, + .heti--classic caption, + .heti--classic th { + font-family: "Helvetica Neue", Helvetica, Arial, "Pingfang SC", "Heiti SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--columns-1, .heti--columns-2, .heti--columns-3, .heti--columns-4, .heti--columns-16em, .heti--columns-20em, .heti--columns-24em, .heti--columns-28em, .heti--columns-32em, .heti--columns-36em, .heti--columns-40em, .heti--columns-44em, .heti--columns-48em, .heti comma { + max-width: none; + column-gap: 2em; } + .heti--columns-1 p, .heti--columns-2 p, .heti--columns-3 p, .heti--columns-4 p, .heti--columns-16em p, .heti--columns-20em p, .heti--columns-24em p, .heti--columns-28em p, .heti--columns-32em p, .heti--columns-36em p, .heti--columns-40em p, .heti--columns-44em p, .heti--columns-48em p, .heti comma p { + margin-block-start: 6px; + margin-block-end: 12px; + text-indent: 2em; } + .heti--columns-1 { + column-count: 1; } + .heti--columns-2 { + column-count: 2; } + .heti--columns-3 { + column-count: 3; } + .heti--columns-4 { + column-count: 4; } + .heti--columns-16em { + column-width: 16em; } + .heti--columns-20em { + column-width: 20em; } + .heti--columns-24em { + column-width: 24em; } + .heti--columns-28em { + column-width: 28em; } + .heti--columns-32em { + column-width: 32em; } + .heti--columns-36em { + column-width: 36em; } + .heti--columns-40em { + column-width: 40em; } + .heti--columns-44em { + column-width: 44em; } + .heti--columns-48em { + column-width: 48em; } + .heti--vertical { + max-width: none; + max-height: 42em; + writing-mode: vertical-rl; + letter-spacing: 0.125em; } + .heti--vertical h1, + .heti--vertical h2, + .heti--vertical h3, + .heti--vertical h4, + .heti--vertical h5, + .heti--vertical h6 { + text-align: start; } + .heti--ancient, .heti--poetry { + font-family: "Times New Roman", Times, "Songti SC", STSong, SimSun, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } + .heti--ancient h1, + .heti--ancient h2, + .heti--ancient h3, + .heti--ancient h4, + .heti--ancient h5, + .heti--ancient h6, .heti--poetry h1, + .heti--poetry h2, + .heti--poetry h3, + .heti--poetry h4, + .heti--poetry h5, + .heti--poetry h6 { + font-family: "Times New Roman", Times, "Kaiti SC", STKaiti, serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-weight: 800; + text-align: center; } + .heti--ancient h1 .heti-meta, + .heti--ancient h2 .heti-meta, + .heti--ancient h3 .heti-meta, + .heti--ancient h4 .heti-meta, + .heti--ancient h5 .heti-meta, + .heti--ancient h6 .heti-meta, .heti--poetry h1 .heti-meta, + .heti--poetry h2 .heti-meta, + .heti--poetry h3 .heti-meta, + .heti--poetry h4 .heti-meta, + .heti--poetry h5 .heti-meta, + .heti--poetry h6 .heti-meta { + font-weight: 400; } + @media screen and (min-width: 640px) { + .heti--ancient h1 .heti-meta, + .heti--ancient h2 .heti-meta, + .heti--ancient h3 .heti-meta, + .heti--ancient h4 .heti-meta, + .heti--ancient h5 .heti-meta, + .heti--ancient h6 .heti-meta, .heti--poetry h1 .heti-meta, + .heti--poetry h2 .heti-meta, + .heti--poetry h3 .heti-meta, + .heti--poetry h4 .heti-meta, + .heti--poetry h5 .heti-meta, + .heti--poetry h6 .heti-meta { + position: absolute; + line-height: inherit; + text-indent: 0; + display: inline; + margin-block-start: 4px; + margin-inline-start: 8px; } } + .heti--ancient .heti-meta, .heti--poetry .heti-meta { + line-height: 24px; + text-align: center; + text-indent: 0; } + .heti--ancient p { + text-indent: 2em; } + .heti--poetry p { + text-align: center; + text-indent: 0; } + .heti--annotation p { + margin-block-start: 0; + margin-block-end: 0; + line-height: 2.25; + text-indent: 2em; } + .heti--annotation em { + -webkit-text-emphasis: filled circle; + -webkit-text-emphasis-position: under; + font-weight: 400; } + .heti--annotation em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti--annotation em:not(:lang(zh)) { + -webkit-text-emphasis: none; } + .heti--annotation .heti-meta { + margin-block-start: 12px; + margin-block-end: 24px; } + .heti .heti-meta { + display: block; + text-indent: 0; } + .heti .heti-verse { + text-align: center; + text-indent: 0; } + .heti .heti-large { + font-size: 18px; + line-height: 24px; } + .heti .heti-x-large { + font-size: 20px; + line-height: 30px; } + .heti .heti-small { + font-size: 14px; + line-height: 24px; } + .heti .heti-x-small { + font-size: 12px; + line-height: 18px; } + .heti .heti-list-latin { + list-style-type: upper-latin; } + .heti .heti-list-latin ol { + list-style-type: lower-roman; } + .heti .heti-list-latin ol ol { + list-style-type: lower-latin; } + .heti .heti-list-han { + list-style-type: cjk-ideographic; } + .heti .heti-list-han ol { + list-style-type: decimal; } + .heti .heti-list-han ol ol { + list-style-type: decimal-leading-zero; } + .heti .heti-hang { + position: absolute; + line-height: inherit; + text-indent: 0; } + .heti .heti-em { + -webkit-text-emphasis: filled circle; + -webkit-text-emphasis-position: under; } + .heti .heti-em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti .heti-em:not(:lang(zh)) { + -webkit-text-emphasis: none; } +eti .heti-em:not(:lang(zh)):not(:lang(ja)):not(:lang(kr)), .heti .heti-em:not(:lang(zh)) { + -webkit-text-emphasis: none; } diff --git a/index.css b/index.css index 5767b4d..aadadab 100644 --- a/index.css +++ b/index.css @@ -49,7 +49,7 @@ a { outline: 1px solid transparent; } -.article[data-bg-grid="page-grid-24"] { +.article[data-bg-grid="grid-24"] { background-size: 100% 24px; background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #f8f8f8 1px, rgba(255, 255, 255, 0) 33px), @@ -57,25 +57,25 @@ a { outline-color: #eee; } -.article[data-bg-grid="page-grid-24"], -.article[data-bg-grid="page-grid-24"]:hover { +.article[data-debug-mode][data-bg-grid="grid-24"], +.article[data-bg-grid="grid-24"]:hover { background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #eee 1px, rgba(255, 255, 255, 0) 33px), linear-gradient(rgba(255, 255, 255, 0) 23px, #eee 1px); } -.article[data-bg-grid="page-grid-24"] .heti-vertical { +.article[data-bg-grid="grid-24"] .heti--vertical { background-size: 24px 100%; background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 23px, #f8f8f8 1px); outline: 1px solid #eee; } -.article[data-bg-grid="page-grid-24"] .heti-vertical, -.article[data-bg-grid="page-grid-24"]:hover .heti-vertical { +.article[data-debug-mode][data-bg-grid="grid-24"] .heti--vertical, +.article[data-bg-grid="grid-24"]:hover .heti--vertical { background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 23px, #eee 1px); } -.article[data-bg-grid="page-grid-12"] { +.article[data-bg-grid="grid-12"] { background-size: 100% 12px; background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #f8f8f8 1px, rgba(255, 255, 255, 0) 33px), @@ -83,21 +83,21 @@ a { outline-color: #eee; } -.article[data-bg-grid="page-grid-12"], -.article[data-bg-grid="page-grid-12"]:hover { +.article[data-debug-mode][data-bg-grid="grid-12"], +.article[data-bg-grid="grid-12"]:hover { background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 31px, #eee 1px, rgba(255, 255, 255, 0) 33px), linear-gradient(rgba(255, 255, 255, 0) 11px, #eee 12px); } -.article[data-bg-grid="page-grid-12"] .heti-vertical { +.article[data-bg-grid="grid-12"] .heti--vertical { background-size: 12px 100%; background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 11px, #f8f8f8 1px); outline: 1px solid #eee; } -.article[data-bg-grid="page-grid-12"] .heti-vertical, -.article[data-bg-grid="page-grid-12"]:hover .heti-vertical { +.article[data-debug-mode][data-bg-grid="grid-12"] .heti--vertical, +.article[data-bg-grid="grid-12"]:hover .heti--vertical { background-image: linear-gradient(to left, transparent 11px, #eee 1px); } @@ -110,8 +110,7 @@ a { /** 页脚样式 **/ .fn { max-width: 42em; - margin-block-start: 12px; - margin-block-end: 12px; + margin-block-start: 24px; margin-inline-start: auto; margin-inline-end: auto; padding-block-start: 4px; @@ -218,6 +217,41 @@ heti-jiya { background-color: #fff; } + .article h1, + .article h2, + .article h3, + .article h4, + .article h5, + .article h6 { + position: relative; + } + + .article h1:hover .anchor, + .article h2:hover .anchor, + .article h3:hover .anchor, + .article h4:hover .anchor, + .article h5:hover .anchor, + .article h6:hover .anchor { + opacity: 1; + } + + .article .anchor { + position: absolute; + left: -1em; + width: 1em; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: inherit; + text-align: center; + opacity: 0; + transition: opacity 0.2s linear; + } + + .article .anchor:hover { + text-decoration: none; + border: 0; + } + .card { left: -20%; width: 140%; diff --git a/index.html b/index.html index 709e548..65fa2f6 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@
    -
    +

    赫蹏

    古代称用以书写的小幅绢帛。后亦以借指纸。《汉书·外戚传下·孝成赵皇后》:武(籍武 )发篋中,有裹药二枚,赫蹏书。颜师古注:邓展曰:赫音兄弟鬩墙之鬩。应劭曰:赫蹏,薄小纸也。 赵彦卫 《云麓漫钞》卷七:《赵后传》所谓『赫蹏』者,注云薄小纸,然其寔亦縑帛。
    @@ -23,7 +23,7 @@
  • 效果演示
      -
    • 示例1:出师表
    • +
    • 示例1:古文
    • 示例2:诗词
    • 示例3:行间注
    • 示例4:英文演示
    • @@ -44,23 +44,26 @@ -

      介绍#

      -

      赫蹏(hètí)是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来,可以为网站的读者带来更好的文章阅读体验。由于它不同于传统的网页样式重置,而是专注于正文区域的样式增强,因此可以很好的与常见的 CSS 样式重置方案共存。它的主要功能有:

      +

      介绍#

      +

      赫蹏hètí)是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来,可以为网站的读者带来更好的文章阅读体验。由于它不同于传统的网页样式重置,而是专注于正文区域的样式增强,因此可以很好的与常见的 CSS 样式重置方案共存。它的主要功能有:

      • 全标签样式统一;
      • 贴合网格的排版;
      • -
      • 内置多种预设字体族(仅限桌面端);
      • -
      • 支持横排、竖排两种排版;
      • -
      • 支持诗词、行间注版式;
      • -
      • 兼容 normalize.cssCSS Reset[1]等常见样式重置;
      • +
      • 预置多种预设字体族(仅限桌面端);
      • +
      • 预置横排、直排(竖排)样式;
      • +
      • 预置古文、诗词样式;
      • +
      • 预置行间注排版样式;
      • +
      • 预置多栏排版样式;
      • +
      • 兼容normalize.cssCSS Reset[1]
      • 移动端支持;
      • +
      • 基于BEM[2]命名;
      • ……

      总之,用上就会变好看。


      -

      使用方法#

      +

      使用方法#

      赫蹏的使用方法很简单,只需要引入样式文件并设定作用范围即可:

      1. @@ -81,11 +84,12 @@
        -

        效果示例#

        +

        效果示例#

        +

        本站已全页应用了赫蹏样式,下面是赫蹏在特殊排版下的效果演示。

        - 示例1:出师表 + 示例1:古文
        -
        +

        出师表

        作者:諸葛亮(181年~234年10月8日)

        先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

        @@ -104,7 +108,7 @@
        示例2:诗词
        -
        +

        一剪梅·红藕香残玉簟秋[宋]李清照

        红藕香残玉簟秋。轻解罗裳,独上兰舟
        @@ -112,9 +116,11 @@ 花自飘零水自流。一种相思,两处闲愁
        此情无计可消除,才下眉头,却上心头

        -
        +
        +
        +

        丑奴儿·书博山道中壁[宋]辛弃疾

        -

        +

        少年不识愁滋味,爱上层楼
        爱上层楼,为赋新词强说愁
        而今识尽愁滋味,欲说还休
        @@ -124,10 +130,10 @@

        -
        +
        示例3:行间注
        -
        +

        庖丁解牛

        作者:庄周(公元前369~公元前286年)

        吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为恶无近刑。缘督以为经,可以保身,可以全生,可以养亲,可以尽年。

        @@ -152,12 +158,12 @@
        -

        多栏排版#

        +

        多栏排版#

        赫蹏预置了多种多栏布局类,可以按栏数或栏宽进行设置。

        查看使用说明 -

        为容器元素添加名为 heti-columns-2 的 class 即可实现三栏排版。

        -
        <div class="heti heti-columns-2"></div>
        +

        为容器元素添加名为 heti--columns-2 的 class 即可实现三栏排版。

        +
        <div class="heti heti--columns-2"></div>
        @@ -169,39 +175,44 @@ - + - +
        按数量heti-columns-3heti--columns-3 2, 3, 4
        按宽度heti-columns-16emheti--columns-16em 16em, 20em, 24em, … +4em, … , 48em
        -
        -

        以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

        -

        以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

        -

        以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

        -

        以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。以美化中文方块字排版为目标,支援横排、竖排。假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

        +
        +

        先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

        +

        宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。

        +

        侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。

        +

        将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。

        +

        亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。

        +

        臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。

        +

        先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。

        +

        愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。

        +

        今当远离,临表涕零,不知所言。

        多栏排版演示

        -

        垂直排版#

        +

        垂直排版#

        赫蹏预置了传统的垂直方向排版,同样贴合栅格。

        查看使用说明 -

        为容器元素添加名为 heti-vertical 的 class 即可实现垂直布局:

        +

        为容器元素添加名为 heti--vertical 的 class 即可实现垂直布局:

        <div class="heti heti-vertical"></div>
        -
        +

        出師表

        作者:諸葛亮(181年-234年10月8日)

        先帝創業未半,而中道崩殂;今天下三分,益州疲弊,此誠危急存亡之秋也﹗然侍衞之臣,不懈於內;忠志之士,忘身於外者,蓋追先帝之殊遇,欲報之於陛下也。

        @@ -218,14 +229,14 @@
        -

        排版原则#

        +

        排版原则#

        核心

        以美化中文方块字排版为目标,假定作用范围是网页中的文章区域(含标题、正文、元信息等),不包含网页导航、表单、侧边栏等区域(它们也不需要这套格式排版)。

        使用heti.css时建议搭配良好的中文书写习惯,即:使用正确的 HTML 标签、正确的引号、中文全角标点等。使用 Markdown 书写文章将助你一臂之力。

        字号

        heti.css 采用 16px 作为默认字号。在文字较大时(作用于标题等情况),会适当地增加字间距以便获得更好地可读性。

        字体

        -

        参考《中文排版需求[2]》中描述的四种常见书籍排版字体:宋体、楷体、黑体、仿宋。赫蹏提供黑体、宋体和传统三种字体风格,前两者分别对应无衬线、衬线字体族。

        +

        参考《中文排版需求[3]》中描述的四种常见书籍排版字体:宋体、楷体、黑体、仿宋。赫蹏提供黑体、宋体和传统三种字体风格,前两者分别对应无衬线、衬线字体族。

        查看对照表 @@ -351,13 +362,13 @@
        -

        附录#

        -

        兼容性#

        +

        附录#

        +

        兼容性#

        赫蹏在间距、边框、位置属性上采用了 Logical properties,在所有现代浏览器上表现良好。

        - 查看兼容性详情 + 查看兼容性列表
        - + @@ -368,23 +379,24 @@ - - - - + + + +
        兼容性列表兼容性列表(未经充分测试)
        Chrome
        兼容性123 453.13暂未支持79
        -

        标签示例表#

        -
        - 标签示例表 +

        标签示例表#

        +
        + 查看标签示例表 + - - - + + + @@ -402,14 +414,39 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + @@ -421,7 +458,7 @@
        -

        待开发功能#

        +

        待开发功能#

        • ️☑ 中、西文混排
        • ☑ 标点挤压
        • @@ -434,20 +471,21 @@
          1. CSS Reset:指代类似 Eric Meyer's Reset CSS 的样式重置方案
          2. -
          3. 《中文排版需求》:https://w3c.github.io/clreq/
          4. +
          5. BEM:由 Yandex 公司创造的命名方法 https://en.bem.info/
          6. +
          7. 《中文排版需求》:https://w3c.github.io/clreq/
          @@ -464,4 +502,4 @@ } - \ No newline at end of file + From 87ce196934ea7e839fe8e93d2005d04778545128 Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 12:47:31 +0800 Subject: [PATCH 007/127] Updates --- favicon.png | Bin 0 -> 11927 bytes favicon.svg | 16 ++++++++++++++++ index.html | 1 + 3 files changed, 17 insertions(+) create mode 100644 favicon.png create mode 100644 favicon.svg diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d0977d9240e2f94f3123f1395d86fe7e3bd27efc GIT binary patch literal 11927 zcmcgyg;x~J*9K{j?p|V-?rwHjV(F5u1tbKd8|0-~Sh~BrQ@Xpm1f)R`5ClX-`TYG8 z-#Ig9=G=Ma-sv+l_d#fDD&ynQ;G&?Q;KNj)x+o~9N&k!3=>H^~9eT(7!>e$LPK`^x^fzRDKzo%i=VLLcORJ@Wq%uGj=> zO2xWMM0Ibi_|LCd!&f`8R<>4d*95O25yO;)lZ zUwG#?j6D)#F8I8l{Dhz*S9EyBtDiBQ9V~c+>_?VJ!&3$ZKR1kWKNad1c$@Ce?}Onp zlj9@Pk5~%nJ<(VUbo&@mM})7J5C6gV!?7|Em#-K9S7k8@D+|$wen47(budI6@tt3& zIhCl9Lx;1mJg;hI)F8#W-r%e=ju-n7ZfDKr*koE8_)P)KU<>LHNoozC1EfDJ){!$q;-$G1R+YK>yUCpSby9Mi#_R-&x#OB%XNis_+s0i7Pw8}>4fb;G#8??xQWTJ2~ z^}6@goUz}n1O;%w9BpI#>SOxqgFWoDan^B%B{F~8zR?X7qZPXH3&4;DMp32~K7Y=N zD=s`~!xpiXxx2^l)ek-0$7v-56cz0_bEHk}%UzcV9GM$9`I$=5mb<8+x- zg(y1f`w{ukz*QEMhM?NUf;V@(vP!QgHEO@^8{#i@5jN9!6GzXnBq8EJAeOX*k`k^v z*90_^6}uNGl?7Y@2MSrjVB^V}x0wZVV%=+nX^IzjF~df^87+Ub$Rx#tPiKWoQOunR zNOwlPPvCZFwR+v~>5y)rkx?g7W8#G)?55&3oBx2Q3Xi>Bv7kv2i)0aTO=-*>wKowb zJi8jxaVd^-b~t)@Wu{O&M`KbB78Q`??5O%S4Y7+XQ_y_=b~3eC`db)=2#vaLMs5lWny?N_@-#vth5 z?Jt1eON`kuHWoX!8Q3;b>Cb~Q|Ar;7QS0MiMquF}TS`0rQMO6trJZMcq0Wax07KjD ztyi${=O27X1$RBvUvk-<6zZ?XhKhGEE}pGgjgYER1`lKTDo0xZ!wefASc0ksP> z#zHst@jO0OHt`<9uQQd;>6dIir)U{JStcrwQ0(0Bpl6zDDm}_Ht4NrpC>TZoR;>u= z>Qmjj7ToZgcK@=cgG6H;k}0>0Q^*Q$Up9{4a${bcuAM{U6`?i{YuGEx3lq% z62aX$#O_xjOl#IpwW(F)dHS7{J8T=d6T%Npb%K6RE|cZi($6nW|DtzflND{ju9X8t zP`flkE3Y?qfS?*Z@5Q~##^f*@RvWabo5JJTfd96tN_(xH4e_qr35@Ys2RL}H&1uJF z8f`T{n5F8S*E~|;HPMO{_Vuk8g??z@4nNSf4T0x6EtT{;{(Qvpe+^_yC6EtVi_%GC zBj4i~fG&iiKCXSA`dCUsD;GJgJN~1wqJ|bG%Ybl;WCUPrEA|9$n)z|hw9?41N$oTZ651KWgbeYx6O2KW=>?nx@R&H3hw!(*9u#=PeRckWqWXMvnlej~>&ymeWQ6n@h5|piIRe9wh zMT+5aK+3Z(ZF4^xw}np~%~I7`3+UycW{BnYr0wdr$EQoKPCKtU9agfir1a03PeuNt zm!Gx0b>m%g`{}I9=hfqd)YqtPQtlDI#QiBgPTNN|4Qs>IOH_aVY)51Oz)!7XQq)$w>0lBzZXbbJyN{i*^p7;V$%XN|bR!6~UCm$l3-9E@e`Px>%{`e&K(JgVzmc`WZlY`jDbAk;wlv)9LxI=i&WGTmd4gyLgfM&)+ zju>NVG48~Yp<3>rEPG1fia|3%R6ktJ+k(dPju1@g39P`O&3LjYvdt=3lX3GG|Hc?)k1p=Mfvl^-|$CK&shCr^$LxvoW7fVgY0I zL=3bB{U!3(%!b+!60Z&>%%3wPkyu2rtsJY@A;NEGIK!^{*2*;Q(MMD|pN^(=CUJ+!#w331icPHx6_I;ohx{rRLQ zp08H2&wJNd$=ea{fjMC&imF=5gK0ysexzJCBK;cToy)2Egi-IZb56ddmtA_ydq=YC z+A|N9Wbd)T=CnfZ_;t?ZLw}T<9bX9XfLm5X#$KiAJ21THc`yc8SN73f%HKJ}3fe&fDkYg`irTmD(e>7gAU4kN!?Zoyv4+!)%*8TLK>heA`HtMl0g? zK*O2ohEu`slHyB~U2N24V0WxolK%W>cvB)$ujWS}G z3fZTc>i5yp6Wwxkg<&c8wHl1iF(<6D8X}5F>4SI|F(Ravu2f)?B<&ZB~Gug~W;mv>x#Ug}Qz5 znN4ndpeT&A_$-s^a%37>w(wctFCSNcP3_6JQ_F^Vn_Xs%s+n0!(^4*3IzI~6>$i)1 zwP(ETQ@$;(f?!ih`nZ-lM&uuY^&j-WUBBUlY-j6IG143x<_FIAsW~ihU<3CGzl5Y08|jNU#SBg>L;;mxZE_W${&{^QQPWmDR75Q}MW!4MIlI9OrRL z?9N{!96C#`^$mOoRpAWXdU?Z~L9qrV9UAfH?}}sLJcga4GIWDKsbcNe>xz(yqKYOi z2P&2U2=yCiO^nULVrJEmuf^Y=iW7N<%pF#ePer0FEDg&ylU3>yqTc}W;y1qmngi~f z3YRQubA;b^rlg`UsA4JDqsV9`N}~jW6Te3_I)r)PjcAjvsEqvTSJ0Ao>5?A52wC{J z1m-Pn#9vuJ;EFVi6QoQRtslO(^}jWgO9`vU|FZliyL`I0&$-a#es$Z6r~ivJ!JbVJ zbs_cFTxP|AWn7kTy3)B70*J?!K)*lNg45>vs0nbf_cYIA61}xNMWxNl_FL0esK-BY zidxyHFx9ej>tMeQl;ap)7ZO)v9ydA?(##7(AAsYweZs z_y1-|dwDAkf!S_+YW7dtAI;DFNp7RI20bxylL_|snbHIY)C_R)90!>(LN}W3TRf6z zBeTQ0P~`owiV$64IjO4c9xi1Q@0u4e?v& zj8&Hk9;OqS-U`X~_U1)SwErkfSqGBZaYcHqt3r{gQ0m%$n(|ohz10>9S(WncHHG)p z<=OmpZ_O;RRxMu`Fa<4GrXMYI#Z-fnxhUehEYcPy7=sLI>ZUYHbD3FLXq;LNT*#g2 zwP)yN{~1F8pIXN)Fh)rHd+$qSg-Of4aPlS?@8MdZFHX<4e>ASWf*y&!L(NZPKk|g_ zb`#tBbV$FtxsiD~!WbEF#3y`e#kl~=O~p)qs#~+daPJ&~QY)}}myY6`wZoARH#!Dq zThev4_bJ40JB+#BDFyf_aJ1EQ^Z~t{)Qv(nb@J-(Q&ALUc~?~lboG;WcYzc{^rL>b z9_BN5Iy)9#k=jahWy%y~t@_^I9N9IzMXmE~o2hQfqT@&1YYT5HoDk*U zVC1ME-FTmUyDouMQ?;FU@dBNSZUo*LEGQ)_7(K-Y1(9RyC zndL-e?2Xq~#`e~mg&biee2ZHxmAsp0NTTQsRh!j^!?$(A*y7H0A5om}og5V#gqhEn zM_4d=D{Y0=CuVr-Mk#HzDFttV+d~p{R>gb+*B?pC1&A)(O$Bv2O4BHkJs&QbsV~A) za<+Hv@~eifexwJ1bz$!^_4Iz}X45^0>yS*3w@_cOtU}yH&9wvJ>O_+gswvDp3Wh4F z;m#?G#a34XXoK9DJMh)kjqsmZNOPpRD@~3HP=>c zbp*jRRINv2KB_J*A|nyUvk2|D9YCQ#|v6R%#>Syc9`}_^!AP44o zo>Q_rnzP7r1+UX4`g;CP6Eq5^oC@nP+fRUOd4jRgXqjIL6hl&32{NOkR2Lfvj8cl95+Kqbx{n&AsG7&-yI4h0$w~iE zbzjE99+3lqwb`1ZTvTa9NnQ9w2i1hq32%=%02mLgI@F%i3c<9|QCgBLZcmK8s(v*C zW(Q);TT9;%EyQqjh^x4?$WD=wn@%dEkO=q|mR)uwT8qbWY82hBNu2BsdL#jETONrp zaesOuI~~FUxs&;m&7j#O*sLbt(#kHXH%*#1Le~meQ54%-!B>)3*ln2oonsd2B{`+K)#p9Ru`6I0FN_-`?j%byMXAchL6IFOKqZ%UKaGu^R!o z+AW#>4DR`tjFJLF9(A5OAvp3RdhnK|=d{eJjgd#o7Oj1`4Ex6D&gx6O_OM6;{D zd{SQOQZ-!ZN&Zw5V*i7PA;ofB>uY0Qo&3`+StvID+0j|RqQ z7I8@FDNzH99gtehBy2a0$15R4Qw#w(*UxHJ`BnC#3Z&z|28$>P#R#}OV&gWWjHzPA z*=?)U9(_j}Q>(^*c}4y+mrVRi=XJVH=3?9XSPCZxg?EhGY)$=4YUk5|Pi00|XEJ%Sd) zuMB~a3Jg)a4pA?~>@Ax~ISQYIH-Txb;ehgf4*W5m8ZIvH1PXE9n}-D!CqRDGH=zT- z3vAbh5=yUs$r>SEZ^oPErDRH3wSX6Kgv)+)cgYk2@<92`!sJSpY+y_>FxuTHI`;&sH9pU@h@e|PQ(rmOSx(w>q1g#w zbsi9p;Srl!!EE;{t?I<3ZrJuUgi6T@9c0Z}0Y}Y%a}gYbt*6yVg|3_mVO*&Y%wOx? zigitcWkIr~4viH8;Bk``6FWnal#-vgMT4nbDGDr^#l1ss2n2Hra=_|c@U4`Vn}ElUD>M} zoKM)tWvr9pZANpaq$83 zFFA-puZ1L#V?|QLK>Qn>{o>Mt<|yxxIRcm2W7aJ>e9=0S5a&cYrCh&5ivWUW-6eIu z!QlmwMwfmwg(eEtz4h7IV5C3x5U1*mqNeSh|K1THxD~y@@x(pu)l3qY%V5J*l5HDh zuM^reJo)8~F0@F{B@+DW`9J*8P;Pb(-#jNe+t&icMt2u54(g4yho70a>5If80*nJB zGkvnd9Cag5FXelAE)AC`M<|xRVzcq~8DNIo#YT_Q`iqw*rgN}Z$NL!xleQLLcD zl{7VH&A-ZU>nTcOS$9OZE${=AVsgz;gl;kIR^D@>Hcu#M&?-}01-~Rb#sp-qyJ!mK zfi02zXhJ(MLe7h(?co`*zx@@Gks&z=Bv{ToW;nF{ltVKgJ4=czSW+F>g=B@bcpxc< z+tJ-a&PlL})15Y1(-d&@XW=VCeptNwBssM3U`<=2l=He!}z(1U6aOIifPAaCliN92qSh|(F^}UHnKULtkOVMqnk>FVA%hI`xk(VS(S! z8c567nj-(VX0coWX)Kx@<~ENn)HcU%JA;W-2~U$>MJ}YsYphT@I60x+l#!d0^-ann z%zs=c#Z^ocE6)c-i;+W7FE8ov>aLZ|P{t+{ye5>3CQAjG)Zf^6cei*3Mx1o}jpc7U zd_%)m!*ax10mEV)HN_FTyzKj=3BAr=PpKM<-nn>fcMpPxRicD)o5ESImYjAHe-`1< zjfVG}PmRCFydk*@bj+?d+Xpzo>{h_+%4YnU`jj8Sx#&iBeDD;+d5k!De(+4tv&N7` zeE~BRv$}`W2)x2!`L{2BH~=^0y_?pTh>f|S!AbykBP1T4r@uz^18&1W?WAif!wnYR+9D~s+}*$ocEOn-kB zAvHTmR{A5nA72L(*}*L2ME#5jaH8(&+D65ky_298Ak}E{dik%M#*YatR*RL*Wbmr+ zyX51s=BDr0lbC!nG($-isToGfJ>g}_GIvAz&ZC7EoVtDLxR*WhMxim3n{znZ>q-3k zfsbgp{8)uWJh4pGga~|fvBTLROuo1($#n%sgh;!D3aD*ZJrCJD@lvx&6Y~M(sWl~R zZ3@xcsjQQ1gmU*Ll|Zm?&b%NoVuUl-T-&@W9KD!bX`j&gpa7acyEG0R3MDddbT!%En6+%AYTplEs{-kU{&J5415th}aK;wp>OZ*iRT}JGI-% zQ?Ri*qsm5GGU!;*=MYkVX#4sfCCXlSc!FZfhLyIQSbcU!Y0NXJ4me1z1Q1doMkhI8 z^|O;{f|r2e^XP#X9=rhmxmmnnf8EJQ@fA%v=H+~8=AnqjVr2NDX%KYn*e*5 zKTuslg#t-g@KvtQ01%fLNXh(14j2&S@0Cs4eu6@-t)1_Kr^7=eM6OMz017>k%)1qo9F0>Nz z!gCy8kNi$OdNWw47C&VhNsy8zY*3k$qG5{9i0iv};+K97;8-f`JdAN*d?;^%&Eb{l zV%6d-0REDsr_!V*l4~}z4?QQ+U;CXXw^6))Ac6T~U=yUgu^u}J#gc;M&eg+OwuxCU ziIhC1F7XjgMizjX68*0^b9VI!(?lYfnJkU`asiS0pRa#7fVm0!A^?|62l{~e?@c#& zQv$@kKT546ZlX|Oa z%|nssnpK(NpHo)<2|WZ8{55zOovY976?;g(w%Jr>{As`1X3-lKNxziZS;NH^&mE{G zVsjn)kW{tTzbOR(+tE?|5Ur9o1a{T;G6PgI(YC!az=<;B-Mlnco4=v*Od1~*TC9l{ z2C8gx?YO4!;pA&=_3QCp;m*gBG=XcC$eux@`ZuoJ}=g7P8fdoalco+DgU?nVMzM5?)Tm`F8Bg_-I=g)diAxH^7fidwr)?!5!Liu0w|J?{ zKiQ-FDWD1~kKZeU<#nnn1i%;nP=Z9hF|Q_edy35+Yf;-EW_05|(NQry5}Hic)pYQt zG0>%XV!9JeIDtgS6o2e7DdnQh@H9|R>wN=a#!M)XIvcoYeo%!|pOlnI#V(wXV$&8~ z3fGrb8Ek-C%Ia0Q7Wq{vx`;Kb1#QH6Io%RM1Y*nxp^-O==nXL&5{K53r#*>{WFTTa z2`lmV8M$q~bs1e;M2PM+{Ny`9@RRiyX%H zB`vs_JYMzz#zVLqVVzOg!d#n4-a0z1fzGRKLEOq78aJ4(7I54RqWaR@1a=M}o2rC@ zQ~bPpa-Ja9f^Wp{5XB^xnu*84CaVbIKET%ul@szAj5pMztO5=^R+j-09N23WzL*g5 z)aZ!)VfEouKPR5FGwgvz{T8=yk>4=bH%{J=OR#%=P9oF!cY5$VUB=x`tux__ zIMs`bs9k%RqHz_NP=*w5z|&=_1^GjjrWIDp zgdIs7<>ui+{L6{Sf6I|U6`i8|%ceM-Fl9AIO#U2|d)y!RW~;3}1tncz&)Th9*{{f8 zB#I4(NqS7-7!;(a_&Je3E+-0yKIw0{$W@NU!fV>=4) zyzK#lnQmN81L+RDFM|81CU$Fc_5=~POjYbHdH?(bGY)Eq5f|rNJ>_Mp0=Bxn)U+yU z9O2Du1#>gab$b3*bG{O^Ri><4{yXOv@F(10TT{w<8CkUC5SC{=yiZko5b}=!V33?- zw{s}TK`Rr^8pdi#|EXUVeWN za+9yxxQ?(~;T%2!UvSmbK{QT=6(nh+M#QyT&BkQRJW2y2k`7JQENYXcLfL}jij09_ zxrl(KkQ(`o4-kzR)v1ejMtV#B1wM}fOTh%Xvvz0ViAo95_R@L!%Vm1{c;DJ0zdxMC z^ncj^Zs70YJIzaJwAcrRmG7PbB3;bWw4ff*1$t(T$C%3`7AOATKTz_@N!iuxw*_Ao)_EeXUx8YtzO7DnVRa40?JlR^?m{T?PYXIo7s z@`*$F9o+G<`)II4T9A>LW+~=^?Q~Q|f%**FbTqAyTZd%Grk9zcHLo1TPih8ZL`X4BgAM=73F2p36Z{9m6B@!!&v2Rktkuc!lq4PJ->KVkXqMU6J3^KB* z#{KvWNVhQuD(iRgbGYD+E^+t)GE>)qXX0gZ#@v|QsJldT_bVsq%JXBm)X(N8axHB* z(2xqP4Z%7y_9&s4(dQ8sD(+{LIveuyjAFrYWhsiqzo^{0g$ zWa8L90X8Ho86*3f1KFfy#T#s7@>yNvfOvd>(w&e!MHPAB(UK zIdpw@q@#4BIM*I&hxe>FQ(IPOr@h}hwX1z=_(6pv#Af@JNNi_gAaTFar=TrZi2|F} z92tbBYvpHt|3l?!65w${JMr!@VX<@JB#jLEdrwh_@|}!)Q?~rYl-Od^+yA!rXChT= z=6?UJ7V;QKqzlxt=V2r5`7h#e_Ut=@_uHlBS7AI+gfLxP8kMbz&e#p7i1_<28CPyY z^0(;Gdn;VBpp>B)@7~xoi-bB5=Tw2-K;YXvvfm<(@5mO4yzUyOS!UNsYh+BgBKp+e zPwAXre;G3M=w?0D6<$cFdtdtOxG5<7PVUU-A1xB8e)qFVZ4>j?@}UfJyZ*}eTm%0{ zv6lI$$sqv$)+7t>qB7;cIZ$q?bLOcos2x_rKpu%6!OJCf(=yhhF0w=KX{Xyd1i3}E ziPev)6thQU`|&+}!|5@C8%^n9lJ+yMYm9f2`6yxSz2R>#J)axS0!+FwyAw+wbPawd z@y8}*aH&~9W``Xy9HI2W=uJi}nQ^Vhf70G#g51b45V}uKSyAVk^9gLT1~-GHW!k#_ zV-m6Jj*f0E8Da6pGQaR+EBBb$T+_dsd<<@^c=}O_bJYx;%3r41JEFzf%hW;Z!F8Um zK_mua{`zo&(A7O`%fw&T$$2$gOR6c?z#L!FV=k6Ax|OI?H}czg@!=1}XDIb8ja_x- z9{AyhXQ}Sc}5_Z}N-DeZ(dYF zAsvyX#}oKrfpx1ziB+Vtv>kn|bP>e+^%g+ko90e$C!6UuaRtuqN`)7`$Tt`k&5mTU ztjHk>(f1du_cS6RItnT=G!`TjDKYH%Y2caNPk7h8l*OV*2zK)xSVPpU7J2JYcea;z zO4(ev$_X(fF_9hKCEU`!Yh-I)9^yDjUO`p5qJlGR=!~>)M_G#vv0php@4hDCjb|Y+ z_`LpvG0&lc7Jy0HMJ_seu9G{`-VI`l1j@<>*PEyVXik}W%Q<>M;h9zpr57%uo~=;6 z%C6ORJWoJ5VDae7-9Mj(45w<=DKH2T72C=-liCm02@$Mmsm^6`Pb=<^zvA5!(^5EJ zyc$wyTW)~;`*9Rq$BKMv=o%YGY{tTjJ#(Pc6d z6gIx3MLC}Cyj)qd41y)PlN-9@vK5%w|1a~#zp-WB`O1ze%%XwIpC&z}6OwaD*{)N` zn4a7Cmn$!Rm(dYWMM&pP-_-S=Znn`mAkjbNB;*dj1IynGG^NHfXO*B$lOsmnlzkp! zO3*KxR()#e`XV_2I?-ZfZX3SYCwV7P0lzjn1srWwJx8};vyIhMc;4ZCl%?pJ@HX7I zwJr0*46TR=i34s zRlc#?9d~+Vf&Yms7rM=~GP7IL3_5k^K6Rc-{>+-$iuen`0K4s-8huyGqOnX-CEoI+ zSMnC+3MtNpha`p*Fknun;I9Bv;NIqxi}6Pd&(X4&_gh*;@lLh1kIZEG&1?E5sX2Vg zfs~gw0u+ew1^j%Lhra|BN@&P2OnL zHakQ^c(r_O)KjRHd-IY*wBG+XWn@(%AXD}hR$zNQh#eGFofU)Hzoh*(xzFIJ2j(pE^nQpUI9D5x_+1rV|mh$)&}kW4;vfl^32#D XOvy-XyrJ`tX^sL@)Py!btit{er`J + + + diff --git a/index.html b/index.html index 65fa2f6..e48c4de 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ +
          From 541b1f81b51fe691b55d68673932b518193c5280 Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 12:49:31 +0800 Subject: [PATCH 008/127] Updates --- index.html | 2 +- orange.jpg | Bin 0 -> 78686 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 orange.jpg diff --git a/index.html b/index.html index e48c4de..94a9925 100644 --- a/index.html +++ b/index.html @@ -315,7 +315,7 @@
        常用标签样式示例表
        类型标签效果类型标签效果
        链接.heti { star: 5; }
        删除的文字<del datetime="2020-01-23">过期的内容</del>过期的内容专名号此时来自<u title="位于山东省聊城市阳谷县城东">景阳冈</u>的<u>武松</u>大喝一声:<q>纳命来!</q>此时来自景阳冈武松大喝一声:纳命来!
        文本变动这次考试,我考了<del datetime="17:00:00">97</del><ins datetime="18:15:00">100</ins>分呢!这次考试,我考了97100分呢!
        文本更新最后我们决定把「蹏」字念为 <s>dí</s> tí。最后我们决定把「蹏」字念为 tí。
        引号窃·格瓦拉曾经说过:<q>打工是不可能打工的。</q>窃·格瓦拉曾经说过:打工是不可能打工的。
        术语<dfn>窃·格瓦拉</dfn>,中国大陆网络红人、罪犯。被奉为百度「戒赌吧」400万会员的「精神领袖」。窃·格瓦拉,中国大陆网络红人、罪犯。被奉为百度「戒赌吧」400万会员的「精神领袖」。
        强调这次的疫情<em>必将</em>取得胜利。这次的疫情必将取得胜利。稳住,<em>我们能赢</em>!稳住,我们能赢
        着重号我们<span class="heti-em">必将</span>取得胜利战胜这场疫情。我们必将取得胜利战胜这场疫情。
        标记
        - +
        橘子
        diff --git a/orange.jpg b/orange.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66f941e2a84381c1a8308508467da739ea45d6ea GIT binary patch literal 78686 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 z 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 XF>L=6zVP36qW?YcU%3N}f1CR^I_{Pg literal 0 HcmV?d00001 From 0b82c8a67be8e8ce21f1728bf9ab22524bf21648 Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 12:50:21 +0800 Subject: [PATCH 009/127] Updates --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 94a9925..a1c51d4 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@
        -
        +

        赫蹏

        古代称用以书写的小幅绢帛。后亦以借指纸。《汉书·外戚传下·孝成赵皇后》:武(籍武 )发篋中,有裹药二枚,赫蹏书。颜师古注:邓展曰:赫音兄弟鬩墙之鬩。应劭曰:赫蹏,薄小纸也。 赵彦卫 《云麓漫钞》卷七:《赵后传》所谓『赫蹏』者,注云薄小纸,然其寔亦縑帛。
        From 5b1d05b7a8764cf43063c8d4f80ef07a21d5c94b Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 12:52:00 +0800 Subject: [PATCH 010/127] Updates --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index a1c51d4..5fe4e1d 100644 --- a/index.html +++ b/index.html @@ -485,9 +485,9 @@ From c4b2af6adc6717fff9fe22338f79d89051f0fe7e Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 13:50:28 +0800 Subject: [PATCH 011/127] Updates --- index.css | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 36 +++++++++++++++++------------- 2 files changed, 86 insertions(+), 15 deletions(-) diff --git a/index.css b/index.css index aadadab..da7c0ba 100644 --- a/index.css +++ b/index.css @@ -139,6 +139,71 @@ a { text-align: right; } +.switch-list { + display: inline-flex; + margin: 0; + padding: 0; + list-style-type: none; +} + +.switch-list li { + margin-inline-end: -1px; +} + +.switch-list input { + display: none; +} + +.switch-list label { + position: relative; + display: block; + box-sizing: border-box; + height: 24px; + padding: 0; + padding-inline-start: 10px; + padding-inline-end: 10px; + border: 1px solid #c2c2c2; + border-block-start-color: #c9c9c9; + border-block-end-color: #a6a6a6; + font-size: 14px; + line-height: 22px; + text-align: center; + background-color: #fff; + color: #000; + user-select: none; +} + +.switch-list label:active { + background-color: #f0f0f0; +} + +.switch-list li:first-child label { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.switch-list li:last-child label { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.switch-list input:checked + label { + z-index: 1; + border-color: #98989e; + border-block-start-color: #a5a5ab; + border-block-end-color: #7e7e84; + background-image: linear-gradient(to bottom, #b1b1b6, #929297); + color: rgba(255, 255, 255, 1); +} + +.switch-list input:checked + label:active { + border-color: #65656b; + border-block-start-color: #808086; + border-block-end-color: #414147; + background-image: linear-gradient(to bottom, #919196, #57575c); + color: rgba(255, 255, 255, 0.95); +} + /** 演示区块 **/ .demo__main { margin-block-start: 24px; diff --git a/index.html b/index.html index 5fe4e1d..2e68031 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@
        -
        +

        赫蹏

        古代称用以书写的小幅绢帛。后亦以借指纸。《汉书·外戚传下·孝成赵皇后》:武(籍武 )发篋中,有裹药二枚,赫蹏书。颜师古注:邓展曰:赫音兄弟鬩墙之鬩。应劭曰:赫蹏,薄小纸也。 赵彦卫 《云麓漫钞》卷七:《赵后传》所谓『赫蹏』者,注云薄小纸,然其寔亦縑帛。
        @@ -479,28 +479,34 @@
        - - +
          +
        • +
        • +
        • +
        +
          +
        • +
        • +
        • +
        From c48cf006a5f6759aa374ab6ec1404fe82a09a30f Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 13:54:29 +0800 Subject: [PATCH 012/127] Updates --- index.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.css b/index.css index da7c0ba..7997f8b 100644 --- a/index.css +++ b/index.css @@ -136,6 +136,7 @@ a { z-index: 2; right: 10px; top: 10px; + display: flex; text-align: right; } @@ -143,6 +144,7 @@ a { display: inline-flex; margin: 0; padding: 0; + margin-inline-start: 10px; list-style-type: none; } From fd5e303b2cda45920a4b859160ec88994d4278cf Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 18:24:19 +0800 Subject: [PATCH 013/127] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c6bf009 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Sivan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From eca39cffe1168848031bdb4695cd075b208bdc06 Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 18:29:14 +0800 Subject: [PATCH 014/127] Updates --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 2e68031..0be5881 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@
        -
        +

        赫蹏

        古代称用以书写的小幅绢帛。后亦以借指纸。《汉书·外戚传下·孝成赵皇后》:武(籍武 )发篋中,有裹药二枚,赫蹏书。颜师古注:邓展曰:赫音兄弟鬩墙之鬩。应劭曰:赫蹏,薄小纸也。 赵彦卫 《云麓漫钞》卷七:《赵后传》所谓『赫蹏』者,注云薄小纸,然其寔亦縑帛。
        From 0d1d5bb0ee1d3786d6072d242d6bdc4cd5c18a4d Mon Sep 17 00:00:00 2001 From: Sivan Date: Wed, 12 Feb 2020 19:11:09 +0800 Subject: [PATCH 015/127] Updates --- favicon.svg | 2 +- index.css | 12 ++++++------ index.html | 7 +++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/favicon.svg b/favicon.svg index 1436bb8..0e4a719 100644 --- a/favicon.svg +++ b/favicon.svg @@ -3,7 +3,7 @@ g { fill: black; stroke: black; - stroke-width: 2px; + stroke-width: 6px; } @media (prefers-color-scheme: dark) { g { diff --git a/index.css b/index.css index 7997f8b..be4b571 100644 --- a/index.css +++ b/index.css @@ -1,6 +1,5 @@ /** * Author: Sivan [sun.sivan@gmail.com] - * Date: 2020-01-22 00:00 */ /** 测试用代码段 开始 **/ @@ -46,6 +45,7 @@ a { .article { margin-inline-start: auto; margin-inline-end: auto; + padding-block-end: 24px; outline: 1px solid transparent; } @@ -109,8 +109,8 @@ a { /** 页脚样式 **/ .fn { + position: relative; max-width: 42em; - margin-block-start: 24px; margin-inline-start: auto; margin-inline-end: auto; padding-block-start: 4px; @@ -134,8 +134,8 @@ a { .panel { position: fixed; z-index: 2; - right: 10px; - top: 10px; + right: 12px; + top: 12px; display: flex; text-align: right; } @@ -144,7 +144,7 @@ a { display: inline-flex; margin: 0; padding: 0; - margin-inline-start: 10px; + margin-inline-start: 12px; list-style-type: none; } @@ -272,7 +272,7 @@ heti-jiya { min-width: 720px; max-width: 880px; margin-block-start: 48px; - margin-block-end: 48px; + margin-block-end: 72px; margin-inline-start: auto; margin-inline-end: auto; padding-block-start: 48px; diff --git a/index.html b/index.html index 0be5881..27c1816 100644 --- a/index.html +++ b/index.html @@ -38,6 +38,7 @@
        1. 兼容性
        2. 标签示例表
        3. +
        4. 开源协议
      2. 待开发功能
      3. @@ -209,7 +210,7 @@
        查看使用说明

        为容器元素添加名为 heti--vertical 的 class 即可实现垂直布局:

        -
        <div class="heti heti-vertical"></div>
        +
        <div class="heti heti--vertical"></div>
        @@ -457,6 +458,9 @@
        +

        开源协议#

        +

        「赫蹏」遵循 MIT 协议开源。

        +

        待开发功能#

        @@ -467,7 +471,6 @@
      4. ✅ 诗词版式
      5. ✅ 行间注版式
    -

    -- EOF --