From 9041141bf84a1e438c4f4ae018452647c496ccc4 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Thu, 24 Aug 2017 16:08:40 -0700 Subject: [PATCH 1/3] Testing release webhook; please ignore From 366a3da5524302859c5a5f00c2e5c18124db8d70 Mon Sep 17 00:00:00 2001 From: Ludwig Schubert Date: Tue, 29 Aug 2017 10:34:00 -0700 Subject: [PATCH 2/3] More work on perf: CSS contain etc. --- bin/render | 4 +- examples/article.html | 2 +- package-lock.json | 101 +++++++++- package.json | 3 +- rollup.config.dev.js | 17 +- src/components.js | 3 +- src/components/d-abstract.js | 3 +- src/components/d-acknowledgements.js | 7 + src/components/d-appendix.js | 3 +- src/components/d-article.js | 6 +- src/components/d-bibliography.js | 3 + src/components/d-byline.js | 224 +++++++++++---------- src/components/d-figure.js | 70 ++++++- src/components/d-footnote-list.js | 4 + src/components/d-front-matter.js | 4 +- src/components/d-math.js | 4 + src/components/d-title.js | 6 +- src/components/d-toc.js | 71 ++++++- src/controller.js | 4 +- src/distill-components/distill-appendix.js | 3 + src/distill-components/distill-footer.js | 2 + src/distill-components/distill-header.js | 6 +- src/extractors/front-matter.js | 2 +- src/front-matter.js | 69 ++++--- src/styles/styles-article.css | 6 + src/styles/styles-layout.css | 224 +-------------------- src/styles/styles.js | 17 +- src/transforms.js | 11 +- src/transforms/byline.js | 156 +------------- src/transforms/helpers0/bibtex.js | 33 --- src/transforms/helpers0/citation.js | 165 --------------- src/transforms/helpers0/hover-box.js | 108 ---------- src/transforms/helpers0/layout.js | 33 --- src/transforms/toc.js | 9 + 34 files changed, 475 insertions(+), 908 deletions(-) delete mode 100644 src/transforms/helpers0/bibtex.js delete mode 100644 src/transforms/helpers0/citation.js delete mode 100644 src/transforms/helpers0/hover-box.js delete mode 100644 src/transforms/helpers0/layout.js create mode 100644 src/transforms/toc.js diff --git a/bin/render b/bin/render index e9ab46c..1619718 100755 --- a/bin/render +++ b/bin/render @@ -4,7 +4,7 @@ const fs = require('fs'); const jsdom = require('jsdom').jsdom; const serialize = require('jsdom').serializeDocument; const program = require('commander'); -const transforms = require('../dist/transforms.js'); +const transforms = require('../dist/transforms.v2.js'); program .version('0.0.1') @@ -12,7 +12,7 @@ program .parse(process.argv); const htmlString = fs.readFileSync(program.input, 'utf8'); -const data = {}; +const data = new transforms.FrontMatter; const dom = jsdom(htmlString, {features: {ProcessExternalResources: false, FetchExternalResources: false, runScripts: 'dangerously'}}); transforms.render(dom, data); transforms.distillify(dom, data); diff --git a/examples/article.html b/examples/article.html index 1219e02..78edaf5 100644 --- a/examples/article.html +++ b/examples/article.html @@ -23,8 +23,8 @@

Attention and Augmented Recurrent Neural Networks

Some people want a deck

-
+

This is the first paragraph of the article. Test a long — dash -- here it is.

