From db254c3366d0f1cd4fb3d53bf1c27714299968b1 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Mon, 2 Oct 2017 17:10:20 -0700 Subject: [PATCH 01/10] Add interstitial splash screen for use with in-review posts on drafts.distill.pub --- src/components.js | 32 ++++---- src/components/d-interstitial.js | 114 ++++++++++++++++++++++++++ src/controller.js | 5 ++ src/front-matter.js | 1 + src/transforms/optional-components.js | 7 ++ 5 files changed, 144 insertions(+), 15 deletions(-) create mode 100644 src/components/d-interstitial.js diff --git a/src/components.js b/src/components.js index 6c1a819..9deba37 100644 --- a/src/components.js +++ b/src/components.js @@ -3,25 +3,27 @@ import { makeStyleTag } from './styles/styles'; makeStyleTag(document); /* Components */ -import { Abstract } from './components/d-abstract'; -import { Appendix } from './components/d-appendix'; -import { Article } from './components/d-article'; -import { Bibliography } from './components/d-bibliography'; -import { Byline } from './components/d-byline'; -import { Cite } from './components/d-cite'; -import { CitationList } from './components/d-citation-list'; -import { Code } from './components/d-code'; -import { Footnote } from './components/d-footnote'; -import { FootnoteList } from './components/d-footnote-list'; -import { FrontMatter } from './components/d-front-matter'; -import { DMath } from './components/d-math'; -import { References } from './components/d-references'; -import { TOC } from './components/d-toc'; -import { Figure } from './components/d-figure'; +import { Abstract } from './components/d-abstract'; +import { Appendix } from './components/d-appendix'; +import { Article } from './components/d-article'; +import { Bibliography } from './components/d-bibliography'; +import { Byline } from './components/d-byline'; +import { Cite } from './components/d-cite'; +import { CitationList } from './components/d-citation-list'; +import { Code } from './components/d-code'; +import { Footnote } from './components/d-footnote'; +import { FootnoteList } from './components/d-footnote-list'; +import { FrontMatter } from './components/d-front-matter'; +import { DMath } from './components/d-math'; +import { References } from './components/d-references'; +import { TOC } from './components/d-toc'; +import { Figure } from './components/d-figure'; +import { Interstitial } from './components/d-interstitial'; const components = [ Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code, Footnote, FootnoteList, FrontMatter, DMath, References, TOC, Figure, + Interstitial, ]; /* Distill website specific components */ diff --git a/src/components/d-interstitial.js b/src/components/d-interstitial.js new file mode 100644 index 0000000..2726ac9 --- /dev/null +++ b/src/components/d-interstitial.js @@ -0,0 +1,114 @@ +import { Template } from '../mixins/template'; + +// This overlay is not secure. +// It is only meant as a social deterrent. + +const T = Template('d-interstitial', ` + + +
+
+

This article is in review.

+

Do not share this URL, or the contents of this article. Thank you!

+ +

Enter the password we shared with you as part of the review process to view the article.

