Compare commits

...

20 Commits

Author SHA1 Message Date
Ludwig Schubert 0300b98cb6 2.3.0 2019-01-06 20:51:37 -08:00
Ludwig Schubert ecfd28bdf9 Allow any tag type in parseFrontMatter. <script> is still recommended where possible. 2019-01-06 20:33:19 -08:00
Ludwig Schubert 86ca6f72f4 Merge branch 'master' of github.com:distillpub/template 2019-01-03 14:42:54 -08:00
Ludwig Schubert d0f5824e0c Support specifying DOI in frontMatter (meant to be used for self-publishing; not for pre-rendered distill publishing) 2019-01-03 14:42:45 -08:00
Ludwig Schubert 8bd32bdf0b Merge pull request #100 from distillpub/d-cite-keys-whitespace
Trim whitespace
2018-12-28 19:59:06 +00:00
Shan Carter f2ae6d7aa3 Merge pull request #81 from lbertge/master
Update readme
2018-12-27 11:49:00 -08:00
Shan Carter 37c7483cb0 Trim whitespace
Trimming whitespace on keys.
2018-12-20 14:01:30 -08:00
Ludwig Schubert a272efb89c 2.2.26 2018-12-17 13:28:04 -08:00
Ludwig Schubert bb19b13467 Fixes #80 by switching a div tag inside a p tag to a span tag.
Thanks, humbertaco!
2018-12-17 13:26:33 -08:00
Ludwig Schubert 7e240ddf4f Work around wrong baseline for math tags resulting from an overzealous contain optimization that became active in Chrome 71. Fixes #96. 2018-12-17 13:17:53 -08:00
Ludwig Schubert 84c400184d Render math tags in all elements under body, not just in d-article.
Should fix #97, but still in testing.
2018-12-17 13:06:18 -08:00
Ludwig Schubert d187130657 2.2.25 2018-12-17 12:59:47 -08:00
Ludwig Schubert cc6b6bf595 Fix #95 in Chrome 69+, Safari, Firefox by reverting to JS based tooltip positioning. Also DRYs some styles 2018-12-17 12:59:38 -08:00
Ludwig Schubert 9463d6e58d 2.2.24 2018-08-30 15:37:02 -07:00
Ludwig Schubert 3c2f782e74 Fix scope typo 2018-08-30 15:36:55 -07:00
Ludwig Schubert 6bd5d0bf03 2.2.23 2018-07-11 14:00:02 -07:00
Ludwig Schubert a5f663c249 Disable converting ligatures during pre-rendering due to Chrome bug 862648 2018-07-11 13:59:54 -07:00
Albert Ge 975c3e8256 Update readme 2018-07-06 14:47:18 -07:00
Ludwig Schubert b854bd0124 Merge branch 'master' of github.com:distillpub/template 2018-06-22 12:02:59 -07:00
Ludwig Schubert a6df552537 Generalize disclaimer 2018-03-30 11:09:31 -07:00
14 changed files with 42 additions and 36 deletions
+5 -5
View File
@@ -1,8 +1,6 @@
# Distill Template # Distill Template
_Disclaimer: This project is research code. It is not an official Google product._ This is the repository for the Distill web framework.
This is the repository for the distill web framework.
## Contributing ## Contributing
@@ -13,10 +11,12 @@ To contribute a change, [check out the contributing guide](CONTRIBUTING.md).
### Local Development ### Local Development
Run `npm run start` to start a watching build rollup server. To view the sample pages in the repo, you can run `npm run serve` as a separate process which starts a static server. `npm run build` will run a one-time build. First, run `npm install` to install all node modules required. Then, run `npm run dev` to start a watching build rollup server. To view the sample pages in the repo, you can run `npm run serve` as a separate process which starts a static server. `npm run build` will run a one-time build.
## License ## Disclaimer & License
_This project is research code. It is not an official product of Google or any other institution supporting Distill._
Copyright 2018, The Distill Template Authors. Copyright 2018, The Distill Template Authors.
+1 -1
View File
@@ -32,7 +32,7 @@
{ {
"author":"Chris Olah", "author":"Chris Olah",
"authorURL":"https://colah.github.io/", "authorURL":"https://colah.github.io/",
"affiliations": [{"name": "Google Brain", "url": "https://g.co/brain"}] "affiliations": [{"name": "Google Brain"}]
}, },
{ {
"author":"Ludwig Schubert", "author":"Ludwig Schubert",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "distill-template", "name": "distill-template",
"version": "2.2.19", "version": "2.3.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "distill-template", "name": "distill-template",
"version": "2.2.22", "version": "2.3.0",
"description": "Template for creating Distill articles.", "description": "Template for creating Distill articles.",
"main": "dist/template.v2.js", "main": "dist/template.v2.js",
"bin": { "bin": {
+2 -2
View File
@@ -24,11 +24,11 @@ export function bylineTemplate(frontMatter) {
<p class="author"> <p class="author">
${author.personalURL ? ` ${author.personalURL ? `
<a class="name" href="${author.personalURL}">${author.name}</a>` : ` <a class="name" href="${author.personalURL}">${author.name}</a>` : `
<div class="name">${author.name}</div>`} <span class="name">${author.name}</span>`}
</p> </p>
<p class="affiliation"> <p class="affiliation">
${author.affiliations.map(affiliation => ${author.affiliations.map(affiliation =>
affiliation.url ? `<a class="affiliation" href="${affiliation.url}">${affiliation.name}</a>` : `<div class="affiliation">${affiliation.name}</div>` affiliation.url ? `<a class="affiliation" href="${affiliation.url}">${affiliation.name}</a>` : `<span class="affiliation">${affiliation.name}</span>`
).join(', ')} ).join(', ')}
</p> </p>
`).join('')} `).join('')}
+6 -7
View File
@@ -19,7 +19,7 @@ const T = Template('d-cite', `
<style> <style>
:host { :host {
display: inline-block;
} }
.citation { .citation {
@@ -48,10 +48,6 @@ figcaption .citation-number {
line-height: 1em; line-height: 1em;
} }
d-hover-box {
margin-top: 1.9em;
}
ul { ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -71,7 +67,10 @@ ul li:last-of-type {
<d-hover-box id="hover-box"></d-hover-box> <d-hover-box id="hover-box"></d-hover-box>
<div id="citation-" class="citation"><slot></slot><span class="citation-number"></span></div> <div id="citation-" class="citation">
<slot></slot>
<span class="citation-number"></span>
</div>
`); `);
export class Cite extends T(HTMLElement) { export class Cite extends T(HTMLElement) {
@@ -103,7 +102,7 @@ export class Cite extends T(HTMLElement) {
attributeChangedCallback(name, oldValue, newValue) { attributeChangedCallback(name, oldValue, newValue) {
const eventName = oldValue ? 'onCiteKeyChanged' : 'onCiteKeyCreated'; const eventName = oldValue ? 'onCiteKeyChanged' : 'onCiteKeyCreated';
const keys = newValue.split(','); const keys = newValue.split(',').map(k => k.trim());
const options = { detail: [this, keys], bubbles: true }; const options = { detail: [this, keys], bubbles: true };
const event = new CustomEvent(eventName, options); const event = new CustomEvent(eventName, options);
document.dispatchEvent(event); document.dispatchEvent(event);
+1 -7
View File
@@ -22,6 +22,7 @@ d-math[block] {
} }
:host { :host {
} }
sup { sup {
@@ -37,13 +38,6 @@ span {
cursor: default; cursor: default;
} }
.container {
position: absolute;
width: 100%;
left: 0;
z-index: 10000;
}
.footnote-container { .footnote-container {
padding: 10px; padding: 10px;
} }
+1 -1
View File
@@ -35,7 +35,7 @@ export function _moveLegacyAffiliationFormatIntoArray(frontMatter) {
} }
export function parseFrontmatter(element) { export function parseFrontmatter(element) {
const scriptTag = element.querySelector('script'); const scriptTag = element.firstElementChild;
if (scriptTag) { if (scriptTag) {
const type = scriptTag.getAttribute('type'); const type = scriptTag.getAttribute('type');
if (type.split('/')[1] == 'json') { if (type.split('/')[1] == 'json') {
+10 -3
View File
@@ -20,9 +20,10 @@ const T = Template('d-hover-box', `
:host { :host {
position: absolute; position: absolute;
width: 100%; width: 100%;
left: 0; left: 0px;
z-index: 10000; z-index: 10000;
display: none; display: none;
white-space: normal
} }
.container { .container {
@@ -40,10 +41,13 @@ const T = Template('d-hover-box', `
left: 0; left: 0;
width: 100%; width: 100%;
border: 1px solid rgba(0, 0, 0, 0.1); border: 1px solid rgba(0, 0, 0, 0.1);
background-color: rgb(250, 250, 250); background-color: rgba(250, 250, 250, 0.95);
box-shadow: 0 0 7px rgba(0, 0, 0, 0.1); box-shadow: 0 0 7px rgba(0, 0, 0, 0.1);
border-radius: 4px; border-radius: 4px;
box-sizing: border-box; box-sizing: border-box;
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
} }
</style> </style>
@@ -117,11 +121,14 @@ export class HoverBox extends T(HTMLElement) {
show(position) { show(position) {
this.visible = true; this.visible = true;
this.style.display = 'block'; this.style.display = 'block';
// 10px extra offset from element
this.style.top = Math.round(position[1] + 10) + 'px';
} }
showAtNode(node) { showAtNode(node) {
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop
const bbox = node.getBoundingClientRect(); const bbox = node.getBoundingClientRect();
this.show([bbox.right, bbox.bottom]); this.show([node.offsetLeft + bbox.width, node.offsetTop + bbox.height]);
} }
hide() { hide() {
+1
View File
@@ -96,6 +96,7 @@ export function mergeFromYMLFrontmatter(target, source) {
target.authors = source.authors.map( (authorObject) => new Author(authorObject)); target.authors = source.authors.map( (authorObject) => new Author(authorObject));
target.katex = source.katex; target.katex = source.katex;
target.password = source.password; target.password = source.password;
target.doi = source.doi;
} }
export class FrontMatter { export class FrontMatter {
+1 -1
View File
@@ -227,7 +227,7 @@ d-figure {
/* KaTeX */ /* KaTeX */
.katex, .katex-prerendered { .katex, .katex-prerendered {
contain: content; contain: style;
display: inline-block; display: inline-block;
} }
+5 -5
View File
@@ -17,20 +17,20 @@ import { renderMathInElement } from '../helpers/katex-auto-render';
export default function(dom, data) { export default function(dom, data) {
let needsCSS = false; let needsCSS = false;
const article = dom.querySelector('d-article'); const body = dom.querySelector('body');
if (!article) { if (!body) {
console.warn("No d-article tag found!"); console.warn("No body tag found!");
return; return;
} }
if (data.katex && data.katex.delimiters) { if (data.katex && data.katex.delimiters) {
global.document = dom; global.document = dom;
renderMathInElement(article, data.katex); renderMathInElement(body, data.katex);
} }
// render d-math tags // render d-math tags
const mathTags = article.querySelectorAll('d-math'); const mathTags = body.querySelectorAll('d-math');
if (mathTags.length > 0) { if (mathTags.length > 0) {
needsCSS = true; needsCSS = true;
console.warn(`Prerendering ${mathTags.length} math tags...`); console.warn(`Prerendering ${mathTags.length} math tags...`);
+1 -1
View File
@@ -43,7 +43,7 @@ export default function(dom, data) {
let title = dom.querySelector('d-title'); let title = dom.querySelector('d-title');
if (!title) { if (!title) {
let title = dom.createElement('d-title'); title = dom.createElement('d-title');
body.insertBefore(title, byline); body.insertBefore(title, byline);
} }
+6 -1
View File
@@ -24,12 +24,17 @@ export default function(dom) {
if (text && acceptNode(n)) { if (text && acceptNode(n)) {
text = quotes(text); text = quotes(text);
text = punctuation(text); text = punctuation(text);
text = ligatures(text); // TODO: Add back support for ligatures once their uppercased versions don't hang Chrome search anymore
// see: https://bugs.chromium.org/p/chromium/issues/detail?id=862648
// text = ligatures(text);
n.nodeValue = text; n.nodeValue = text;
} }
} }
} }
// 2018-07-11 shancarter@ and ludwigschubert@ no longer know what this was meant to accomplish
// if it was trying to not replace text in any child nodes of those listed here,
// then it does not accomplish that.
function acceptNode(node) { function acceptNode(node) {
var parent = node.parentElement; var parent = node.parentElement;
var isMath = (parent && parent.getAttribute && parent.getAttribute('class')) ? parent.getAttribute('class').includes('katex') || parent.getAttribute('class').includes('MathJax') : false; var isMath = (parent && parent.getAttribute && parent.getAttribute('class')) ? parent.getAttribute('class').includes('katex') || parent.getAttribute('class').includes('MathJax') : false;