Compare commits

..

1 Commits

Author SHA1 Message Date
Shan Carter ab8ab149e6 Moving headers in appendix to text column 2018-12-27 11:44:47 -08:00
18 changed files with 50 additions and 95 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ To contribute a change, [check out the contributing guide](CONTRIBUTING.md).
### Local Development ### Local Development
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. 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.
## Disclaimer & License ## Disclaimer & License
+1 -1
View File
@@ -78,7 +78,7 @@
<a class="marker" href="#section-1.1" id="section-1.1"><span>1.1</span></a> <a class="marker" href="#section-1.1" id="section-1.1"><span>1.1</span></a>
<h3>Citations</h3> <h3>Citations</h3>
<p><d-slider style="width: 200px;"></d-slider></p> <p><d-slider style="width: 200px;"></d-slider></p>
<p>We can<d-cite key="mercier2011humans"></d-cite> also cite <d-cite key="gregor2015draw,mercier2011humans,openai2018charter"></d-cite> external publications. <d-cite key="dong2014image,dumoulin2016guide,mordvintsev2015inceptionism"></d-cite>. We should also be testing footnotes<d-footnote>This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote.</d-footnote>. There are multiple footnotes, and they appear in the appendix<d-footnote>Given I have coded them right. Also, here's math in a footnote: <d-math>c = \sum_0^i{x}</d-math>. Also, a citation. Box-ception<d-cite key='gregor2015draw'></d-cite>!</d-footnote> as well.</p> <p>We can<d-cite key="mercier2011humans"></d-cite> also cite <d-cite key="gregor2015draw,mercier2011humans"></d-cite> external publications. <d-cite key="dong2014image,dumoulin2016guide,mordvintsev2015inceptionism"></d-cite>. We should also be testing footnotes<d-footnote>This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote. This will become a hoverable footnote.</d-footnote>. There are multiple footnotes, and they appear in the appendix<d-footnote>Given I have coded them right. Also, here's math in a footnote: <d-math>c = \sum_0^i{x}</d-math>. Also, a citation. Box-ception<d-cite key='gregor2015draw'></d-cite>!</d-footnote> as well.</p>
<a class="marker" href="#section-2" id="section-2"><span>2</span></a> <a class="marker" href="#section-2" id="section-2"><span>2</span></a>
<h2>Displaying code snippets</h2> <h2>Displaying code snippets</h2>
<p>Some inline javascript:<d-code language="javascript">var x = 25;</d-code>. And here's a javascript code block.</p> <p>Some inline javascript:<d-code language="javascript">var x = 25;</d-code>. And here's a javascript code block.</p>
-9
View File
@@ -97,12 +97,3 @@
year={2016}, year={2016},
url={https://arxiv.org/pdf/1609.07009.pdf} url={https://arxiv.org/pdf/1609.07009.pdf}
} }
@misc{openai2018charter,
author={OpenAI},
title={OpenAI Charter},
type={Blog},
number={April 9},
year={2018},
url={https://blog.openai.com/charter},
}
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "distill-template", "name": "distill-template",
"version": "2.4.1", "version": "2.2.26",
"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.4.1", "version": "2.2.26",
"description": "Template for creating Distill articles.", "description": "Template for creating Distill articles.",
"main": "dist/template.v2.js", "main": "dist/template.v2.js",
"bin": { "bin": {
+13 -16
View File
@@ -13,7 +13,6 @@
// limitations under the License. // limitations under the License.
import { Controller } from './controller'; import { Controller } from './controller';
import { domContentLoaded } from './helpers/domContentLoaded.js';
/* Transforms */ /* Transforms */
import { makeStyleTag } from './styles/styles'; import { makeStyleTag } from './styles/styles';
@@ -56,13 +55,13 @@ const distillMain = function() {
throw new Error('Runlevel 1: Distill Template is getting loaded more than once, aborting!'); throw new Error('Runlevel 1: Distill Template is getting loaded more than once, aborting!');
} else { } else {
window.distillTemplateIsLoading = true; window.distillTemplateIsLoading = true;
console.debug('Runlevel 1: Distill Template has started loading.'); console.info('Runlevel 1: Distill Template has started loading.');
} }
/* 2. Add styles if they weren't added during prerendering */ /* 2. Add styles if they weren't added during prerendering */
makeStyleTag(document); makeStyleTag(document);
console.debug('Runlevel 1: Static Distill styles have been added.'); console.info('Runlevel 1: Static Distill styles have been added.');
console.debug('Runlevel 1->2.'); console.info('Runlevel 1->2.');
window.distillRunlevel += 1; window.distillRunlevel += 1;
/* 3. Register Controller listener functions */ /* 3. Register Controller listener functions */
@@ -74,8 +73,8 @@ const distillMain = function() {
console.error('Runlevel 2: Controller listeners need to be functions!'); console.error('Runlevel 2: Controller listeners need to be functions!');
} }
} }
console.debug('Runlevel 2: We can now listen to controller events.'); console.info('Runlevel 2: We can now listen to controller events.');
console.debug('Runlevel 2->3.'); console.info('Runlevel 2->3.');
window.distillRunlevel += 1; window.distillRunlevel += 1;
/* 4. Register components */ /* 4. Register components */
@@ -94,31 +93,29 @@ const distillMain = function() {
} }
const allComponents = components.concat(distillComponents); const allComponents = components.concat(distillComponents);
for (const component of allComponents) { for (const component of allComponents) {
console.debug('Runlevel 2: Registering custom element: ' + component.is); console.info('Runlevel 2: Registering custom element: ' + component.is);
customElements.define(component.is, component); customElements.define(component.is, component);
} }
console.debug('Runlevel 3: Distill Template finished registering custom elements.'); console.info('Runlevel 3: Distill Template finished registering custom elements.');
console.debug('Runlevel 3->4.'); console.info('Runlevel 3->4.');
window.distillRunlevel += 1; window.distillRunlevel += 1;
// If template was added after DOMContentLoaded we may have missed that event. // If template was added after DOMContentLoaded we may have missed that event.
// Controller will check for that case, so trigger the event explicitly: // Controller will check for that case, so trigger the event explicitly:
if (domContentLoaded()) { Controller.listeners.DOMContentLoaded();
Controller.listeners.DOMContentLoaded();
}
console.debug('Runlevel 4: Distill Template initialisation complete.'); console.info('Runlevel 4: Distill Template initialisation complete.');
}; };
window.distillRunlevel = 0; window.distillRunlevel = 0;
/* 0. Check browser feature support; synchronously polyfill if needed */ /* 0. Check browser feature support; synchronously polyfill if needed */
if (Polyfills.browserSupportsAllFeatures()) { if (Polyfills.browserSupportsAllFeatures()) {
console.debug('Runlevel 0: No need for polyfills.'); console.info('Runlevel 0: No need for polyfills.');
console.debug('Runlevel 0->1.'); console.info('Runlevel 0->1.');
window.distillRunlevel += 1; window.distillRunlevel += 1;
distillMain(); distillMain();
} else { } else {
console.debug('Runlevel 0: Distill Template is loading polyfills.'); console.info('Runlevel 0: Distill Template is loading polyfills.');
Polyfills.load(distillMain); Polyfills.load(distillMain);
} }
+1 -1
View File
@@ -30,7 +30,7 @@ d-appendix {
} }
d-appendix h3 { d-appendix h3 {
grid-column: page-start / text-start; grid-column: text;
font-size: 15px; font-size: 15px;
font-weight: 500; font-weight: 500;
margin-top: 1em; margin-top: 1em;
+1 -1
View File
@@ -16,7 +16,7 @@ import { bibliography_cite } from '../helpers/citation';
const styles = ` const styles = `
d-citation-list { d-citation-list {
contain: style; contain: layout style;
} }
d-citation-list .references { d-citation-list .references {
+11 -37
View File
@@ -19,10 +19,11 @@ const T = Template('d-cite', `
<style> <style>
:host { :host {
display: inline-block;
} }
.citation { .citation {
display: inline-block;
color: hsla(206, 90%, 20%, 0.7); color: hsla(206, 90%, 20%, 0.7);
} }
@@ -67,6 +68,7 @@ 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"> <div id="citation-" class="citation">
<slot></slot>
<span class="citation-number"></span> <span class="citation-number"></span>
</div> </div>
`); `);
@@ -74,11 +76,6 @@ ul li:last-of-type {
export class Cite extends T(HTMLElement) { export class Cite extends T(HTMLElement) {
/* Lifecycle */ /* Lifecycle */
constructor() {
super();
this._numbers = [];
this._entries = [];
}
connectedCallback() { connectedCallback() {
this.outerSpan = this.root.querySelector('#citation-'); this.outerSpan = this.root.querySelector('#citation-');
@@ -87,13 +84,6 @@ export class Cite extends T(HTMLElement) {
window.customElements.whenDefined('d-hover-box').then(() => { window.customElements.whenDefined('d-hover-box').then(() => {
this.hoverBox.listen(this); this.hoverBox.listen(this);
}); });
// in case this component got connected after values were set
if (this.numbers) {
this.displayNumbers(this.numbers)
}
if (this.entries) {
this.displayEntries(this.entries)
}
} }
//TODO This causes an infinite loop on firefox with polyfills. //TODO This causes an infinite loop on firefox with polyfills.
@@ -112,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(',').map(k => k.trim()); const keys = newValue.split(',');
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);
@@ -133,37 +123,21 @@ export class Cite extends T(HTMLElement) {
/* Setters & Rendering */ /* Setters & Rendering */
set numbers(numbers) { set numbers(numbers) {
this._numbers = numbers;
this.displayNumbers(numbers);
}
get numbers() {
return this._numbers;
}
displayNumbers(numbers) {
if (!this.innerSpan) return;
const numberStrings = numbers.map( index => { const numberStrings = numbers.map( index => {
return index == -1 ? '?' : index + 1 + ''; return index == -1 ? '?' : index + 1 + '';
}); });
const textContent = '[' + numberStrings.join(', ') + ']'; const textContent = '[' + numberStrings.join(', ') + ']';
this.innerSpan.textContent = textContent; if (this.innerSpan) {
this.innerSpan.textContent = textContent;
}
} }
set entries(entries) { set entries(entries) {
this._entries = entries; if (this.hoverBox) {
this.displayEntries(entries) this.hoverBox.innerHTML = `<ul>
}
get entries() {
return this._entries;
}
displayEntries(entries) {
if (!this.hoverBox) return
this.hoverBox.innerHTML = `<ul>
${entries.map(hover_cite).map(html => `<li>${html}</li>`).join('\n')} ${entries.map(hover_cite).map(html => `<li>${html}</li>`).join('\n')}
</ul>`; </ul>`;
}
} }
} }
+2 -1
View File
@@ -30,11 +30,12 @@ export function _moveLegacyAffiliationFormatIntoArray(frontMatter) {
author.affiliations = [newAffiliation]; author.affiliations = [newAffiliation];
} }
} }
console.log(frontMatter)
return frontMatter return frontMatter
} }
export function parseFrontmatter(element) { export function parseFrontmatter(element) {
const scriptTag = element.firstElementChild; const scriptTag = element.querySelector('script');
if (scriptTag) { if (scriptTag) {
const type = scriptTag.getAttribute('type'); const type = scriptTag.getAttribute('type');
if (type.split('/')[1] == 'json') { if (type.split('/')[1] == 'json') {
+3 -2
View File
@@ -30,7 +30,7 @@ ${katexCSSTag}
:host { :host {
display: inline-block; display: inline-block;
contain: style; contain: content;
} }
:host([block]) { :host([block]) {
@@ -73,7 +73,8 @@ export class DMath extends Mutating(T(HTMLElement)) {
} }
// transform inline delimited math to d-math tags // transform inline delimited math to d-math tags
if (DMath.katexOptions.delimiters) { if (DMath.katexOptions.delimiters) {
renderMathInElement(document.body, DMath.katexOptions); const article = document.querySelector('d-article');
renderMathInElement(article, DMath.katexOptions);
} }
} }
+6 -4
View File
@@ -15,12 +15,14 @@
import { FrontMatter, mergeFromYMLFrontmatter } from './front-matter'; import { FrontMatter, mergeFromYMLFrontmatter } from './front-matter';
import { DMath } from './components/d-math'; import { DMath } from './components/d-math';
import { collect_citations } from './helpers/citation.js'; import { collect_citations } from './helpers/citation.js';
import { domContentLoaded } from './helpers/domContentLoaded.js';
import { parseFrontmatter } from './components/d-front-matter'; import { parseFrontmatter } from './components/d-front-matter';
import optionalComponents from './transforms/optional-components'; import optionalComponents from './transforms/optional-components';
const frontMatter = new FrontMatter(); const frontMatter = new FrontMatter();
function domContentLoaded() {
return ['interactive', 'complete'].indexOf(document.readyState) !== -1;
}
export const Controller = { export const Controller = {
@@ -107,7 +109,7 @@ export const Controller = {
if (citationListTag.hasAttribute('distill-prerendered')) { if (citationListTag.hasAttribute('distill-prerendered')) {
console.debug('Citation list was prerendered; not updating it.'); console.info('Citation list was prerendered; not updating it.');
} else { } else {
const entries = new Map(frontMatter.citations.map( citationKey => { const entries = new Map(frontMatter.citations.map( citationKey => {
return [citationKey, frontMatter.bibliography.get(citationKey)]; return [citationKey, frontMatter.bibliography.get(citationKey)];
@@ -165,11 +167,11 @@ export const Controller = {
console.warn('Controller received DOMContentLoaded but was already loaded!'); console.warn('Controller received DOMContentLoaded but was already loaded!');
return; return;
} else if (!domContentLoaded()) { } else if (!domContentLoaded()) {
console.warn('Controller received DOMContentLoaded at document.readyState: ' + document.readyState + '!'); console.warn('Controller received DOMContentLoaded before appropriate document.readyState!');
return; return;
} else { } else {
Controller.loaded = true; Controller.loaded = true;
console.debug('Runlevel 4: Controller running DOMContentLoaded'); console.log('Runlevel 4: Controller running DOMContentLoaded');
} }
const frontMatterTag = document.querySelector('d-front-matter'); const frontMatterTag = document.querySelector('d-front-matter');
-5
View File
@@ -96,9 +96,6 @@ 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;
if (source.doi) {
target.doi = source.doi;
}
} }
export class FrontMatter { export class FrontMatter {
@@ -163,7 +160,6 @@ export class FrontMatter {
// githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193', // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',
// updatedDate: 2017-03-21T07:13:16.000Z, // updatedDate: 2017-03-21T07:13:16.000Z,
// doi: '10.23915/distill.00001', // doi: '10.23915/distill.00001',
this.doi = undefined;
this.publishedDate = undefined; this.publishedDate = undefined;
} }
@@ -322,7 +318,6 @@ export class FrontMatter {
Object.assign(target, this); Object.assign(target, this);
target.bibliography = objectFromMap(this.bibliographyEntries); target.bibliography = objectFromMap(this.bibliographyEntries);
target.url = this.url; target.url = this.url;
target.doi = this.doi;
target.githubUrl = this.githubUrl; target.githubUrl = this.githubUrl;
target.previewURL = this.previewURL; target.previewURL = this.previewURL;
if (this.publishedDate) { if (this.publishedDate) {
+2 -5
View File
@@ -61,11 +61,9 @@ function author_string(ent, template, sep, finalSep){
if (name.indexOf(',') != -1){ if (name.indexOf(',') != -1){
var last = name.split(',')[0].trim(); var last = name.split(',')[0].trim();
var firsts = name.split(',')[1]; var firsts = name.split(',')[1];
} else if (name.indexOf(' ') != -1) { } else {
var last = name.split(' ').slice(-1)[0].trim(); var last = name.split(' ').slice(-1)[0].trim();
var firsts = name.split(' ').slice(0,-1).join(' '); var firsts = name.split(' ').slice(0,-1).join(' ');
} else {
var last = name.trim();
} }
var initials = ''; var initials = '';
if (firsts != undefined) { if (firsts != undefined) {
@@ -74,8 +72,7 @@ function author_string(ent, template, sep, finalSep){
} }
return template.replace('${F}', firsts) return template.replace('${F}', firsts)
.replace('${L}', last) .replace('${L}', last)
.replace('${I}', initials) .replace('${I}', initials);
.trim(); // in case one of first or last was empty
}); });
if (names.length > 1) { if (names.length > 1) {
var str = name_strings.slice(0, names.length-1).join(sep); var str = name_strings.slice(0, names.length-1).join(sep);
-3
View File
@@ -1,3 +0,0 @@
export function domContentLoaded() {
return ['interactive', 'complete'].indexOf(document.readyState) !== -1;
}
+5 -5
View File
@@ -13,7 +13,7 @@
// limitations under the License. // limitations under the License.
export function addPolyfill(polyfill, polyfillLoadedCallback) { export function addPolyfill(polyfill, polyfillLoadedCallback) {
console.debug('Runlevel 0: Polyfill required: ' + polyfill.name); console.info('Runlevel 0: Polyfill required: ' + polyfill.name);
const script = document.createElement('script'); const script = document.createElement('script');
script.src = polyfill.url; script.src = polyfill.url;
script.async = false; script.async = false;
@@ -58,11 +58,11 @@ export class Polyfills {
// Define an intermediate callback that checks if all is loaded. // Define an intermediate callback that checks if all is loaded.
const polyfillLoaded = function(polyfill) { const polyfillLoaded = function(polyfill) {
polyfill.loaded = true; polyfill.loaded = true;
console.debug('Runlevel 0: Polyfill has finished loading: ' + polyfill.name); console.info('Runlevel 0: Polyfill has finished loading: ' + polyfill.name);
// console.debug(window[polyfill.name]); // console.info(window[polyfill.name]);
if (Polyfills.neededPolyfills.every((poly) => poly.loaded)) { if (Polyfills.neededPolyfills.every((poly) => poly.loaded)) {
console.debug('Runlevel 0: All required polyfills have finished loading.'); console.info('Runlevel 0: All required polyfills have finished loading.');
console.debug('Runlevel 0->1.'); console.info('Runlevel 0->1.');
window.distillRunlevel = 1; window.distillRunlevel = 1;
callback(); callback();
} }
+1 -1
View File
@@ -15,7 +15,7 @@
*/ */
d-byline { d-byline {
contain: style; contain: content;
overflow: hidden; overflow: hidden;
border-top: 1px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, 0.1);
font-size: 0.8rem; font-size: 0.8rem;
+1 -1
View File
@@ -67,7 +67,7 @@ export default function render(dom) {
if (templateTag) { if (templateTag) {
templateTag.parentNode.removeChild(templateTag); templateTag.parentNode.removeChild(templateTag);
} else { } else {
console.debug('FYI: Did not find template tag when trying to remove it. You may not have added it. Be aware that our polyfills will add it.') console.info('FYI: Did not find template tag when trying to remove it. You may not have added it. Be aware that our polyfills will add it.')
} }
// add loader // add loader