diff --git a/package-lock.json b/package-lock.json index f6c919f..dedefcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "distill-template", - "version": "2.0.0", + "version": "2.0.0-alpha", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -71,6 +71,23 @@ } } }, + "acorn-object-spread": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz", + "integrity": "sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", @@ -852,6 +869,44 @@ "pako": "0.2.9" } }, + "buble": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.15.2.tgz", + "integrity": "sha1-VH/EdIP45egXbYKqXrzLGDsC1hM=", + "dev": true, + "requires": { + "acorn": "3.3.0", + "acorn-jsx": "3.0.1", + "acorn-object-spread": "1.0.0", + "chalk": "1.1.3", + "magic-string": "0.14.0", + "minimist": "1.2.0", + "os-homedir": "1.0.2" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "magic-string": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.14.0.tgz", + "integrity": "sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI=", + "dev": true, + "requires": { + "vlq": "0.2.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -3181,6 +3236,11 @@ "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", "dev": true }, + "intersection-observer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.4.0.tgz", + "integrity": "sha512-hBECeRcNPMrQP02IlicMCDiL19KQweoWukv35juIVehB2lE+spel5UyfTux/YCkXaR8Zz0jq3xMZeWYZBAU2SA==" + }, "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", @@ -4699,13 +4759,10 @@ } }, "rollup": { - "version": "0.45.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.45.2.tgz", - "integrity": "sha512-2+bq5GQSrocdhr+M92mOQRmF1evtLRzv9NdmEC2wo7BILvTG8irHCtD0q+zg8ikNu63iJicdN5IzyxAXRTFKOQ==", - "dev": true, - "requires": { - "source-map-support": "0.4.15" - } + "version": "0.48.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.48.2.tgz", + "integrity": "sha512-5IOVEA87/OWQlojaAPN0WStLAhlaY7GS/5p+pA/IHReXjtc+d7IJYgRD3Y/U2LVXoD7f1SBc3ymYd4g3M/zRzQ==", + "dev": true }, "rollup-plugin-babili": { "version": "3.1.0", @@ -4718,6 +4775,34 @@ "babel-preset-babili": "0.1.4" } }, + "rollup-plugin-buble": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.15.0.tgz", + "integrity": "sha1-g8PonH/SJmx5GPQbo5gDE1Gcf9A=", + "dev": true, + "requires": { + "buble": "0.15.2", + "rollup-pluginutils": "1.5.2" + }, + "dependencies": { + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + } + } + }, "rollup-plugin-commonjs": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-7.1.0.tgz", diff --git a/package.json b/package.json index c1306b5..0101cdd 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "scripts": { "start": "rollup -c rollup.config.dev.js -w", - "serve": "python3 -m http.server --bind 127.0.0.1", + "serve": "python3 -m http.server --bind 127.0.0.1 8888", "test": "mocha", "lint": "eslint", "build": "rollup -c rollup.config.js" @@ -32,6 +32,7 @@ "prismjs": "^1.6.0", "rollup": "latest", "rollup-plugin-babili": "^3.1.0", + "rollup-plugin-buble": "^0.15.0", "rollup-plugin-commonjs": "^7.0.0", "rollup-plugin-copy": "^0.2.3", "rollup-plugin-gzip": "^1.2.0", diff --git a/rollup.config.dev.js b/rollup.config.dev.js index c87b358..1dd57c3 100644 --- a/rollup.config.dev.js +++ b/rollup.config.dev.js @@ -1,19 +1,20 @@ import resolve from 'rollup-plugin-node-resolve'; import string from 'rollup-plugin-string'; import commonjs from 'rollup-plugin-commonjs'; +import buble from 'rollup-plugin-buble'; const componentsConfig = { - entry: 'src/components.js', - targets: [{format: 'umd', moduleName: 'dl', dest: 'dist/template.v2.js'}], + input: 'src/components.js', + output: [{format: 'umd', name: 'dl', file: 'dist/template.v2.js'}], }; const transformsConfig = { - entry: 'src/transforms.js', - targets: [{format: 'umd', moduleName: 'dl', dest: 'dist/transforms.v2.js'}], + input: 'src/transforms.js', + output: [{format: 'umd', name: 'dl', file: 'dist/transforms.v2.js'}], }; const defaultConfig = { - sourceMap: true, + sourcemap: true, plugins: [ resolve({ jsnext: true, @@ -29,6 +30,12 @@ const defaultConfig = { Object.assign(componentsConfig, defaultConfig); Object.assign(transformsConfig, defaultConfig); +// transpile transforms so the node render script works… +transformsConfig.plugins.push( + buble({ + target: { 'node': 6 } + })); + export default [ componentsConfig, transformsConfig, diff --git a/src/components.js b/src/components.js index 877e195..f835bcf 100644 --- a/src/components.js +++ b/src/components.js @@ -1,5 +1,6 @@ /* Static styles and other modules */ -import './styles/styles'; +import { makeStyleTag } from './styles/styles'; +makeStyleTag(document); /* Components */ import { Abstract } from './components/d-abstract'; diff --git a/src/components/d-abstract.js b/src/components/d-abstract.js index 553f33f..ff46ae5 100644 --- a/src/components/d-abstract.js +++ b/src/components/d-abstract.js @@ -7,7 +7,8 @@ const T = Template('d-abstract', ` display: block; font-size: 23px; line-height: 1.7em; - margin-bottom: 140px; + margin-top: 64px; + margin-bottom: 64px; } ${body('d-abstract')} diff --git a/src/components/d-acknowledgements.js b/src/components/d-acknowledgements.js index 842e652..1a70a95 100644 --- a/src/components/d-acknowledgements.js +++ b/src/components/d-acknowledgements.js @@ -2,6 +2,11 @@ import { Template } from '../mixins/template'; const T = Template('d-acknowledgements', ` diff --git a/src/components/d-appendix.js b/src/components/d-appendix.js index ae48e7e..8a54417 100644 --- a/src/components/d-appendix.js +++ b/src/components/d-appendix.js @@ -14,9 +14,10 @@ const T = Template('d-appendix', ` margin-bottom: 0; border-top: 1px solid rgba(0,0,0,0.1); color: rgba(0,0,0,0.5); - background: hsl(180, 5%, 98%); padding-top: 36px; padding-bottom: 48px; + + contain: content; } ${body('.content')} diff --git a/src/components/d-article.js b/src/components/d-article.js index 63e5715..ba9996f 100644 --- a/src/components/d-article.js +++ b/src/components/d-article.js @@ -2,7 +2,11 @@ import { Template } from '../mixins/template'; import { Controller } from '../controller'; const T = Template('d-article', ` - + `, false); // export function addInferableTags(dom, frontMatter) { diff --git a/src/components/d-bibliography.js b/src/components/d-bibliography.js index c59589c..c868f23 100644 --- a/src/components/d-bibliography.js +++ b/src/components/d-bibliography.js @@ -4,6 +4,9 @@ import { bibliography_cite } from '../helpers/citation'; export const templateString = ` +}`; - -`, true); export function bylineTemplate(frontMatter) { return ` +