+
+
+`); + +export class Interstitial extends T(HTMLElement) { + + connectedCallback() { + const passwordInput = this.root.querySelector('#interstitial-password-input'); + passwordInput.oninput = (event) => this.passwordChanged(event); + setTimeout(() => { + this.article = document.querySelector('d-article'); + this.article.style = 'filter: blur(15px)'; + const overlay = this.root.querySelector('.overlay'); + overlay.classList.add('transparent'); + }, 500); + } + + passwordChanged(event) { + const entered = event.target.value; + if (entered === this.password) { + console.log('Correct password entered.'); + event.target.classList.add('right'); + this.article.style = ''; + this.parentElement.removeChild(this); + } + } + +} diff --git a/src/controller.js b/src/controller.js index e0a7ea8..a7c70f0 100644 --- a/src/controller.js +++ b/src/controller.js @@ -109,6 +109,11 @@ export const Controller = { const data = event.detail; frontMatter.mergeFromYMLFrontmatter(data); + const interstitial = document.querySelector('d-interstitial'); + if (interstitial) { + interstitial.password = frontMatter.password; + } + const prerendered = document.body.hasAttribute('distill-prerendered'); if (!prerendered) { optionalComponents(document, frontMatter); diff --git a/src/front-matter.js b/src/front-matter.js index dc33cfe..eed187e 100644 --- a/src/front-matter.js +++ b/src/front-matter.js @@ -124,6 +124,7 @@ export class FrontMatter { this.description = data.description; this.authors = data.authors.map( (authorObject) => new Author(authorObject)); this.katex = data.katex; + this.password = data.password; } // diff --git a/src/transforms/optional-components.js b/src/transforms/optional-components.js index b532379..14ca533 100644 --- a/src/transforms/optional-components.js +++ b/src/transforms/optional-components.js @@ -10,6 +10,13 @@ export default function(dom, data) { const article = dom.querySelector('d-article'); + let interstitial = dom.querySelector('d-interstitial'); + if (!interstitial && data.password) { + interstitial = dom.createElement('d-interstitial'); + interstitial.password = data.password; + dom.body.insertBefore(interstitial, article); + } + let h1 = dom.querySelector('h1'); if (h1) { if (!data.title) { From ffb5eaf3f7ab6ef96d822c42c58c48165243590f Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Mon, 9 Oct 2017 13:03:28 -0700 Subject: [PATCH 02/10] 2.1.0 Update render.js script; expose it as bin when used as npm dependency. --- .gitignore | 3 + bin/{render => render.js} | 10 +- package-lock.json | 788 ++++--------------------------- package.json | 11 +- rollup.config.dev.js | 15 +- src/components/d-article.js | 242 +--------- src/components/d-byline.js | 47 +- src/components/d-front-matter.js | 2 +- src/styles/d-article.css | 228 +++++++++ src/styles/d-byline.css | 43 ++ src/styles/styles.js | 4 +- 11 files changed, 412 insertions(+), 981 deletions(-) rename bin/{render => render.js} (73%) create mode 100644 src/styles/d-article.css create mode 100644 src/styles/d-byline.css diff --git a/.gitignore b/.gitignore index eb30721..ac2ab45 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ jspm_packages examples/fonts dist article-rendered.html + +# dependency graph +rollup-grapher.html diff --git a/bin/render b/bin/render.js similarity index 73% rename from bin/render rename to bin/render.js index 1b9f247..bff3b25 100755 --- a/bin/render +++ b/bin/render.js @@ -1,14 +1,18 @@ #!/usr/bin/env node const path = require('path'); +const fs = require('fs'); const program = require('commander'); const jsdom = require('jsdom'); const { JSDOM } = jsdom; const transforms = require('../dist/transforms.v2.js'); program - .version('0.0.1') - .option('-i, --input ', 'path to input file.') + .version('1.0.0') + .description('Pre-renders distill articles for publication.') + .usage('-i -o ') + .option('-i, --input_path ', 'path to input HTML file.') + .option('-o, --output_path ', 'path to write rendered HTML file to.') .parse(process.argv); const virtualConsole = new jsdom.VirtualConsole(); @@ -27,5 +31,5 @@ JSDOM.fromFile(program.input, options).then(dom => { transforms.distillify(document, data); const transformedHtml = dom.serialize(); - process.stdout.write(transformedHtml); + fs.writeFileSync(program.output, transformedHtml); }).catch(console.error); diff --git a/package-lock.json b/package-lock.json index cb600bc..a61c6e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "distill-template", - "version": "2.0.0", + "version": "2.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -114,16 +114,10 @@ "repeat-string": "1.6.1" } }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "optional": true + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, "ansi-escapes": { "version": "2.0.0", @@ -134,12 +128,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "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=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "anymatch": { "version": "1.3.2", @@ -173,6 +169,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, "requires": { "sprintf-js": "1.0.3" } @@ -279,19 +276,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000721", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", @@ -884,15 +868,6 @@ "pako": "0.2.9" } }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "1.0.30000721", - "electron-to-chromium": "1.3.18" - } - }, "buble": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/buble/-/buble-0.15.2.tgz", @@ -981,22 +956,6 @@ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000721", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000721", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000721.tgz", - "integrity": "sha1-zcUu/o+C3RORZhW3job3BOzmGAI=" - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1027,6 +986,7 @@ "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.5", @@ -1068,14 +1028,6 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", - "requires": { - "chalk": "1.1.3" - } - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1125,41 +1077,26 @@ "clone": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true, + "optional": true }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "requires": { - "q": "1.5.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 }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", - "color-string": "0.3.0" - } - }, "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -1167,30 +1104,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "requires": { - "color-name": "1.1.3" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true }, "combined-stream": { "version": "1.0.5", @@ -1347,66 +1268,6 @@ "randombytes": "2.0.5" } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "requires": { - "clap": "1.2.0", - "source-map": "0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -1466,7 +1327,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "deep-eql": { "version": "0.1.3", @@ -1507,11 +1369,6 @@ "clone": "1.0.2" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -1613,11 +1470,6 @@ "jsbn": "0.1.1" } }, - "electron-to-chromium": { - "version": "1.3.18", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.18.tgz", - "integrity": "sha1-PcyZ2j5rZl9qu8ccKK1Ros1zGpw=" - }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -1672,7 +1524,8 @@ "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=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.8.1", @@ -1990,11 +1843,6 @@ "write": "0.2.1" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2811,14 +2659,6 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -2829,6 +2669,14 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, "stringstream": { "version": "0.0.5", "bundled": true, @@ -2965,11 +2813,6 @@ "minimatch": "3.0.4" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -3137,6 +2980,35 @@ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "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": "1.0.1" + } + } + } + }, "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", @@ -3151,18 +3023,11 @@ "har-schema": "1.0.5" } }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "requires": { - "function-bind": "1.1.1" - } - }, "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.1.1" } @@ -3250,11 +3115,6 @@ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" - }, "html-encoding-sniffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", @@ -3302,11 +3162,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -3429,11 +3284,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3548,11 +3398,6 @@ "path-is-inside": "1.0.2" } }, - "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=" - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -3580,14 +3425,6 @@ "tryit": "1.0.3" } }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "requires": { - "html-comment-regex": "1.1.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3625,11 +3462,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=" - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -3967,11 +3799,6 @@ "lodash.isarray": "3.0.4" } }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, "lodash.some": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", @@ -3984,11 +3811,6 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -4014,11 +3836,6 @@ "yallist": "2.1.2" } }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" - }, "magic-string": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", @@ -4039,11 +3856,6 @@ "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz", "integrity": "sha1-9WHncJ/5oQW4XMYsa47nwVvyTzE=" }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4143,12 +3955,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "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" } @@ -4339,22 +4153,6 @@ "remove-trailing-separator": "1.0.2" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -4368,11 +4166,6 @@ "set-blocking": "2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4392,7 +4185,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object.omit": { "version": "2.0.1", @@ -4428,6 +4222,24 @@ "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", "dev": true }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -4621,303 +4433,11 @@ "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=" }, - "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", - "requires": { - "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "requires": { - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "requires": { - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "requires": { - "postcss": "5.2.17", - "uniqid": "4.1.1" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -4987,25 +4507,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" - }, "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -5146,38 +4652,6 @@ "set-immediate-shim": "1.0.1" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "requires": { - "balanced-match": "0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", @@ -5411,6 +4885,15 @@ "fs-extra": "3.0.1" } }, + "rollup-plugin-grapher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-grapher/-/rollup-plugin-grapher-0.2.0.tgz", + "integrity": "sha1-FtbJZkRfV6LgjDgFiFCUuZsiyv4=", + "dev": true, + "requires": { + "handlebars": "4.0.10" + } + }, "rollup-plugin-gzip": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/rollup-plugin-gzip/-/rollup-plugin-gzip-1.2.0.tgz", @@ -5611,14 +5094,6 @@ "hoek": "2.16.3" } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "1.1.0" - } - }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -5675,7 +5150,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.13.1", @@ -5727,20 +5203,6 @@ "xtend": "4.0.1" } }, - "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=" - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -5768,6 +5230,15 @@ } } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -5777,6 +5248,7 @@ "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.1.1" } @@ -5799,32 +5271,8 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" - }, - "dependencies": { - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - } - } - } + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "symbol-tree": { "version": "3.2.2", @@ -6027,24 +5475,6 @@ "dev": true, "optional": true }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "requires": { - "macaddress": "0.2.8" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", @@ -6098,11 +5528,6 @@ "spdx-expression-parse": "1.0.4" } }, - "vendors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", - "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -6309,11 +5734,6 @@ } } }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" - }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", diff --git a/package.json b/package.json index 79f0465..181a550 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,11 @@ { "name": "distill-template", - "version": "2.0.0", + "version": "2.1.0", "description": "Template for creating Distill articles.", - "main": "dist/template.js", + "main": "dist/template.v2.js", + "bin": { + "distill-render": "./bin/render.js" + }, "author": "Shan Carter", "homepage": "https://github.com/distillpub/distill-template#readme", "bugs": { @@ -13,7 +16,8 @@ "serve": "python3 -m http.server --bind 127.0.0.1 8888", "test": "mocha", "lint": "eslint", - "build": "rollup -c rollup.config.js" + "build": "rollup -c rollup.config.js", + "prepublishOnly": "npm run build" }, "repository": { "url": "git+https://github.com/distillpub/distill-template.git", @@ -35,6 +39,7 @@ "rollup-plugin-buble": "^0.15.0", "rollup-plugin-commonjs": "^7.0.0", "rollup-plugin-copy": "^0.2.3", + "rollup-plugin-grapher": "^0.2.0", "rollup-plugin-gzip": "^1.2.0", "rollup-plugin-node-resolve": "^2.0.0", "rollup-plugin-serve": "^0.1.0", diff --git a/rollup.config.dev.js b/rollup.config.dev.js index ead6872..4347e9d 100644 --- a/rollup.config.dev.js +++ b/rollup.config.dev.js @@ -3,6 +3,9 @@ import string from 'rollup-plugin-string'; import commonjs from 'rollup-plugin-commonjs'; import buble from 'rollup-plugin-buble'; +// uncomment to show dependencies [1/2] +// import rollupGrapher from 'rollup-plugin-grapher' + const componentsConfig = { input: 'src/components.js', output: [{ format: 'umd', name: 'dl', file: 'dist/template.v2.js' }], @@ -25,6 +28,7 @@ const defaultConfig = { include: ['**/*.txt', '**/*.svg', '**/*.html', '**/*.css', '**/*.base64'] }), commonjs(), + ] }; @@ -35,7 +39,16 @@ Object.assign(transformsConfig, defaultConfig); transformsConfig.plugins.push( buble({ target: { 'node': 6 } - })); + }) +); + +// uncomment to show dependencies [2/2] +// transformsConfig.plugins.push( +// rollupGrapher({ +// dest: '/dev/null', +// verbose: true +// }) +// ); export default [ componentsConfig, diff --git a/src/components/d-article.js b/src/components/d-article.js index 1ebf3ee..dc2c305 100644 --- a/src/components/d-article.js +++ b/src/components/d-article.js @@ -1,246 +1,6 @@ import { Template } from '../mixins/template'; import { Controller } from '../controller'; - -export const style =` -d-article { - contain: content; - border-top: 1px solid rgba(0, 0, 0, 0.1); - padding-top: 2rem; - color: rgba(0, 0, 0, 0.8); -} - -d-article > * { - grid-column: text; -} - -@media(min-width: 768px) { - d-article { - font-size: 16px; - } -} - -@media(min-width: 1024px) { - d-article { - font-size: 1rem; - line-height: 1.7em; - } -} - - -/* H2 */ - - -d-article .marker { - text-decoration: none; - border: none; - counter-reset: section; - grid-column: kicker; - line-height: 1.7em; -} - -d-article .marker:hover { - border: none; -} - -d-article .marker span { - padding: 0 3px 4px; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - position: relative; - top: 4px; -} - -d-article .marker:hover span { - color: rgba(0, 0, 0, 0.7); - border-bottom: 1px solid rgba(0, 0, 0, 0.7); -} - -d-article h2 { - grid-column-end: page-end; - font-weight: 700; - font-size: 24px; - line-height: 1.25em; - margin: 0 0 1rem 0; -} - -@media(min-width: 1024px) { - d-article h2 { - font-size: 24px; - } -} - -/* H3 */ - -d-article h3 { - font-weight: 700; - font-size: 18px; - line-height: 1.4em; - margin-bottom: 24px; - margin-top: 0; -} - -@media(min-width: 1024px) { - d-article h3 { - font-size: 20px; - } -} - -/* H4 */ - -d-article h4 { - font-weight: 600; - text-transform: uppercase; - font-size: 14px; - line-height: 1.4em; -} - -d-article a { - color: inherit; -} - -d-article p, -d-article ul, -d-article ol { - font-family: georgia, serif; - margin-top: 0; - margin-bottom: 1.7em; - -webkit-font-smoothing: antialiased; -} - -d-article a { - border-bottom: 1px solid rgba(0, 0, 0, 0.4); - text-decoration: none; -} - -d-article a:hover { - border-bottom: 1px solid rgba(0, 0, 0, 0.8); -} - -d-article .link { - text-decoration: underline; - cursor: pointer; -} - -d-article ul, -d-article ol { - padding-left: 24px; -} - -d-article li { - margin-bottom: 24px; - margin-left: 0; - padding-left: 0; -} - -d-article pre { - font-size: 14px; - margin-bottom: 20px; -} - -d-article hr { - border: none; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - margin-top: 60px; - margin-bottom: 60px; -} - -d-article section { - margin-top: 60px; - margin-bottom: 60px; -} - -/* Figure */ - -d-article figure { - position: relative; - margin-bottom: 36px; -} - -d-article figure img { - width: 100%; -} - -d-article figure svg text, -d-article figure svg tspan { -} - -d-article figure figcaption { - color: rgba(0, 0, 0, 0.6); - font-size: 12px; - line-height: 1.5em; -} - -@media(min-width: 1024px) { - d-article figure figcaption { - font-size: 13px; - } -} - -d-article figure.external img { - background: white; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); - padding: 18px; - box-sizing: border-box; -} - -d-article figure figcaption a { - color: rgba(0, 0, 0, 0.6); -} - -d-article span.equation-mimic { - font-family: georgia; - font-size: 115%; - font-style: italic; -} - -d-article figure figcaption b { - font-weight: 600; - color: rgba(0, 0, 0, 1.0); -} - -d-article > d-code, -d-article section > d-code { - display: block; -} - -d-article > d-math[block], -d-article section > d-math[block] { - display: block; -} - -d-article .citation { - color: #668; - cursor: pointer; -} - -d-include { - width: auto; - display: block; -} - -d-figure { - contain: content; - overflow: hidden; - height: 300px; -} - -/* KaTeX */ - -.katex, .katex-prerendered { - contain: content; - display: inline-block; -} - -`; - - -// export function addInferableTags(dom, frontMatter) { -// const title = frontMatter.title; -// if (title) { -// const titleTag = document.querySelector() -// -// } -// } +import style from '../styles/d-article.css'; const isOnlyWhitespace = /^\s*$/; diff --git a/src/components/d-byline.js b/src/components/d-byline.js index dd8d5e8..c518adc 100644 --- a/src/components/d-byline.js +++ b/src/components/d-byline.js @@ -1,49 +1,4 @@ -export const style = ` -d-byline { - border-top: 1px solid rgba(0, 0, 0, 0.1); - contain: content; - font-size: 0.7rem; - line-height: 1.8em; - padding: 1.5rem 0; -} - -d-byline .byline { - grid-template-columns: repeat(4, 1fr); - grid-column: text; -} - -d-byline h3 { - font-size: 0.55rem; - font-weight: 400; - color: rgba(0, 0, 0, 0.5); - margin: 0; - text-transform: uppercase; -} - -d-byline p { - margin: 0; -} - -d-byline a, -d-article d-byline a { - color: rgba(0, 0, 0, 0.8); - text-decoration: none; - border-bottom: none; -} - -d-article d-byline a:hover { - text-decoration: underline; - border-bottom: none; -} - -d-byline .authors p { - font-weight: 600; -} -d-byline .affiliations { -} - -`; - +import style from '../styles/d-byline.css'; export function bylineTemplate(frontMatter) { return ` diff --git a/src/components/d-front-matter.js b/src/components/d-front-matter.js index 7a67bd2..e244c6b 100644 --- a/src/components/d-front-matter.js +++ b/src/components/d-front-matter.js @@ -6,7 +6,7 @@ export function parseFrontmatter(element) { const content = scriptTag.textContent; return JSON.parse(content); } else { - console.error('Distill only supoprts JSON frontmatter tags anymore; no more YAML.'); + console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.'); } } else { console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.'); diff --git a/src/styles/d-article.css b/src/styles/d-article.css new file mode 100644 index 0000000..ffa5a84 --- /dev/null +++ b/src/styles/d-article.css @@ -0,0 +1,228 @@ +d-article { + contain: content; + border-top: 1px solid rgba(0, 0, 0, 0.1); + padding-top: 2rem; + color: rgba(0, 0, 0, 0.8); +} + +d-article > * { + grid-column: text; +} + +@media(min-width: 768px) { + d-article { + font-size: 16px; + } +} + +@media(min-width: 1024px) { + d-article { + font-size: 1rem; + line-height: 1.7em; + } +} + + +/* H2 */ + + +d-article .marker { + text-decoration: none; + border: none; + counter-reset: section; + grid-column: kicker; + line-height: 1.7em; +} + +d-article .marker:hover { + border: none; +} + +d-article .marker span { + padding: 0 3px 4px; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + position: relative; + top: 4px; +} + +d-article .marker:hover span { + color: rgba(0, 0, 0, 0.7); + border-bottom: 1px solid rgba(0, 0, 0, 0.7); +} + +d-article h2 { + grid-column-end: page-end; + font-weight: 700; + font-size: 24px; + line-height: 1.25em; + margin: 0 0 1rem 0; +} + +@media(min-width: 1024px) { + d-article h2 { + font-size: 24px; + } +} + +/* H3 */ + +d-article h3 { + font-weight: 700; + font-size: 18px; + line-height: 1.4em; + margin-bottom: 24px; + margin-top: 0; +} + +@media(min-width: 1024px) { + d-article h3 { + font-size: 20px; + } +} + +/* H4 */ + +d-article h4 { + font-weight: 600; + text-transform: uppercase; + font-size: 14px; + line-height: 1.4em; +} + +d-article a { + color: inherit; +} + +d-article p, +d-article ul, +d-article ol { + font-family: georgia, serif; + margin-top: 0; + margin-bottom: 1.7em; + -webkit-font-smoothing: antialiased; +} + +d-article a { + border-bottom: 1px solid rgba(0, 0, 0, 0.4); + text-decoration: none; +} + +d-article a:hover { + border-bottom: 1px solid rgba(0, 0, 0, 0.8); +} + +d-article .link { + text-decoration: underline; + cursor: pointer; +} + +d-article ul, +d-article ol { + padding-left: 24px; +} + +d-article li { + margin-bottom: 24px; + margin-left: 0; + padding-left: 0; +} + +d-article pre { + font-size: 14px; + margin-bottom: 20px; +} + +d-article hr { + border: none; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + margin-top: 60px; + margin-bottom: 60px; +} + +d-article section { + margin-top: 60px; + margin-bottom: 60px; +} + +/* Figure */ + +d-article figure { + position: relative; + margin-bottom: 36px; +} + +d-article figure img { + width: 100%; +} + +d-article figure svg text, +d-article figure svg tspan { +} + +d-article figure figcaption { + color: rgba(0, 0, 0, 0.6); + font-size: 12px; + line-height: 1.5em; +} + +@media(min-width: 1024px) { + d-article figure figcaption { + font-size: 13px; + } +} + +d-article figure.external img { + background: white; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); + padding: 18px; + box-sizing: border-box; +} + +d-article figure figcaption a { + color: rgba(0, 0, 0, 0.6); +} + +d-article span.equation-mimic { + font-family: georgia; + font-size: 115%; + font-style: italic; +} + +d-article figure figcaption b { + font-weight: 600; + color: rgba(0, 0, 0, 1.0); +} + +d-article > d-code, +d-article section > d-code { + display: block; +} + +d-article > d-math[block], +d-article section > d-math[block] { + display: block; +} + +d-article .citation { + color: #668; + cursor: pointer; +} + +d-include { + width: auto; + display: block; +} + +d-figure { + contain: content; + overflow: hidden; + height: 300px; +} + +/* KaTeX */ + +.katex, .katex-prerendered { + contain: content; + display: inline-block; +} diff --git a/src/styles/d-byline.css b/src/styles/d-byline.css new file mode 100644 index 0000000..4fd0935 --- /dev/null +++ b/src/styles/d-byline.css @@ -0,0 +1,43 @@ +d-byline { + border-top: 1px solid rgba(0, 0, 0, 0.1); + contain: content; + font-size: 0.7rem; + line-height: 1.8em; + padding: 1.5rem 0; +} + +d-byline .byline { + grid-template-columns: repeat(4, 1fr); + grid-column: text; +} + +d-byline h3 { + font-size: 0.55rem; + font-weight: 400; + color: rgba(0, 0, 0, 0.5); + margin: 0; + text-transform: uppercase; +} + +d-byline p { + margin: 0; +} + +d-byline a, +d-article d-byline a { + color: rgba(0, 0, 0, 0.8); + text-decoration: none; + border-bottom: none; +} + +d-article d-byline a:hover { + text-decoration: underline; + border-bottom: none; +} + +d-byline .authors p { + font-weight: 600; +} +d-byline .affiliations { + +} diff --git a/src/styles/styles.js b/src/styles/styles.js index 6409aea..5206d46 100644 --- a/src/styles/styles.js +++ b/src/styles/styles.js @@ -1,8 +1,8 @@ import base from './styles-base.css'; import layout from './styles-layout.css'; import print from './styles-print.css'; -import { style as byline } from '../components/d-byline'; -import { style as article } from '../components/d-article'; +import byline from './d-byline.css'; +import article from './d-article.css'; import math from './d-math.css'; export const styles = base + layout + byline + article + math + print; From 9526d99390f82d374af7c30d512b53029fb5d996 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Mon, 9 Oct 2017 15:02:03 -0700 Subject: [PATCH 03/10] Explicitly include `dist` folder in npm package --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 181a550..dceafa7 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,11 @@ "bin": { "distill-render": "./bin/render.js" }, + "files": [ + "dist", + "bin", + "examples" + ], "author": "Shan Carter", "homepage": "https://github.com/distillpub/distill-template#readme", "bugs": { From a65f546151b0ae9be2d06e675ee1a61bfb6ba61d Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Mon, 9 Oct 2017 15:08:26 -0700 Subject: [PATCH 04/10] Use npmignore file instead of files array --- .npmignore | 9 +++++++++ package.json | 5 ----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..97d624f --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +src +build +.editorconfig +.eslintrc.json +.gitignore +.travis.yml +rollup.config.dev.js +rollup.config.js +yarn-error.log diff --git a/package.json b/package.json index dceafa7..181a550 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,6 @@ "bin": { "distill-render": "./bin/render.js" }, - "files": [ - "dist", - "bin", - "examples" - ], "author": "Shan Carter", "homepage": "https://github.com/distillpub/distill-template#readme", "bugs": { From ba4c35e5caab011c8700b3220141dd4b4520e41a Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Mon, 9 Oct 2017 15:12:23 -0700 Subject: [PATCH 05/10] Add prepare script to npm package --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 181a550..a83e8cc 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test": "mocha", "lint": "eslint", "build": "rollup -c rollup.config.js", - "prepublishOnly": "npm run build" + "prepare": "npm run build" }, "repository": { "url": "git+https://github.com/distillpub/distill-template.git", From 75e132e77f6459f85e45aa5c8632ad8476ca80ca Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 10 Oct 2017 12:29:27 -0700 Subject: [PATCH 06/10] Fix dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a83e8cc..ef9d5b5 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,9 @@ "devDependencies": { "bibtex-parse-js": "^0.0.23", "chai": "^3.5.0", - "commander": "^2.9.0", "eslint": "^4.3.0", "eslint-config-google": "^0.9.1", "js-yaml": "^3.7.0", - "jsdom": "^11.2.0", "marked": "^0.3.6", "mocha": "^3.2.0", "prismjs": "^1.6.0", @@ -53,6 +51,8 @@ "assert": "^1.4.1", "d3-time-format": "^2.0.3", "intersection-observer": "^0.4.0", + "commander": "^2.9.0", + "jsdom": "^11.2.0", "jsdom-wc": "^11.0.0-alpha-1", "katex": "^0.7.1" } From 044acd8f038a6e2f33532a976e4542e070867e62 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 10 Oct 2017 12:29:59 -0700 Subject: [PATCH 07/10] Fix crash in optional components. Now does less; we should rethink this once title etc stabilize. --- src/transforms/optional-components.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/transforms/optional-components.js b/src/transforms/optional-components.js index 3181be7..bbe30de 100644 --- a/src/transforms/optional-components.js +++ b/src/transforms/optional-components.js @@ -9,13 +9,13 @@ export default function(dom, data) { const article = dom.querySelector('d-article'); - const abstract = dom.querySelector('d-abstract'); + // const abstract = dom.querySelector('d-abstract'); let interstitial = dom.querySelector('d-interstitial'); if (!interstitial && data.password) { interstitial = dom.createElement('d-interstitial'); interstitial.password = data.password; - dom.body.insertBefore(interstitial, article); + dom.body.insertBefore(interstitial, dom.body.firstChild); } // let h1 = dom.querySelector('h1'); @@ -24,13 +24,13 @@ export default function(dom, data) { // data.title = h1.textContent; // } // } else { - if (data.title) { - let headline = dom.createElement('d-title'); - let h1 = dom.createElement('h1'); - headline.appendChild(h1); - h1.textContent = data.title; - abstract.parentNode.insertBefore(headline, abstract); - } + // if (data.title) { + // let headline = dom.createElement('d-title'); + // let h1 = dom.createElement('h1'); + // headline.appendChild(h1); + // h1.textContent = data.title; + // abstract.parentNode.insertBefore(headline, abstract); + // } // if (data.description) { // const h2 = dom.createElement('h2'); // h2.textContent = data.description; From 0ab27e13828225fe8f4542cc5d53e4663ea82f01 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 10 Oct 2017 12:30:36 -0700 Subject: [PATCH 08/10] Fix non-working hover box; now in a weird in-between state, though. --- src/components/d-cite.js | 70 +++++++++++++++++++++----------- src/components/d-footnote.js | 37 ++++++++++++++--- src/components/d-interstitial.js | 14 +------ src/components/d-title.js | 2 +- src/helpers/hover-box.js | 11 ++--- src/styles/d-article.css | 48 ++-------------------- src/styles/styles-base.css | 45 ++++++++++++++++++++ 7 files changed, 134 insertions(+), 93 deletions(-) diff --git a/src/components/d-cite.js b/src/components/d-cite.js index c3d18da..61a1787 100644 --- a/src/components/d-cite.js +++ b/src/components/d-cite.js @@ -4,31 +4,55 @@ import { HoverBox } from '../helpers/hover-box'; const T = Template('d-cite', ` -
+
+
diff --git a/src/components/d-footnote.js b/src/components/d-footnote.js index 6ea6bda..36471e1 100644 --- a/src/components/d-footnote.js +++ b/src/components/d-footnote.js @@ -8,14 +8,16 @@ d-math[block] { display: block; } +:host { + position: relative; +} + sup { line-height: 1em; font-size: 0.75em; position: relative; - top: 0; + top: -.5em; vertical-align: baseline; - position: relative; - top: -6px; } span { @@ -23,13 +25,36 @@ span { cursor: default; } +.container { + position: fixed; + width: 100%; + left: 0; + z-index: 10000; +} + +.dt-hover-box { + margin: 0 auto; + width: 400px; + max-width: 700px; + background-color: #FFF; + opacity: 0.95; + border: 1px solid rgba(0, 0, 0, 0.25); + padding: 8px 16px; + border-radius: 3px; + box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.2); +} + -
- +
+
+ +
- + + + `); diff --git a/src/components/d-interstitial.js b/src/components/d-interstitial.js index 2726ac9..c980424 100644 --- a/src/components/d-interstitial.js +++ b/src/components/d-interstitial.js @@ -24,11 +24,6 @@ const T = Template('d-interstitial', ` } -.overlay.transparent { - background: hsla(0, 0%, 100%, 0.7); - transition: background 1s; -} - .container { position: relative; left: 25%; @@ -93,20 +88,13 @@ export class Interstitial extends T(HTMLElement) { connectedCallback() { const passwordInput = this.root.querySelector('#interstitial-password-input'); passwordInput.oninput = (event) => this.passwordChanged(event); - setTimeout(() => { - this.article = document.querySelector('d-article'); - this.article.style = 'filter: blur(15px)'; - const overlay = this.root.querySelector('.overlay'); - overlay.classList.add('transparent'); - }, 500); } passwordChanged(event) { const entered = event.target.value; if (entered === this.password) { console.log('Correct password entered.'); - event.target.classList.add('right'); - this.article.style = ''; + event.target.classList.add('correct'); this.parentElement.removeChild(this); } } diff --git a/src/components/d-title.js b/src/components/d-title.js index a7f3747..bdc559d 100644 --- a/src/components/d-title.js +++ b/src/components/d-title.js @@ -31,7 +31,7 @@ const T = Template('d-title', ` } -
✓ Peer Reviewed
+ `); diff --git a/src/helpers/hover-box.js b/src/helpers/hover-box.js index be19f57..d59d5f3 100644 --- a/src/helpers/hover-box.js +++ b/src/helpers/hover-box.js @@ -1,8 +1,9 @@ -function make_hover_css(pos) { +function make_hover_css(target_node, pos) { const pretty = window.innerWidth > 600; const padding = pretty? 18 : 12; const outer_padding = pretty ? 18 : 0; - const bbox = document.querySelector('body').getBoundingClientRect(); + // const bbox = document.querySelector('body').getBoundingClientRect(); + const bbox = target_node.offsetParent.getBoundingClientRect(); let left = pos[0] - bbox.left, top = pos[1] - bbox.top; let width = Math.min(window.innerWidth-2*outer_padding, 648); left = Math.min(left, window.innerWidth-width-outer_padding); @@ -77,8 +78,8 @@ export class HoverBox { show(position) { this.visible = true; - const css = make_hover_css(position); - this.div.setAttribute('style', css ); + // const css = make_hover_css(this.triggerElement, position); + this.div.setAttribute('style', 'display: block;' ); } showAtNode(node) { @@ -88,7 +89,7 @@ export class HoverBox { hide() { this.visible = false; - this.div.setAttribute('style', 'display:none'); + this.div.setAttribute('style', 'display: none;'); this.stopTimeout(); } diff --git a/src/styles/d-article.css b/src/styles/d-article.css index ffa5a84..883516c 100644 --- a/src/styles/d-article.css +++ b/src/styles/d-article.css @@ -96,7 +96,7 @@ d-article a { d-article p, d-article ul, d-article ol { - font-family: georgia, serif; + /*font-family: georgia, serif;*/ margin-top: 0; margin-bottom: 1.7em; -webkit-font-smoothing: antialiased; @@ -133,6 +133,8 @@ d-article pre { } d-article hr { + grid-column: screen; + width: 100%; border: none; border-bottom: 1px solid rgba(0, 0, 0, 0.2); margin-top: 60px; @@ -144,56 +146,12 @@ d-article section { margin-bottom: 60px; } -/* Figure */ - -d-article figure { - position: relative; - margin-bottom: 36px; -} - -d-article figure img { - width: 100%; -} - -d-article figure svg text, -d-article figure svg tspan { -} - -d-article figure figcaption { - color: rgba(0, 0, 0, 0.6); - font-size: 12px; - line-height: 1.5em; -} - -@media(min-width: 1024px) { - d-article figure figcaption { - font-size: 13px; - } -} - -d-article figure.external img { - background: white; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); - padding: 18px; - box-sizing: border-box; -} - -d-article figure figcaption a { - color: rgba(0, 0, 0, 0.6); -} - d-article span.equation-mimic { font-family: georgia; font-size: 115%; font-style: italic; } -d-article figure figcaption b { - font-weight: 600; - color: rgba(0, 0, 0, 1.0); -} - d-article > d-code, d-article section > d-code { display: block; diff --git a/src/styles/styles-base.css b/src/styles/styles-base.css index 9eee0d2..8a184cf 100644 --- a/src/styles/styles-base.css +++ b/src/styles/styles-base.css @@ -52,3 +52,48 @@ pre { font-weight: 600; color: rgba(0, 0, 0, 0.5); } + + +/* Figure */ + +figure { + position: relative; + margin-bottom: 36px; +} + +figure img { + width: 100%; +} + +figure svg text, +figure svg tspan { +} + +figure figcaption { + color: rgba(0, 0, 0, 0.6); + font-size: 12px; + line-height: 1.5em; +} + +@media(min-width: 1024px) { + figure figcaption { + font-size: 13px; + } +} + +figure.external img { + background: white; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); + padding: 18px; + box-sizing: border-box; +} + +figure figcaption a { + color: rgba(0, 0, 0, 0.6); +} + +figure figcaption b { + font-weight: 600; + color: rgba(0, 0, 0, 1.0); +} From fe7b4748fccc545d526905085ca541db8fe621e5 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 10 Oct 2017 12:40:07 -0700 Subject: [PATCH 09/10] Move `collect_citations` to helper file --- src/components/d-cite.js | 12 ------------ src/controller.js | 6 +++--- src/extractors/citations.js | 4 ++-- src/helpers/citation.js | 12 ++++++++++++ 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/components/d-cite.js b/src/components/d-cite.js index 61a1787..7f4b299 100644 --- a/src/components/d-cite.js +++ b/src/components/d-cite.js @@ -61,18 +61,6 @@ figcaption .citation-number { `); -export function collectCitations(dom=document) { - const citations = new Set(); - const citeTags = dom.querySelectorAll('d-cite'); - for (const tag of citeTags) { - const keys = tag.getAttribute('key').split(','); - for (const key of keys) { - citations.add(key); - } - } - return [...citations]; -} - export class Cite extends T(HTMLElement) { /* Lifecycle */ diff --git a/src/controller.js b/src/controller.js index a7c70f0..20ddee0 100644 --- a/src/controller.js +++ b/src/controller.js @@ -1,6 +1,6 @@ import { FrontMatter } from './front-matter'; import { DMath } from './components/d-math'; -import { collectCitations } from './components/d-cite'; +import { collect_citations } from './helpers/citation.js'; import { parseFrontmatter } from './components/d-front-matter'; import optionalComponents from './transforms/optional-components'; @@ -42,7 +42,7 @@ export const Controller = { // const [citeTag, keys] = event.detail; // update citations - frontMatter.citations = collectCitations(); + frontMatter.citations = collect_citations(); frontMatter.citationsCollected = true; for (const waitingCallback of Controller.waitingOn.citations.slice()) { waitingCallback(); @@ -143,7 +143,7 @@ export const Controller = { Controller.listeners.onFrontMatterChanged({detail: data}); // console.debug('Resolving "citations" dependency due to initial DOM load.'); - frontMatter.citations = collectCitations(); + frontMatter.citations = collect_citations(); frontMatter.citationsCollected = true; for (const waitingCallback of Controller.waitingOn.citations.slice()) { waitingCallback(); diff --git a/src/extractors/citations.js b/src/extractors/citations.js index 41f20fe..ce2a504 100644 --- a/src/extractors/citations.js +++ b/src/extractors/citations.js @@ -1,5 +1,5 @@ -import { collectCitations } from '../components/d-cite'; +import { collect_citations } from '../helpers/citation.js'; export default function(dom, data) { - data.citations = collectCitations(dom); + data.citations = collect_citations(dom); } diff --git a/src/helpers/citation.js b/src/helpers/citation.js index 8062b6f..bedbc76 100644 --- a/src/helpers/citation.js +++ b/src/helpers/citation.js @@ -1,3 +1,15 @@ +export function collect_citations(dom=document) { + const citations = new Set(); + const citeTags = dom.querySelectorAll('d-cite'); + for (const tag of citeTags) { + const keys = tag.getAttribute('key').split(','); + for (const key of keys) { + citations.add(key); + } + } + return [...citations]; +} + export function inline_cite_short(keys){ function cite_string(key){ if (key in data.bibliography){ From 7f0fb66ec50ede07ae596898f0febfb580f45ab9 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 10 Oct 2017 12:50:15 -0700 Subject: [PATCH 10/10] Fix render.js crash due to renamed inputs --- bin/render.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/bin/render.js b/bin/render.js index bff3b25..6e893ec 100755 --- a/bin/render.js +++ b/bin/render.js @@ -10,26 +10,28 @@ const transforms = require('../dist/transforms.v2.js'); program .version('1.0.0') .description('Pre-renders distill articles for publication.') - .usage('-i -o ') - .option('-i, --input_path ', 'path to input HTML file.') - .option('-o, --output_path ', 'path to write rendered HTML file to.') + .usage('-i -o ') + .option('-i, --input-path ', 'path to input HTML file.') + .option('-o, --output-path ', 'path to write rendered HTML file to.') .parse(process.argv); +console.warn(program); + const virtualConsole = new jsdom.VirtualConsole(); // omitJSDOMErrors as JSDOM routinely can't parse modern CSS virtualConsole.sendTo(console, { omitJSDOMErrors: true }); const options = { runScripts: 'outside-only', QuerySelector: true, virtualConsole: virtualConsole }; -JSDOM.fromFile(program.input, options).then(dom => { +JSDOM.fromFile(program.inputPath, options).then(dom => { const window = dom.window; const document = window.document; const data = new transforms.FrontMatter; - data.inputHTMLPath = program.input; // may be needed to resolve relative links! - data.inputDirectory = path.dirname(program.input); + data.inputHTMLPath = program.inputPath; // may be needed to resolve relative links! + data.inputDirectory = path.dirname(program.inputPath); transforms.render(document, data); transforms.distillify(document, data); const transformedHtml = dom.serialize(); - fs.writeFileSync(program.output, transformedHtml); + fs.writeFileSync(program.outputPath, transformedHtml); }).catch(console.error);