mirror of
https://github.com/wassname/template.git
synced 2026-06-28 00:45:44 +08:00
Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ab8ab149e6 | |||
| a272efb89c | |||
| bb19b13467 | |||
| 7e240ddf4f | |||
| 84c400184d | |||
| d187130657 | |||
| cc6b6bf595 | |||
| 9463d6e58d | |||
| 3c2f782e74 | |||
| 6bd5d0bf03 | |||
| a5f663c249 | |||
| b854bd0124 | |||
| 5217fd9943 | |||
| a6df552537 | |||
| a06cb5794c | |||
| 7ff8796266 | |||
| 0bc2ce69da | |||
| 4fac022efc | |||
| dcf01cbc0f | |||
| c6cd820bc3 | |||
| 6941ba780d | |||
| 6f7df48fc2 | |||
| 71450e9ba8 | |||
| 6679b120ab | |||
| 8bff98944a | |||
| b4c8fdc56a | |||
| c75787615e | |||
| c2ef8e38c3 | |||
| bfcff784b1 | |||
| 000fa088db | |||
| f221583de8 | |||
| cddd538f9d | |||
| 6f95c37c2c | |||
| db3af262f2 | |||
| 184e094ae9 | |||
| 5ede2dd9d0 | |||
| 2a14b4c811 | |||
| 350b6c6f67 | |||
| 49deb31aeb | |||
| b5a00b7f43 | |||
| 0f8f0f5962 | |||
| 094f0d4c58 | |||
| cd4594f320 | |||
| be585691c5 | |||
| b25fd66fd7 | |||
| 010eed6280 | |||
| 3a643ab7ad | |||
| d0463ff769 | |||
| 3bccc25805 | |||
| a54f434a52 | |||
| 2ab9a24a79 | |||
| 399e832441 | |||
| e18d011fa8 | |||
| 70d8507938 | |||
| 2e6a0dda6d | |||
| 315e888810 | |||
| 4745281c2b | |||
| ebffcb4416 | |||
| ecce53f1a2 | |||
| f355ff6894 | |||
| f388c39553 | |||
| 11b00b4cee | |||
| 302370c1cf | |||
| b8d26a4dac | |||
| 00076d3123 | |||
| 94bba88924 | |||
| 4c9c387760 | |||
| 33714c9ca4 | |||
| a43db020b1 |
+2
-2
@@ -2,11 +2,11 @@ language: node_js
|
|||||||
node_js:
|
node_js:
|
||||||
- "node" # latest version
|
- "node" # latest version
|
||||||
cache:
|
cache:
|
||||||
yarn: true
|
|
||||||
directories:
|
directories:
|
||||||
- node_modules
|
- node_modules
|
||||||
script:
|
script:
|
||||||
- yarn build
|
- npm run build
|
||||||
|
- npm test
|
||||||
deploy:
|
deploy:
|
||||||
provider: releases
|
provider: releases
|
||||||
api_key: $GITHUB_OAUTH_TOKEN
|
api_key: $GITHUB_OAUTH_TOKEN
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# This is the list of The Distill Template authors for copyright purposes.
|
||||||
|
#
|
||||||
|
# This does not necessarily list everyone who has contributed code, since in
|
||||||
|
# some cases, their employer may be the copyright holder. To see the full list
|
||||||
|
# of contributors, see the revision history in source control.
|
||||||
|
Google LLC
|
||||||
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
# How to Contribute
|
||||||
|
|
||||||
|
We'd love to accept your patches and contributions to this project. There are
|
||||||
|
just a few small guidelines you need to follow.
|
||||||
|
|
||||||
|
## Contributor License Agreement
|
||||||
|
|
||||||
|
Contributions to this project must be accompanied by a Contributor License
|
||||||
|
Agreement. You (or your employer) retain the copyright to your contribution,
|
||||||
|
this simply gives us permission to use and redistribute your contributions as
|
||||||
|
part of the project. Head over to <https://cla.developers.google.com/> to see
|
||||||
|
your current agreements on file or to sign a new one.
|
||||||
|
|
||||||
|
You generally only need to submit a CLA once, so if you've already submitted one
|
||||||
|
(even if it was for a different project), you probably don't need to do it
|
||||||
|
again.
|
||||||
|
|
||||||
|
## Code reviews
|
||||||
|
|
||||||
|
All submissions, including submissions by project members, require review. We
|
||||||
|
use GitHub pull requests for this purpose. Consult
|
||||||
|
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
|
||||||
|
information on using pull requests.
|
||||||
|
|
||||||
|
## Community Guidelines
|
||||||
|
|
||||||
|
This project follows [Google's Open Source Community
|
||||||
|
Guidelines](https://opensource.google.com/conduct/).
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
@@ -1,25 +1,25 @@
|
|||||||
# Distill Template [](https://travis-ci.org/distillpub/template)
|
# Distill Template
|
||||||
|
|
||||||
This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for the [Distill journal](http://distill.pub), visit http://distill.pub/guide/.
|
This is the repository for the Distill web framework.
|
||||||
|
|
||||||
The general process for using this framework is to hotlink the compiled code in your dev environment.
|
## Contributing
|
||||||
|
|
||||||
```html
|
|
||||||
<script src="https://distill.pub/template.v2.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also install it as a local dependency through npm or with [yarn](https://yarnpkg.com).
|
To give feedback, report a bug, or request a feature, please open an issue.
|
||||||
|
|
||||||
```
|
To contribute a change, [check out the contributing guide](CONTRIBUTING.md).
|
||||||
npm install --D distill-template
|
|
||||||
```
|
|
||||||
|
|
||||||
If you're interested in submitting pull requests or developing on the framework itself, read on.
|
### Local Development
|
||||||
|
|
||||||
## 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.
|
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.
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
Run `npm test`. That's it.
|
## 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.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0
|
||||||
|
|
||||||
|
See the [full license](LICENSE).
|
||||||
|
|||||||
@@ -1,5 +1,19 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const program = require('commander');
|
const program = require('commander');
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!DOCTYPE html><html lang="en"><head>
|
<!DOCTYPE html><html lang="en"><head>
|
||||||
<meta charset="utf8">
|
<meta charset="utf8">
|
||||||
|
|
||||||
|
|||||||
+30
-11
@@ -1,10 +1,28 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<script src="../dist/template.v2.js"></script>
|
<script src="../dist/template.v2.js"></script>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" >
|
||||||
|
<meta charset="utf8">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<distill-header></distill-header>
|
||||||
<d-front-matter>
|
<d-front-matter>
|
||||||
<script id='distill-front-matter' type="text/json">{
|
<script id='distill-front-matter' type="text/json">{
|
||||||
"title": "Why Momentum Really Works",
|
"title": "Why Momentum Really Works",
|
||||||
@@ -14,20 +32,20 @@
|
|||||||
{
|
{
|
||||||
"author":"Chris Olah",
|
"author":"Chris Olah",
|
||||||
"authorURL":"https://colah.github.io/",
|
"authorURL":"https://colah.github.io/",
|
||||||
"affiliation":"Google Brain",
|
"affiliations": [{"name": "Google Brain"}]
|
||||||
"affiliationURL":"https://g.co/brain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"author":"Shan Carter",
|
|
||||||
"authorURL":"https://shancarter.com/",
|
|
||||||
"affiliation":"Google Brain",
|
|
||||||
"affiliationURL":"https://g.co/brain"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author":"Ludwig Schubert",
|
"author":"Ludwig Schubert",
|
||||||
"authorURL":"https://shancarter.com/",
|
"authorURL":"https://shancarter.com/",
|
||||||
"affiliation":"Google Brain",
|
"affiliations": [{"name": "Google Brain", "url": "https://g.co/brain"}]
|
||||||
"affiliationURL":"https://g.co/brain"
|
},
|
||||||
|
{
|
||||||
|
"author":"Shan Carter",
|
||||||
|
"authorURL":"https://shancarter.com/",
|
||||||
|
"affiliations": [
|
||||||
|
{"name": "Google Brain", "url": "https://g.co/brain"},
|
||||||
|
{"name": "NYT", "url": "https://nytimes.com"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"katex": {
|
"katex": {
|
||||||
@@ -39,8 +57,9 @@
|
|||||||
</d-front-matter>
|
</d-front-matter>
|
||||||
<d-title>
|
<d-title>
|
||||||
<figure style="grid-column: page; margin: 1rem 0;"><img src="momentum.png" style="width:100%; border: 1px solid rgba(0, 0, 0, 0.2);"/></figure>
|
<figure style="grid-column: page; margin: 1rem 0;"><img src="momentum.png" style="width:100%; border: 1px solid rgba(0, 0, 0, 0.2);"/></figure>
|
||||||
<p>We often think of Momentum as a means of dampening oscillations and speeding up the iterations, leading to faster convergence. But it has other interesting behavior. It allows a larger range of step-sizes to be used, and creates its own oscillations. What is going on?</p>
|
<p>We often think of Momentum<d-cite key="mercier2011humans"></d-cite> as a means of dampening oscillations and speeding up the iterations, leading to faster convergence. But it has other interesting behavior. It allows a larger range of step-sizes to be used, and creates its own oscillations. What is going on?</p>
|
||||||
</d-title>
|
</d-title>
|
||||||
|
<d-byline></d-byline>
|
||||||
<d-article>
|
<d-article>
|
||||||
<a class="marker" href="#section-1" id="section-1"><span>1</span></a>
|
<a class="marker" href="#section-1" id="section-1"><span>1</span></a>
|
||||||
<h2>A Brief Survey of Techniques</h2>
|
<h2>A Brief Survey of Techniques</h2>
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script src="../dist/template.js"></script>
|
<script src="../dist/template.js"></script>
|
||||||
|
|||||||
Generated
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "distill-template",
|
"name": "distill-template",
|
||||||
"version": "2.2.3",
|
"version": "2.2.26",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -3987,11 +3987,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"katex": {
|
"katex": {
|
||||||
"version": "0.7.1",
|
"version": "0.8.3",
|
||||||
"resolved": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/katex/-/katex-0.8.3.tgz",
|
||||||
"integrity": "sha1-BrtSmO+tBeHnIoA1uo4VkfMGG48=",
|
"integrity": "sha512-0VKw+G/wvgLKMy4fhhKdPGjXehYF3l3PBRdzkvBivK5wMtAH9xRHImQaGk9gaukBTdOfZ1Biq8kL5vgkUsBT0Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"match-at": "0.1.0"
|
"match-at": "0.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"kind-of": {
|
"kind-of": {
|
||||||
@@ -4190,9 +4190,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"match-at": {
|
"match-at": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
|
||||||
"integrity": "sha1-9WHncJ/5oQW4XMYsa47nwVvyTzE="
|
"integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q=="
|
||||||
},
|
},
|
||||||
"memory-fs": {
|
"memory-fs": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
@@ -5157,9 +5157,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup": {
|
"rollup": {
|
||||||
"version": "0.49.2",
|
"version": "0.50.0",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-0.49.2.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.0.tgz",
|
||||||
"integrity": "sha512-9mySqItSwq5/dXYQyFGrrzqV282EZfz4kSCU2m4e6OjgqLmIsp9zK6qNQ6wbBWR4EhASEqQMBQ/IF45jaNPAtw==",
|
"integrity": "sha512-7RqCBQ9iwsOBPkjYgoIaeUij606mSkDMExP0NT7QDI3bqkHYQHrQ83uoNIXwPcQm/vP2VbsUz3kiyZZ1qPlLTQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rollup-plugin-babili": {
|
"rollup-plugin-babili": {
|
||||||
|
|||||||
+4
-4
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "distill-template",
|
"name": "distill-template",
|
||||||
"version": "2.2.3",
|
"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": {
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"url": "https://github.com/distillpub/distill-template/issues"
|
"url": "https://github.com/distillpub/distill-template/issues"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "rollup -c rollup.config.dev.js -w",
|
"dev": "rollup -c rollup.config.dev.js -w",
|
||||||
"serve": "python3 -m http.server --bind 127.0.0.1 8888",
|
"serve": "python3 -m http.server --bind 127.0.0.1 8888",
|
||||||
"test": "mocha",
|
"test": "mocha",
|
||||||
"lint": "eslint",
|
"lint": "eslint",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"marked": "^0.3.6",
|
"marked": "^0.3.6",
|
||||||
"mocha": "^3.5.3",
|
"mocha": "^3.5.3",
|
||||||
"prismjs": "^1.6.0",
|
"prismjs": "^1.6.0",
|
||||||
"rollup": "latest",
|
"rollup": "^0.50.0",
|
||||||
"rollup-plugin-babili": "^3.1.0",
|
"rollup-plugin-babili": "^3.1.0",
|
||||||
"rollup-plugin-buble": "^0.15.0",
|
"rollup-plugin-buble": "^0.15.0",
|
||||||
"rollup-plugin-commonjs": "^7.0.0",
|
"rollup-plugin-commonjs": "^7.0.0",
|
||||||
@@ -61,6 +61,6 @@
|
|||||||
"escape-html": "^1.0.3",
|
"escape-html": "^1.0.3",
|
||||||
"intersection-observer": "^0.4.0",
|
"intersection-observer": "^0.4.0",
|
||||||
"jsdom-wc": "^11.0.0-alpha-1",
|
"jsdom-wc": "^11.0.0-alpha-1",
|
||||||
"katex": "^0.7.1"
|
"katex": "^0.8.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import resolve from 'rollup-plugin-node-resolve';
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
import string from 'rollup-plugin-string';
|
import string from 'rollup-plugin-string';
|
||||||
import commonjs from 'rollup-plugin-commonjs';
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import configs from './rollup.config.dev';
|
import configs from './rollup.config.dev';
|
||||||
import babili from 'rollup-plugin-babili';
|
import babili from 'rollup-plugin-babili';
|
||||||
|
|
||||||
|
|||||||
+40
-10
@@ -1,8 +1,22 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Controller } from './controller';
|
import { Controller } from './controller';
|
||||||
|
|
||||||
/* Transforms */
|
/* Transforms */
|
||||||
import { makeStyleTag } from './styles/styles';
|
import { makeStyleTag } from './styles/styles';
|
||||||
import { Polyfills, polyfills } from './helpers/polyfills';
|
import { Polyfills } from './helpers/polyfills';
|
||||||
|
|
||||||
/* Components */
|
/* Components */
|
||||||
import { Abstract } from './components/d-abstract';
|
import { Abstract } from './components/d-abstract';
|
||||||
@@ -16,6 +30,7 @@ import { Code } from './components/d-code';
|
|||||||
import { Footnote } from './components/d-footnote';
|
import { Footnote } from './components/d-footnote';
|
||||||
import { FootnoteList } from './components/d-footnote-list';
|
import { FootnoteList } from './components/d-footnote-list';
|
||||||
import { FrontMatter } from './components/d-front-matter';
|
import { FrontMatter } from './components/d-front-matter';
|
||||||
|
import { HoverBox } from './components/d-hover-box';
|
||||||
import { Title } from './components/d-title';
|
import { Title } from './components/d-title';
|
||||||
import { DMath } from './components/d-math';
|
import { DMath } from './components/d-math';
|
||||||
import { References } from './components/d-references';
|
import { References } from './components/d-references';
|
||||||
@@ -47,13 +62,25 @@ const distillMain = function() {
|
|||||||
makeStyleTag(document);
|
makeStyleTag(document);
|
||||||
console.info('Runlevel 1: Static Distill styles have been added.');
|
console.info('Runlevel 1: Static Distill styles have been added.');
|
||||||
console.info('Runlevel 1->2.');
|
console.info('Runlevel 1->2.');
|
||||||
window.distillRunlevel = 2;
|
window.distillRunlevel += 1;
|
||||||
|
|
||||||
/* 3. Register components */
|
/* 3. Register Controller listener functions */
|
||||||
/* Article will register controller which takes control from there */
|
/* Needs to happen before components to their connected callbacks have a controller to talk to. */
|
||||||
|
for (const [functionName, callback] of Object.entries(Controller.listeners)) {
|
||||||
|
if (typeof callback === 'function') {
|
||||||
|
document.addEventListener(functionName, callback);
|
||||||
|
} else {
|
||||||
|
console.error('Runlevel 2: Controller listeners need to be functions!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.info('Runlevel 2: We can now listen to controller events.');
|
||||||
|
console.info('Runlevel 2->3.');
|
||||||
|
window.distillRunlevel += 1;
|
||||||
|
|
||||||
|
/* 4. Register components */
|
||||||
const components = [
|
const components = [
|
||||||
Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code,
|
Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code,
|
||||||
Footnote, FootnoteList, FrontMatter, Title, DMath, References, TOC, Figure,
|
Footnote, FootnoteList, FrontMatter, HoverBox, Title, DMath, References, TOC, Figure,
|
||||||
Slider, Interstitial
|
Slider, Interstitial
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -70,12 +97,15 @@ const distillMain = function() {
|
|||||||
customElements.define(component.is, component);
|
customElements.define(component.is, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.info('Runlevel 2: Distill Template finished registering custom elements.');
|
console.info('Runlevel 3: Distill Template finished registering custom elements.');
|
||||||
console.info('Runlevel 2->3.');
|
console.info('Runlevel 3->4.');
|
||||||
window.distillRunlevel = 3;
|
window.distillRunlevel += 1;
|
||||||
console.info('Distill Template initialisation complete.');
|
|
||||||
|
// If template was added after DOMContentLoaded we may have missed that event.
|
||||||
|
// Controller will check for that case, so trigger the event explicitly:
|
||||||
Controller.listeners.DOMContentLoaded();
|
Controller.listeners.DOMContentLoaded();
|
||||||
|
|
||||||
|
console.info('Runlevel 4: Distill Template initialisation complete.');
|
||||||
};
|
};
|
||||||
|
|
||||||
window.distillRunlevel = 0;
|
window.distillRunlevel = 0;
|
||||||
@@ -83,7 +113,7 @@ window.distillRunlevel = 0;
|
|||||||
if (Polyfills.browserSupportsAllFeatures()) {
|
if (Polyfills.browserSupportsAllFeatures()) {
|
||||||
console.info('Runlevel 0: No need for polyfills.');
|
console.info('Runlevel 0: No need for polyfills.');
|
||||||
console.info('Runlevel 0->1.');
|
console.info('Runlevel 0->1.');
|
||||||
window.distillRunlevel = 1;
|
window.distillRunlevel += 1;
|
||||||
distillMain();
|
distillMain();
|
||||||
} else {
|
} else {
|
||||||
console.info('Runlevel 0: Distill Template is loading polyfills.');
|
console.info('Runlevel 0: Distill Template is loading polyfills.');
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
import { body } from '../helpers/layout';
|
import { body } from '../helpers/layout';
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,24 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
import { body } from '../helpers/layout';
|
|
||||||
|
|
||||||
const T = Template('d-appendix', `
|
const T = Template('d-appendix', `
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
d-appendix {
|
d-appendix {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
line-height: 1.7em;
|
line-height: 1.7em;
|
||||||
margin-top: 60px;
|
margin-top: 60px;
|
||||||
@@ -17,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;
|
||||||
|
|||||||
+16
-19
@@ -1,6 +1,19 @@
|
|||||||
import { Template } from '../mixins/template';
|
// Copyright 2018 The Distill Template Authors
|
||||||
import { Controller } from '../controller';
|
//
|
||||||
import style from '../styles/d-article.css';
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// import { Template } from '../mixins/template';
|
||||||
|
// import { Controller } from '../controller';
|
||||||
|
|
||||||
const isOnlyWhitespace = /^\s*$/;
|
const isOnlyWhitespace = /^\s*$/;
|
||||||
|
|
||||||
@@ -30,20 +43,4 @@ export class Article extends HTMLElement {
|
|||||||
}).observe(this, {childList: true});
|
}).observe(this, {childList: true});
|
||||||
}
|
}
|
||||||
|
|
||||||
connectedCallback() {
|
|
||||||
document.onreadystatechange = function () {
|
|
||||||
console.log("onreadystatechange:");
|
|
||||||
console.log(document.readyState);
|
|
||||||
};
|
|
||||||
console.info('Article tag connected, we can now listen to controller events.');
|
|
||||||
console.info('Runlevel 3->4.');
|
|
||||||
for (const [functionName, callback] of Object.entries(Controller.listeners)) {
|
|
||||||
if (typeof callback === 'function') {
|
|
||||||
document.addEventListener(functionName, callback);
|
|
||||||
} else {
|
|
||||||
console.error('Controller listeners need to be functions!');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { parseBibtex } from '../helpers/bibtex';
|
import { parseBibtex } from '../helpers/bibtex';
|
||||||
|
|
||||||
export function parseBibliography(element) {
|
export function parseBibliography(element) {
|
||||||
@@ -35,6 +49,12 @@ export class Bibliography extends HTMLElement {
|
|||||||
observer.observe(this, options);
|
observer.observe(this, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
connectedCallback() {
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
this.parseIfPossible();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
parseIfPossible() {
|
parseIfPossible() {
|
||||||
const scriptTag = this.querySelector('script');
|
const scriptTag = this.querySelector('script');
|
||||||
if (!scriptTag) return;
|
if (!scriptTag) return;
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// import style from '../styles/d-byline.css';
|
// import style from '../styles/d-byline.css';
|
||||||
|
|
||||||
export function bylineTemplate(frontMatter) {
|
export function bylineTemplate(frontMatter) {
|
||||||
@@ -10,12 +24,12 @@ 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.affiliationURL ? `
|
${author.affiliations.map(affiliation =>
|
||||||
<a class="affiliation" href="${author.affiliationURL}">${author.affiliation}</a>` : `
|
affiliation.url ? `<a class="affiliation" href="${affiliation.url}">${affiliation.name}</a>` : `<span class="affiliation">${affiliation.name}</span>`
|
||||||
<div class="affiliation">${author.affiliation}</div>`}
|
).join(', ')}
|
||||||
</p>
|
</p>
|
||||||
`).join('')}
|
`).join('')}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,22 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { bibliography_cite } from '../helpers/citation';
|
import { bibliography_cite } from '../helpers/citation';
|
||||||
|
|
||||||
const styles = `
|
const styles = `
|
||||||
d-citation-list {
|
d-citation-list {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d-citation-list .references {
|
d-citation-list .references {
|
||||||
|
|||||||
+49
-83
@@ -1,12 +1,25 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
import { hover_cite, bibliography_cite } from '../helpers/citation';
|
import { hover_cite, bibliography_cite } from '../helpers/citation';
|
||||||
import { HoverBox } from '../helpers/hover-box';
|
|
||||||
|
|
||||||
const T = Template('d-cite', `
|
const T = Template('d-cite', `
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.citation {
|
.citation {
|
||||||
@@ -35,76 +48,52 @@ figcaption .citation-number {
|
|||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
ul {
|
||||||
position: fixed;
|
margin: 0;
|
||||||
width: 100%;
|
padding: 0;
|
||||||
left: 0;
|
list-style-type: none;
|
||||||
z-index: 10000;
|
|
||||||
margin-top: 2em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dt-hover-box {
|
ul li {
|
||||||
margin: 0 auto;
|
padding: 15px 10px 15px 10px;
|
||||||
width: 400px;
|
border-bottom: 1px solid rgba(0,0,0,0.1)
|
||||||
max-width: 700px;
|
}
|
||||||
background-color: #FFF;
|
|
||||||
opacity: 0.95;
|
ul li:last-of-type {
|
||||||
border: 1px solid rgba(0, 0, 0, 0.25);
|
border-bottom: none;
|
||||||
padding: 8px 16px;
|
|
||||||
border-radius: 3px;
|
|
||||||
box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="container">
|
<d-hover-box id="hover-box"></d-hover-box>
|
||||||
<div id="hover-box" class="dt-hover-box"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<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) {
|
||||||
|
|
||||||
/* Lifecycle */
|
/* Lifecycle */
|
||||||
|
|
||||||
// constructor() {
|
|
||||||
// super();
|
|
||||||
// // Cite.currentId += 1;
|
|
||||||
// // this.citeId = Cite.currentId;
|
|
||||||
// }
|
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
// this.notify();
|
|
||||||
|
|
||||||
this.hoverDiv = this.root.querySelector('.dt-hover-box');
|
|
||||||
this.outerSpan = this.root.querySelector('#citation-');
|
this.outerSpan = this.root.querySelector('#citation-');
|
||||||
this.innerSpan = this.root.querySelector('.citation-number');
|
this.innerSpan = this.root.querySelector('.citation-number');
|
||||||
// this.outerSpan.id = `citation-${this.citeId}`;
|
this.hoverBox = this.root.querySelector('d-hover-box');
|
||||||
// this.hoverDiv.id = `dt-cite-hover-box-${this.citeId}`;
|
window.customElements.whenDefined('d-hover-box').then(() => {
|
||||||
// console.log(this, this.hoverDiv, this.outerSpan, this.innerSpan);
|
this.hoverBox.listen(this);
|
||||||
this.hoverbox = new HoverBox(this.hoverDiv, this.outerSpan);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnectedCallback() {
|
//TODO This causes an infinite loop on firefox with polyfills.
|
||||||
const options = { detail: [this, this.keys], bubbles: true };
|
// This is only needed for interactive editing so no priority.
|
||||||
const event = new CustomEvent('onCiteKeyRemoved', options);
|
// disconnectedCallback() {
|
||||||
document.dispatchEvent(event);
|
// const options = { detail: [this, this.keys], bubbles: true };
|
||||||
}
|
// const event = new CustomEvent('onCiteKeyRemoved', options);
|
||||||
|
// document.dispatchEvent(event);
|
||||||
/* Observed Attributes */
|
|
||||||
|
|
||||||
// renderCitationNumbers(citations) {
|
|
||||||
// const numbers = this._keys.map( (key) => {
|
|
||||||
// const index = citations.indexOf(key);
|
|
||||||
// return index == -1 ? '?' : index + 1 + '';
|
|
||||||
// });
|
|
||||||
// const text = "[" + numbers.join(", ") + "]";
|
|
||||||
// this.innerSpan.textContent = text;
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* observe 'key' attribute */
|
/* observe 'key' attribute */
|
||||||
|
|
||||||
static get observedAttributes() {
|
static get observedAttributes() {
|
||||||
@@ -138,40 +127,17 @@ export class Cite extends T(HTMLElement) {
|
|||||||
return index == -1 ? '?' : index + 1 + '';
|
return index == -1 ? '?' : index + 1 + '';
|
||||||
});
|
});
|
||||||
const textContent = '[' + numberStrings.join(', ') + ']';
|
const textContent = '[' + numberStrings.join(', ') + ']';
|
||||||
const innerSpan = this.root.querySelector('.citation-number');
|
if (this.innerSpan) {
|
||||||
innerSpan.textContent = textContent;
|
this.innerSpan.textContent = textContent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set entries(entries) {
|
set entries(entries) {
|
||||||
const div = this.root.querySelector('#hover-box');
|
if (this.hoverBox) {
|
||||||
div.innerHTML = entries.map(hover_cite).join('<br><br>');
|
this.hoverBox.innerHTML = `<ul>
|
||||||
|
${entries.map(hover_cite).map(html => `<li>${html}</li>`).join('\n')}
|
||||||
|
</ul>`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// renderContent() {
|
|
||||||
// const bibliography = document.querySelector('d-bibliography');
|
|
||||||
// if (bibliography && bibliography.finishedLoading) {
|
|
||||||
// customElements.whenDefined('d-bibliography').then( () => {
|
|
||||||
// const keys = this.key.split(",");
|
|
||||||
//
|
|
||||||
// // set up hidden hover box
|
|
||||||
// const div = this.root.querySelector('.dt-hover-box');
|
|
||||||
// div.innerHTML = keys.map( (key) => {
|
|
||||||
// return bibliography.getEntry(key);
|
|
||||||
// }).map(hover_cite).join('<br><br>');
|
|
||||||
// div.id ='dt-cite-hover-box-' + this.citeId;
|
|
||||||
//
|
|
||||||
// // set up visible citation marker
|
|
||||||
// const outerSpan = this.root.querySelector('#citation-');
|
|
||||||
// outerSpan.id = `citation-${this.citeId}`;
|
|
||||||
// // outerSpan.setAttribute('data-hover', dataHoverString); // directly tell HoverBox instead?
|
|
||||||
// const innerSpan = this.root.querySelector('.citation-number');
|
|
||||||
// innerSpan.textContent = inline_cite_short(keys, bibliography);
|
|
||||||
//
|
|
||||||
// HoverBox.get_box(div).bind(outerSpan);
|
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
// console.error(`You used a d-cite tag (${key}) without including a d-bibliography tag in your article. We can't lookup your citation this way.`)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import Prism from 'prismjs';
|
import Prism from 'prismjs';
|
||||||
import 'prismjs/components/prism-python';
|
import 'prismjs/components/prism-python';
|
||||||
import 'prismjs/components/prism-clike';
|
import 'prismjs/components/prism-clike';
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// Figure
|
// Figure
|
||||||
//
|
//
|
||||||
// d-figure provides a state-machine of visibility events:
|
// d-figure provides a state-machine of visibility events:
|
||||||
|
|||||||
@@ -1,11 +1,24 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
|
|
||||||
const T = Template('d-footnote-list', `
|
const T = Template('d-footnote-list', `
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
d-footnote-list {
|
d-footnote-list {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d-footnote-list > * {
|
d-footnote-list > * {
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template.js';
|
import { Template } from '../mixins/template.js';
|
||||||
import { HoverBox } from '../helpers/hover-box';
|
|
||||||
|
|
||||||
const T = Template('d-footnote', `
|
const T = Template('d-footnote', `
|
||||||
<style>
|
<style>
|
||||||
@@ -9,7 +22,7 @@ d-math[block] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sup {
|
sup {
|
||||||
@@ -25,32 +38,17 @@ span {
|
|||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.footnote-container {
|
||||||
position: fixed;
|
padding: 10px;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="container">
|
<d-hover-box>
|
||||||
<div id="hover-box" class="dt-hover-box">
|
<div class="footnote-container">
|
||||||
<slot id="slot"></slot>
|
<slot id="slot"></slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</d-hover-box>
|
||||||
|
|
||||||
<sup>
|
<sup>
|
||||||
<span id="fn-" data-hover-ref=""></span>
|
<span id="fn-" data-hover-ref=""></span>
|
||||||
@@ -79,23 +77,24 @@ export class Footnote extends T(HTMLElement) {
|
|||||||
// const slot = this.shadowRoot.querySelector('#slot');
|
// const slot = this.shadowRoot.querySelector('#slot');
|
||||||
// console.warn(slot.textContent);
|
// console.warn(slot.textContent);
|
||||||
// slot.addEventListener('slotchange', this.notify);
|
// slot.addEventListener('slotchange', this.notify);
|
||||||
|
this.hoverBox = this.root.querySelector('d-hover-box');
|
||||||
|
window.customElements.whenDefined('d-hover-box').then(() => {
|
||||||
|
this.hoverBox.listen(this);
|
||||||
|
});
|
||||||
// create numeric ID
|
// create numeric ID
|
||||||
Footnote.currentFootnoteId += 1;
|
Footnote.currentFootnoteId += 1;
|
||||||
const IdString = Footnote.currentFootnoteId.toString();
|
const IdString = Footnote.currentFootnoteId.toString();
|
||||||
this.root.host.id = 'd-footnote-' + IdString;
|
this.root.host.id = 'd-footnote-' + IdString;
|
||||||
|
|
||||||
// set up hidden hover box
|
// set up hidden hover box
|
||||||
const div = this.root.querySelector('.dt-hover-box');
|
const id = 'dt-fn-hover-box-' + IdString;
|
||||||
div.id = 'dt-fn-hover-box-' + IdString;
|
this.hoverBox.id = id
|
||||||
|
|
||||||
// set up visible footnote marker
|
// set up visible footnote marker
|
||||||
const span = this.root.querySelector('#fn-');
|
const span = this.root.querySelector('#fn-');
|
||||||
span.setAttribute('id', 'fn-' + IdString);
|
span.setAttribute('id', 'fn-' + IdString);
|
||||||
span.setAttribute('data-hover-ref', div.id);
|
span.setAttribute('data-hover-ref', id);
|
||||||
span.textContent = IdString;
|
span.textContent = IdString;
|
||||||
|
|
||||||
this.hoverbox = new HoverBox(div, span);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,47 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
export function _moveLegacyAffiliationFormatIntoArray(frontMatter) {
|
||||||
|
// authors used to have propoerties "affiliation" and "affiliationURL".
|
||||||
|
// We now encourage using an array for affiliations containing objects with
|
||||||
|
// properties "name" and "url".
|
||||||
|
for (let author of frontMatter.authors) {
|
||||||
|
const hasOldStyle = Boolean(author.affiliation)
|
||||||
|
const hasNewStyle = Boolean(author.affiliations)
|
||||||
|
if (!hasOldStyle) continue;
|
||||||
|
if (hasNewStyle) {
|
||||||
|
console.warn(`Author ${author.author} has both old-style ("affiliation" & "affiliationURL") and new style ("affiliations") affiliation information!`)
|
||||||
|
} else {
|
||||||
|
let newAffiliation = {
|
||||||
|
"name": author.affiliation
|
||||||
|
}
|
||||||
|
if (author.affiliationURL) newAffiliation.url = author.affiliationURL;
|
||||||
|
author.affiliations = [newAffiliation];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(frontMatter)
|
||||||
|
return frontMatter
|
||||||
|
}
|
||||||
|
|
||||||
export function parseFrontmatter(element) {
|
export function parseFrontmatter(element) {
|
||||||
const scriptTag = element.querySelector('script');
|
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') {
|
||||||
const content = scriptTag.textContent;
|
const content = scriptTag.textContent;
|
||||||
return JSON.parse(content);
|
const parsed = JSON.parse(content);
|
||||||
|
return _moveLegacyAffiliationFormatIntoArray(parsed);
|
||||||
} else {
|
} else {
|
||||||
console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');
|
console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
import { Template } from '../mixins/template.js';
|
||||||
|
|
||||||
|
const T = Template('d-hover-box', `
|
||||||
|
<style>
|
||||||
|
|
||||||
|
:host {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
left: 0px;
|
||||||
|
z-index: 10000;
|
||||||
|
display: none;
|
||||||
|
white-space: normal
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
position: relative;
|
||||||
|
width: 704px;
|
||||||
|
max-width: 100vw;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.5em;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
background-color: rgba(250, 250, 250, 0.95);
|
||||||
|
box-shadow: 0 0 7px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
backdrop-filter: blur(2px);
|
||||||
|
-webkit-backdrop-filter: blur(2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="panel">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
|
||||||
|
export class HoverBox extends T(HTMLElement) {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
connectedCallback() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
listen(element) {
|
||||||
|
// console.log(element)
|
||||||
|
this.bindDivEvents(this);
|
||||||
|
this.bindTriggerEvents(element);
|
||||||
|
// this.style.display = "block";
|
||||||
|
}
|
||||||
|
|
||||||
|
bindDivEvents(element) {
|
||||||
|
// For mice, same behavior as hovering on links
|
||||||
|
element.addEventListener('mouseover', () => {
|
||||||
|
if (!this.visible) this.showAtNode(element);
|
||||||
|
this.stopTimeout();
|
||||||
|
});
|
||||||
|
element.addEventListener('mouseout', () => {
|
||||||
|
this.extendTimeout(500);
|
||||||
|
});
|
||||||
|
// Don't trigger body touchstart event when touching within box
|
||||||
|
element.addEventListener('touchstart', (event) => {
|
||||||
|
event.stopPropagation();
|
||||||
|
}, {passive: true});
|
||||||
|
// Close box when touching outside box
|
||||||
|
document.body.addEventListener('touchstart', () => {
|
||||||
|
this.hide();
|
||||||
|
}, {passive: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
bindTriggerEvents(node) {
|
||||||
|
node.addEventListener('mouseover', () => {
|
||||||
|
if (!this.visible) {
|
||||||
|
this.showAtNode(node);
|
||||||
|
}
|
||||||
|
this.stopTimeout();
|
||||||
|
});
|
||||||
|
|
||||||
|
node.addEventListener('mouseout', () => {
|
||||||
|
this.extendTimeout(300);
|
||||||
|
});
|
||||||
|
|
||||||
|
node.addEventListener('touchstart', (event) => {
|
||||||
|
if (this.visible) {
|
||||||
|
this.hide();
|
||||||
|
} else {
|
||||||
|
this.showAtNode(node);
|
||||||
|
}
|
||||||
|
// Don't trigger body touchstart event when touching link
|
||||||
|
event.stopPropagation();
|
||||||
|
}, {passive: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
show(position) {
|
||||||
|
this.visible = true;
|
||||||
|
this.style.display = 'block';
|
||||||
|
// 10px extra offset from element
|
||||||
|
this.style.top = Math.round(position[1] + 10) + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
showAtNode(node) {
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop
|
||||||
|
const bbox = node.getBoundingClientRect();
|
||||||
|
this.show([node.offsetLeft + bbox.width, node.offsetTop + bbox.height]);
|
||||||
|
}
|
||||||
|
|
||||||
|
hide() {
|
||||||
|
this.visible = false;
|
||||||
|
this.style.display = 'none';
|
||||||
|
this.stopTimeout();
|
||||||
|
}
|
||||||
|
|
||||||
|
stopTimeout() {
|
||||||
|
if (this.timeout) {
|
||||||
|
clearTimeout(this.timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extendTimeout(time) {
|
||||||
|
this.stopTimeout();
|
||||||
|
this.timeout = setTimeout(() => {
|
||||||
|
this.hide();
|
||||||
|
}, time);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,8 +1,23 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
|
|
||||||
// This overlay is not secure.
|
// This overlay is not secure.
|
||||||
// It is only meant as a social deterrent.
|
// It is only meant as a social deterrent.
|
||||||
|
|
||||||
|
const productionHostname = 'distill.pub';
|
||||||
const T = Template('d-interstitial', `
|
const T = Template('d-interstitial', `
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
@@ -109,13 +124,11 @@ p small {
|
|||||||
export class Interstitial extends T(HTMLElement) {
|
export class Interstitial extends T(HTMLElement) {
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
const passwordInput = this.root.querySelector('#interstitial-password-input');
|
if (this.shouldRemoveSelf()) {
|
||||||
passwordInput.oninput = (event) => this.passwordChanged(event);
|
this.parentElement.removeChild(this);
|
||||||
if (typeof(Storage) !== 'undefined') {
|
} else {
|
||||||
if (localStorage.getItem('distill-interstitial-password-correct') === 'true') {
|
const passwordInput = this.root.querySelector('#interstitial-password-input');
|
||||||
console.log('Loaded that correct password was entered before; skipping interstitial.');
|
passwordInput.oninput = (event) => this.passwordChanged(event);
|
||||||
this.parentElement.removeChild(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,9 +139,32 @@ export class Interstitial extends T(HTMLElement) {
|
|||||||
this.parentElement.removeChild(this);
|
this.parentElement.removeChild(this);
|
||||||
if (typeof(Storage) !== 'undefined') {
|
if (typeof(Storage) !== 'undefined') {
|
||||||
console.log('Saved that correct password was entered.');
|
console.log('Saved that correct password was entered.');
|
||||||
localStorage.setItem('distill-interstitial-password-correct', 'true');
|
localStorage.setItem(this.localStorageIdentifier(), 'true');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shouldRemoveSelf() {
|
||||||
|
// should never be visible in production
|
||||||
|
if (window && window.location.hostname === productionHostname) {
|
||||||
|
console.warn('Interstitial found on production, hiding it.');
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// should only have to enter password once
|
||||||
|
if (typeof(Storage) !== 'undefined') {
|
||||||
|
if (localStorage.getItem(this.localStorageIdentifier()) === 'true') {
|
||||||
|
console.log('Loaded that correct password was entered before; skipping interstitial.');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// otherwise, leave visible
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
localStorageIdentifier() {
|
||||||
|
const prefix = 'distill-drafts'
|
||||||
|
const suffix = 'interstitial-password-correct';
|
||||||
|
return prefix + (window ? window.location.pathname : '-') + suffix
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/*global katex */
|
/*global katex */
|
||||||
import { Mutating } from '../mixins/mutating.js';
|
import { Mutating } from '../mixins/mutating.js';
|
||||||
import { Template } from '../mixins/template.js';
|
import { Template } from '../mixins/template.js';
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
|
|
||||||
const T = Template('d-references', `
|
const T = Template('d-references', `
|
||||||
|
|||||||
+15
-48
@@ -1,50 +1,17 @@
|
|||||||
import { Template } from '../mixins/template';
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
const T = Template('d-title', `
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
<style>
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
:host {
|
//
|
||||||
padding: 4rem 0 1.5rem;
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
contain: content;
|
//
|
||||||
display: block;
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
}
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
::slotted(h1) {
|
// See the License for the specific language governing permissions and
|
||||||
grid-column: text;
|
// limitations under the License.
|
||||||
font-size: 60px;
|
|
||||||
font-weight: 600;
|
|
||||||
line-height: 1.05em;
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
::slotted(p) {
|
|
||||||
font-weight: 300;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
line-height: 1.2em;
|
|
||||||
grid-column: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status {
|
|
||||||
margin-top: 0px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #009688;
|
|
||||||
opacity: 0.8;
|
|
||||||
grid-column: kicker;
|
|
||||||
}
|
|
||||||
.status span {
|
|
||||||
line-height: 1;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 6px 0;
|
|
||||||
border-bottom: 1px solid #80cbc4;
|
|
||||||
font-size: 11px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- <div class="status"><span>✓ Peer Reviewed</span></div> -->
|
|
||||||
<slot></slot>
|
|
||||||
`);
|
|
||||||
|
|
||||||
export class Title extends T(HTMLElement) {
|
|
||||||
|
|
||||||
|
export class Title extends HTMLElement {
|
||||||
|
static get is() { return 'd-title'; }
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-1
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export class TOC extends HTMLElement {
|
export class TOC extends HTMLElement {
|
||||||
|
|
||||||
static get is() { return 'd-toc'; }
|
static get is() { return 'd-toc'; }
|
||||||
@@ -20,7 +34,7 @@ export function renderTOC(element, headings) {
|
|||||||
<style>
|
<style>
|
||||||
|
|
||||||
d-toc {
|
d-toc {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+32
-7
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
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';
|
||||||
@@ -6,6 +20,10 @@ 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 = {
|
||||||
|
|
||||||
frontMatter: frontMatter,
|
frontMatter: frontMatter,
|
||||||
@@ -38,7 +56,7 @@ export const Controller = {
|
|||||||
citeTag.entries = entries;
|
citeTag.entries = entries;
|
||||||
},
|
},
|
||||||
|
|
||||||
onCiteKeyChanged(event) {
|
onCiteKeyChanged() {
|
||||||
// const [citeTag, keys] = event.detail;
|
// const [citeTag, keys] = event.detail;
|
||||||
|
|
||||||
// update citations
|
// update citations
|
||||||
@@ -71,7 +89,6 @@ export const Controller = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
onBibliographyChanged(event) {
|
onBibliographyChanged(event) {
|
||||||
console.info('BibliographyChanged');
|
|
||||||
const citationListTag = document.querySelector('d-citation-list');
|
const citationListTag = document.querySelector('d-citation-list');
|
||||||
|
|
||||||
const bibliography = event.detail;
|
const bibliography = event.detail;
|
||||||
@@ -117,11 +134,15 @@ export const Controller = {
|
|||||||
|
|
||||||
const interstitial = document.querySelector('d-interstitial');
|
const interstitial = document.querySelector('d-interstitial');
|
||||||
if (interstitial) {
|
if (interstitial) {
|
||||||
interstitial.password = frontMatter.password;
|
if (typeof frontMatter.password !== 'undefined') {
|
||||||
|
interstitial.password = frontMatter.password;
|
||||||
|
} else {
|
||||||
|
interstitial.parentElement.removeChild(interstitial);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const prerendered = document.body.hasAttribute('distill-prerendered');
|
const prerendered = document.body.hasAttribute('distill-prerendered');
|
||||||
if (!prerendered) {
|
if (!prerendered && domContentLoaded()) {
|
||||||
optionalComponents(document, frontMatter);
|
optionalComponents(document, frontMatter);
|
||||||
|
|
||||||
const appendix = document.querySelector('distill-appendix');
|
const appendix = document.querySelector('distill-appendix');
|
||||||
@@ -142,18 +163,22 @@ export const Controller = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
DOMContentLoaded() {
|
DOMContentLoaded() {
|
||||||
if (Controller.loaded || ['interactive', 'complete'].indexOf(document.readyState) === -1) {
|
if (Controller.loaded) {
|
||||||
|
console.warn('Controller received DOMContentLoaded but was already loaded!');
|
||||||
|
return;
|
||||||
|
} else if (!domContentLoaded()) {
|
||||||
|
console.warn('Controller received DOMContentLoaded before appropriate document.readyState!');
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
Controller.loaded = true;
|
Controller.loaded = true;
|
||||||
console.log('Controller running DOMContentLoaded')
|
console.log('Runlevel 4: Controller running DOMContentLoaded');
|
||||||
}
|
}
|
||||||
|
|
||||||
const frontMatterTag = document.querySelector('d-front-matter');
|
const frontMatterTag = document.querySelector('d-front-matter');
|
||||||
const data = parseFrontmatter(frontMatterTag);
|
const data = parseFrontmatter(frontMatterTag);
|
||||||
Controller.listeners.onFrontMatterChanged({detail: data});
|
Controller.listeners.onFrontMatterChanged({detail: data});
|
||||||
|
|
||||||
// console.debug('Resolving "citations" dependency due to initial DOM load.');
|
// Resolving "citations" dependency due to initial DOM load
|
||||||
frontMatter.citations = collect_citations();
|
frontMatter.citations = collect_citations();
|
||||||
frontMatter.citationsCollected = true;
|
frontMatter.citationsCollected = true;
|
||||||
for (const waitingCallback of Controller.waitingOn.citations.slice()) {
|
for (const waitingCallback of Controller.waitingOn.citations.slice()) {
|
||||||
|
|||||||
@@ -1,10 +1,23 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { serializeFrontmatterToBibtex } from '../helpers/bibtex';
|
import { serializeFrontmatterToBibtex } from '../helpers/bibtex';
|
||||||
|
|
||||||
const styles = `
|
const styles = `
|
||||||
<style>
|
<style>
|
||||||
distill-appendix {
|
distill-appendix {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
distill-appendix .citation {
|
distill-appendix .citation {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
import logo from '../assets/distill-logo.svg';
|
import logo from '../assets/distill-logo.svg';
|
||||||
|
|
||||||
@@ -7,7 +21,7 @@ const T = Template('distill-footer', `
|
|||||||
:host {
|
:host {
|
||||||
color: rgba(255, 255, 255, 0.5);
|
color: rgba(255, 255, 255, 0.5);
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
padding: 60px 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
background-color: hsl(180, 5%, 15%); /*hsl(200, 60%, 15%);*/
|
background-color: hsl(180, 5%, 15%); /*hsl(200, 60%, 15%);*/
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
|
|
||||||
import logo from '../assets/distill-logo.svg';
|
import logo from '../assets/distill-logo.svg';
|
||||||
@@ -72,18 +86,14 @@ distill-header .nav a {
|
|||||||
${logo}
|
${logo}
|
||||||
Distill
|
Distill
|
||||||
</a>
|
</a>
|
||||||
<div class="nav">
|
<nav class="nav">
|
||||||
<a href="/about/">About</a>
|
<a href="/about/">About</a>
|
||||||
<a href="/prize/">Prize</a>
|
<a href="/prize/">Prize</a>
|
||||||
<a href="/journal/">Submit</a>
|
<a href="/journal/">Submit</a>
|
||||||
</div>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
`, false);
|
`, false);
|
||||||
|
|
||||||
// <div class="nav">
|
|
||||||
// <a href="https://github.com/distillpub">GitHub</a>
|
|
||||||
// <!-- https://twitter.com/distillpub -->
|
|
||||||
// </div>
|
|
||||||
|
|
||||||
export class DistillHeader extends T(HTMLElement) {
|
export class DistillHeader extends T(HTMLElement) {
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { appendixTemplate } from '../distill-components/distill-appendix';
|
import { appendixTemplate } from '../distill-components/distill-appendix';
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
const footerTag = dom.querySelector('distill-footer');
|
const footerTag = dom.querySelector('distill-footer');
|
||||||
if(!footerTag) {
|
if(!footerTag) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
const headerTag = dom.querySelector('distill-header');
|
const headerTag = dom.querySelector('distill-header');
|
||||||
if (!headerTag) {
|
if (!headerTag) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { parseBibtex } from '../helpers/bibtex';
|
import { parseBibtex } from '../helpers/bibtex';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import { parseBibliography } from '../components/d-bibliography';
|
import { parseBibliography } from '../components/d-bibliography';
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { collect_citations } from '../helpers/citation.js';
|
import { collect_citations } from '../helpers/citation.js';
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { parseFrontmatter } from '../components/d-front-matter';
|
import { parseFrontmatter } from '../components/d-front-matter';
|
||||||
import { mergeFromYMLFrontmatter } from '../front-matter.js';
|
import { mergeFromYMLFrontmatter } from '../front-matter.js';
|
||||||
|
|
||||||
|
|||||||
+30
-9
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
||||||
const months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];
|
const months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];
|
||||||
const zeroPad = n => n < 10 ? '0' + n : n;
|
const zeroPad = n => n < 10 ? '0' + n : n;
|
||||||
@@ -44,6 +58,7 @@ class Author {
|
|||||||
this.personalURL = object.authorURL; // 'https://colah.github.io'
|
this.personalURL = object.authorURL; // 'https://colah.github.io'
|
||||||
this.affiliation = object.affiliation; // 'Google Brain'
|
this.affiliation = object.affiliation; // 'Google Brain'
|
||||||
this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'
|
this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'
|
||||||
|
this.affiliations = object.affiliations || []; // new-style affiliations
|
||||||
}
|
}
|
||||||
|
|
||||||
// 'Chris'
|
// 'Chris'
|
||||||
@@ -73,6 +88,8 @@ export function mergeFromYMLFrontmatter(target, source) {
|
|||||||
target.publishedDate = source.publishedDate;
|
target.publishedDate = source.publishedDate;
|
||||||
} else if (source.publishedDate.constructor === String) {
|
} else if (source.publishedDate.constructor === String) {
|
||||||
target.publishedDate = new Date(source.publishedDate);
|
target.publishedDate = new Date(source.publishedDate);
|
||||||
|
} else {
|
||||||
|
console.error('Don\'t know what to do with published date: ' + source.publishedDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
target.description = source.description;
|
target.description = source.description;
|
||||||
@@ -303,15 +320,19 @@ export class FrontMatter {
|
|||||||
target.url = this.url;
|
target.url = this.url;
|
||||||
target.githubUrl = this.githubUrl;
|
target.githubUrl = this.githubUrl;
|
||||||
target.previewURL = this.previewURL;
|
target.previewURL = this.previewURL;
|
||||||
target.volume = this.volume;
|
if (this.publishedDate) {
|
||||||
target.issue = this.issue;
|
target.volume = this.volume;
|
||||||
target.publishedDateRFC = this.publishedDateRFC;
|
target.issue = this.issue;
|
||||||
target.publishedYear = this.publishedYear;
|
target.publishedDateRFC = this.publishedDateRFC;
|
||||||
target.publishedMonth = this.publishedMonth;
|
target.publishedYear = this.publishedYear;
|
||||||
target.publishedDay = this.publishedDay;
|
target.publishedMonth = this.publishedMonth;
|
||||||
target.publishedMonthPadded = this.publishedMonthPadded;
|
target.publishedDay = this.publishedDay;
|
||||||
target.publishedDayPadded = this.publishedDayPadded;
|
target.publishedMonthPadded = this.publishedMonthPadded;
|
||||||
target.updatedDateRFC = this.updatedDateRFC;
|
target.publishedDayPadded = this.publishedDayPadded;
|
||||||
|
}
|
||||||
|
if (this.updatedDate) {
|
||||||
|
target.updatedDateRFC = this.updatedDateRFC;
|
||||||
|
}
|
||||||
target.concatenatedAuthors = this.concatenatedAuthors;
|
target.concatenatedAuthors = this.concatenatedAuthors;
|
||||||
target.bibtexAuthors = this.bibtexAuthors;
|
target.bibtexAuthors = this.bibtexAuthors;
|
||||||
target.slug = this.slug;
|
target.slug = this.slug;
|
||||||
|
|||||||
+16
-1
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import bibtexParse from 'bibtex-parse-js';
|
import bibtexParse from 'bibtex-parse-js';
|
||||||
|
|
||||||
function normalizeTag(string) {
|
function normalizeTag(string) {
|
||||||
@@ -28,6 +42,7 @@ export function serializeFrontmatterToBibtex(frontMatter) {
|
|||||||
title = {${frontMatter.title}},
|
title = {${frontMatter.title}},
|
||||||
journal = {${frontMatter.journal.title}},
|
journal = {${frontMatter.journal.title}},
|
||||||
year = {${frontMatter.publishedYear}},
|
year = {${frontMatter.publishedYear}},
|
||||||
note = {${frontMatter.url}}
|
note = {${frontMatter.url}},
|
||||||
|
doi = {${frontMatter.doi}}
|
||||||
}`;
|
}`;
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-5
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export function collect_citations(dom=document) {
|
export function collect_citations(dom=document) {
|
||||||
const citations = new Set();
|
const citations = new Set();
|
||||||
const citeTags = dom.querySelectorAll('d-cite');
|
const citeTags = dom.querySelectorAll('d-cite');
|
||||||
@@ -40,6 +54,7 @@ export function inline_cite_long(keys){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function author_string(ent, template, sep, finalSep){
|
function author_string(ent, template, sep, finalSep){
|
||||||
|
if (ent.author == null) { return ''; }
|
||||||
var names = ent.author.split(' and ');
|
var names = ent.author.split(' and ');
|
||||||
let name_strings = names.map(name => {
|
let name_strings = names.map(name => {
|
||||||
name = name.trim();
|
name = name.trim();
|
||||||
@@ -114,13 +129,22 @@ function doi_string(ent, new_line){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function title_string(ent) {
|
||||||
|
return '<span class="title">' + ent.title + '</span> ';
|
||||||
|
}
|
||||||
|
|
||||||
export function bibliography_cite(ent, fancy){
|
export function bibliography_cite(ent, fancy){
|
||||||
if (ent){
|
if (ent){
|
||||||
var cite = '<span class="title">' + ent.title + '</span> ';
|
var cite = title_string(ent);
|
||||||
cite += link_string(ent) + '<br>';
|
cite += link_string(ent) + '<br>';
|
||||||
cite += author_string(ent, '${L}, ${I}', ', ', ' and ');
|
if (ent.author) {
|
||||||
if (ent.year || ent.date){
|
cite += author_string(ent, '${L}, ${I}', ', ', ' and ');
|
||||||
cite += ', ' + (ent.year || ent.date) + '. ';
|
if (ent.year || ent.date) {
|
||||||
|
cite += ', ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ent.year || ent.date) {
|
||||||
|
cite += (ent.year || ent.date) + '. ';
|
||||||
} else {
|
} else {
|
||||||
cite += '. ';
|
cite += '. ';
|
||||||
}
|
}
|
||||||
@@ -146,7 +170,7 @@ export function bibliography_cite(ent, fancy){
|
|||||||
export function hover_cite(ent){
|
export function hover_cite(ent){
|
||||||
if (ent){
|
if (ent){
|
||||||
var cite = '';
|
var cite = '';
|
||||||
cite += '<b>' + ent.title + '</b>';
|
cite += '<strong>' + ent.title + '</strong>';
|
||||||
cite += link_string(ent);
|
cite += link_string(ent);
|
||||||
cite += '<br>';
|
cite += '<br>';
|
||||||
|
|
||||||
|
|||||||
@@ -1,109 +0,0 @@
|
|||||||
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 = 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);
|
|
||||||
width = width - 2 * padding;
|
|
||||||
return (`position: absolute;
|
|
||||||
background-color: #FFF;
|
|
||||||
opacity: 0.95;
|
|
||||||
max-width: ${width}px;
|
|
||||||
top: ${top}px;
|
|
||||||
left: ${left}px;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.25);
|
|
||||||
padding: ${padding}px;
|
|
||||||
border-radius: ${pretty? 3 : 0}px;
|
|
||||||
box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.2);
|
|
||||||
z-index: ${1e6};`);
|
|
||||||
}
|
|
||||||
|
|
||||||
export class HoverBox {
|
|
||||||
|
|
||||||
constructor(contentHTML, triggerElement) {
|
|
||||||
this.visible = false;
|
|
||||||
// div hold teh contents of the box that will become visible
|
|
||||||
this.div = contentHTML;
|
|
||||||
this.bindDivEvents(this.div);
|
|
||||||
// triggerElement holds the element that needs to be hovered etc to show contents
|
|
||||||
this.triggerElement = triggerElement;
|
|
||||||
this.bindTriggerEvents(this.triggerElement);
|
|
||||||
this.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
bindDivEvents(node) {
|
|
||||||
// For mice, same behavior as hovering on links
|
|
||||||
this.div.addEventListener('mouseover', () => {
|
|
||||||
if (!this.visible) this.showAtNode(node);
|
|
||||||
this.stopTimeout();
|
|
||||||
});
|
|
||||||
this.div.addEventListener('mouseout', () => {
|
|
||||||
this.extendTimeout(500);
|
|
||||||
});
|
|
||||||
// Don't trigger body touchstart event when touching within box
|
|
||||||
this.div.addEventListener('touchstart', (event) => {
|
|
||||||
event.stopPropagation();
|
|
||||||
}, {passive: true});
|
|
||||||
// Close box when touching outside box
|
|
||||||
document.body.addEventListener('touchstart', () => {
|
|
||||||
this.hide();
|
|
||||||
}, {passive: true});
|
|
||||||
}
|
|
||||||
|
|
||||||
bindTriggerEvents(node) {
|
|
||||||
node.addEventListener('mouseover', () => {
|
|
||||||
if (!this.visible) {
|
|
||||||
this.showAtNode(node);
|
|
||||||
}
|
|
||||||
this.stopTimeout();
|
|
||||||
});
|
|
||||||
|
|
||||||
node.addEventListener('mouseout', () => {
|
|
||||||
this.extendTimeout(500);
|
|
||||||
});
|
|
||||||
|
|
||||||
node.addEventListener('touchstart', (event) => {
|
|
||||||
if (this.visible) {
|
|
||||||
this.hide();
|
|
||||||
} else {
|
|
||||||
this.showAtNode(node);
|
|
||||||
}
|
|
||||||
// Don't trigger body touchstart event when touching link
|
|
||||||
event.stopPropagation();
|
|
||||||
}, {passive: true});
|
|
||||||
}
|
|
||||||
|
|
||||||
show(position) {
|
|
||||||
this.visible = true;
|
|
||||||
// const css = make_hover_css(this.triggerElement, position);
|
|
||||||
this.div.setAttribute('style', 'display: block;' );
|
|
||||||
}
|
|
||||||
|
|
||||||
showAtNode(node) {
|
|
||||||
const bbox = node.getBoundingClientRect();
|
|
||||||
this.show([bbox.right, bbox.bottom]);
|
|
||||||
}
|
|
||||||
|
|
||||||
hide() {
|
|
||||||
this.visible = false;
|
|
||||||
this.div.setAttribute('style', 'display: none;');
|
|
||||||
this.stopTimeout();
|
|
||||||
}
|
|
||||||
|
|
||||||
stopTimeout() {
|
|
||||||
if (this.timeout) {
|
|
||||||
clearTimeout(this.timeout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extendTimeout(time) {
|
|
||||||
this.stopTimeout();
|
|
||||||
this.timeout = setTimeout(() => {
|
|
||||||
this.hide();
|
|
||||||
}, time);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// This is a straight concatenation of code from KaTeX's contrib folder,
|
// This is a straight concatenation of code from KaTeX's contrib folder,
|
||||||
// but we aren't using some of their helpers that don't work well outside a browser environment.
|
// but we aren't using some of their helpers that don't work well outside a browser environment.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// const marginSmall = 16;
|
// const marginSmall = 16;
|
||||||
// const marginLarge = 3 * marginSmall;
|
// const marginLarge = 3 * marginSmall;
|
||||||
// const margin = marginSmall + marginLarge;
|
// const margin = marginSmall + marginLarge;
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export function addPolyfill(polyfill, polyfillLoadedCallback) {
|
export function addPolyfill(polyfill, polyfillLoadedCallback) {
|
||||||
console.info('Runlevel 0: Polyfill required: ' + polyfill.name);
|
console.info('Runlevel 0: Polyfill required: ' + polyfill.name);
|
||||||
const script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export const Mutating = (superclass) => {
|
export const Mutating = (superclass) => {
|
||||||
return class extends superclass {
|
return class extends superclass {
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export function propName(attr) {
|
export function propName(attr) {
|
||||||
return attr.replace(/(-[a-z])/g, (s) => s.toUpperCase().replace('-', ''));
|
return attr.replace(/(-[a-z])/g, (s) => s.toUpperCase().replace('-', ''));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/*global ShadyCSS*/
|
/*global ShadyCSS*/
|
||||||
|
|
||||||
export const Template = (name, templateString, useShadow = true) => {
|
export const Template = (name, templateString, useShadow = true) => {
|
||||||
|
|||||||
@@ -1,5 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
d-article {
|
d-article {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
|
overflow-x: hidden;
|
||||||
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
padding-top: 2rem;
|
padding-top: 2rem;
|
||||||
color: rgba(0, 0, 0, 0.8);
|
color: rgba(0, 0, 0, 0.8);
|
||||||
@@ -17,7 +34,7 @@ d-article > * {
|
|||||||
|
|
||||||
@media(min-width: 1024px) {
|
@media(min-width: 1024px) {
|
||||||
d-article {
|
d-article {
|
||||||
font-size: 1rem;
|
font-size: 1.06rem;
|
||||||
line-height: 1.7em;
|
line-height: 1.7em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,7 +119,6 @@ d-article blockquote {
|
|||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d-article blockquote {
|
d-article blockquote {
|
||||||
@@ -132,11 +148,15 @@ d-article ol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
d-article li {
|
d-article li {
|
||||||
margin-bottom: 24px;
|
margin-bottom: 1em;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d-article li:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
d-article pre {
|
d-article pre {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
@@ -172,6 +192,24 @@ d-article section > d-math[block] {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
d-article > d-code,
|
||||||
|
d-article section > d-code,
|
||||||
|
d-article > d-math[block],
|
||||||
|
d-article section > d-math[block] {
|
||||||
|
overflow-x: scroll;
|
||||||
|
-ms-overflow-style: none; // IE 10+
|
||||||
|
overflow: -moz-scrollbars-none; // Firefox
|
||||||
|
}
|
||||||
|
|
||||||
|
d-article > d-code::-webkit-scrollbar,
|
||||||
|
d-article section > d-code::-webkit-scrollbar,
|
||||||
|
d-article > d-math[block]::-webkit-scrollbar,
|
||||||
|
d-article section > d-math[block]::-webkit-scrollbar {
|
||||||
|
display: none; // Safari and Chrome
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
d-article .citation {
|
d-article .citation {
|
||||||
color: #668;
|
color: #668;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -183,14 +221,13 @@ d-include {
|
|||||||
}
|
}
|
||||||
|
|
||||||
d-figure {
|
d-figure {
|
||||||
contain: content;
|
contain: layout style;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* KaTeX */
|
/* KaTeX */
|
||||||
|
|
||||||
.katex, .katex-prerendered {
|
.katex, .katex-prerendered {
|
||||||
contain: content;
|
contain: style;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+35
-4
@@ -1,20 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
d-byline {
|
d-byline {
|
||||||
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
|
||||||
contain: content;
|
contain: content;
|
||||||
|
overflow: hidden;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
line-height: 1.8em;
|
line-height: 1.8em;
|
||||||
padding: 1.5rem 0;
|
padding: 1.5rem 0;
|
||||||
min-height: 1.8em;
|
min-height: 1.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
d-byline .byline {
|
d-byline .byline {
|
||||||
grid-template-columns: 2fr 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
grid-column: text;
|
grid-column: text;
|
||||||
}
|
}
|
||||||
|
|
||||||
d-byline .authors-affiliations {
|
@media(min-width: 768px) {
|
||||||
grid-template-columns: 1fr 1fr;
|
d-byline .byline {
|
||||||
|
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d-byline .authors-affiliations {
|
||||||
|
grid-column-end: span 2;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(min-width: 768px) {
|
||||||
|
d-byline .authors-affiliations {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
d-byline h3 {
|
d-byline h3 {
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
span.katex-display {
|
span.katex-display {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 8px 0 8px 0;
|
padding: 8px 0 8px 0;
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
d-title {
|
||||||
|
padding: 2rem 0 1.5rem;
|
||||||
|
contain: layout style;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(min-width: 768px) {
|
||||||
|
d-title {
|
||||||
|
padding: 4rem 0 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d-title h1 {
|
||||||
|
grid-column: text;
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.1em;
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(min-width: 768px) {
|
||||||
|
d-title h1 {
|
||||||
|
font-size: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d-title p {
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
line-height: 1.55em;
|
||||||
|
grid-column: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
d-title .status {
|
||||||
|
margin-top: 0px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #009688;
|
||||||
|
opacity: 0.8;
|
||||||
|
grid-column: kicker;
|
||||||
|
}
|
||||||
|
|
||||||
|
d-title .status span {
|
||||||
|
line-height: 1;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 6px 0;
|
||||||
|
border-bottom: 1px solid #80cbc4;
|
||||||
|
font-size: 11px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
@@ -1,5 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
html {
|
html {
|
||||||
font-size: 16px;
|
font-size: 14px;
|
||||||
line-height: 1.6em;
|
line-height: 1.6em;
|
||||||
/* font-family: "Libre Franklin", "Helvetica Neue", sans-serif; */
|
/* font-family: "Libre Franklin", "Helvetica Neue", sans-serif; */
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
|
||||||
@@ -9,6 +25,12 @@ html {
|
|||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media(min-width: 768px) {
|
||||||
|
html {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
@@ -84,7 +106,7 @@ sub {
|
|||||||
figure {
|
figure {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 2.5em;
|
margin-bottom: 2.5em;
|
||||||
margin-top: 2.5em;
|
margin-top: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
figcaption+figure {
|
figcaption+figure {
|
||||||
@@ -99,14 +121,16 @@ figure svg text,
|
|||||||
figure svg tspan {
|
figure svg tspan {
|
||||||
}
|
}
|
||||||
|
|
||||||
figcaption {
|
figcaption,
|
||||||
|
.figcaption {
|
||||||
color: rgba(0, 0, 0, 0.6);
|
color: rgba(0, 0, 0, 0.6);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media(min-width: 1024px) {
|
@media(min-width: 1024px) {
|
||||||
figcaption {
|
figcaption,
|
||||||
|
.figcaption {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +147,8 @@ figcaption a {
|
|||||||
color: rgba(0, 0, 0, 0.6);
|
color: rgba(0, 0, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
figcaption b {
|
figcaption b,
|
||||||
|
figcaption strong, {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: rgba(0, 0, 0, 1.0);
|
color: rgba(0, 0, 0, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
@supports not (display: grid) {
|
@supports not (display: grid) {
|
||||||
.base-grid,
|
.base-grid,
|
||||||
distill-header,
|
distill-header,
|
||||||
@@ -79,7 +95,7 @@ distill-footer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media(min-width: 1280px) {
|
@media(min-width: 1180px) {
|
||||||
.base-grid,
|
.base-grid,
|
||||||
distill-header,
|
distill-header,
|
||||||
d-title,
|
d-title,
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The Distill Template Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
|
|
||||||
@page {
|
@page {
|
||||||
|
|||||||
+16
-1
@@ -1,11 +1,26 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import base from './styles-base.css';
|
import base from './styles-base.css';
|
||||||
import layout from './styles-layout.css';
|
import layout from './styles-layout.css';
|
||||||
import print from './styles-print.css';
|
import print from './styles-print.css';
|
||||||
import byline from './d-byline.css';
|
import byline from './d-byline.css';
|
||||||
import article from './d-article.css';
|
import article from './d-article.css';
|
||||||
|
import title from './d-title.css';
|
||||||
import math from './d-math.css';
|
import math from './d-math.css';
|
||||||
|
|
||||||
export const styles = base + layout + byline + article + math + print;
|
export const styles = base + layout + title + byline + article + math + print;
|
||||||
|
|
||||||
export function makeStyleTag(dom) {
|
export function makeStyleTag(dom) {
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/* eslint-env node, mocha */
|
/* eslint-env node, mocha */
|
||||||
|
|
||||||
import { FrontMatter } from './front-matter';
|
import { FrontMatter } from './front-matter';
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
const html = `
|
const html = `
|
||||||
<style>
|
<style>
|
||||||
dt-banner {
|
dt-banner {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { bylineTemplate } from '../components/d-byline.js';
|
import { bylineTemplate } from '../components/d-byline.js';
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { renderCitationList } from '../components/d-citation-list'; // (element, entries)
|
import { renderCitationList } from '../components/d-citation-list'; // (element, entries)
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
let css = `
|
let css = `
|
||||||
dt-cite {
|
dt-cite {
|
||||||
@@ -95,6 +109,7 @@ export default function(dom, data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function author_string(ent, template, sep, finalSep){
|
function author_string(ent, template, sep, finalSep){
|
||||||
|
if (ent.author == null) { return ''; }
|
||||||
var names = ent.author.split(' and ');
|
var names = ent.author.split(' and ');
|
||||||
let name_strings = names.map(name => {
|
let name_strings = names.map(name => {
|
||||||
name = name.trim();
|
name = name.trim();
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import Prism from 'prismjs';
|
import Prism from 'prismjs';
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|
||||||
var fnTags = [].slice.apply(dom.querySelectorAll('dt-fn'));
|
var fnTags = [].slice.apply(dom.querySelectorAll('dt-fn'));
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import ymlParse from 'js-yaml';
|
import ymlParse from 'js-yaml';
|
||||||
|
|
||||||
export default function(dom, data) {
|
export default function(dom, data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
//import xml from "xml";
|
//import xml from "xml";
|
||||||
|
|
||||||
export default function(data) {
|
export default function(data) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import code from './hover-box.txt';
|
import code from './hover-box.txt';
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
|
|
||||||
const head = dom.querySelector('head');
|
const head = dom.querySelector('head');
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import fetch from 'fetch';
|
import fetch from 'fetch';
|
||||||
let fetchUrl = fetch.fetchUrl;
|
let fetchUrl = fetch.fetchUrl;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import marked from 'marked';
|
import marked from 'marked';
|
||||||
|
|
||||||
marked.setOptions({
|
marked.setOptions({
|
||||||
|
|||||||
@@ -1,22 +1,36 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import katex from 'katex';
|
import katex from 'katex';
|
||||||
import { renderMathInElement } from '../helpers/katex-auto-render';
|
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...`);
|
||||||
|
|||||||
+34
-13
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// TODO: rewrite as template to make order dependencies easier
|
// TODO: rewrite as template to make order dependencies easier
|
||||||
|
|
||||||
import favicon from '../assets/distill-favicon.base64';
|
import favicon from '../assets/distill-favicon.base64';
|
||||||
@@ -37,6 +51,11 @@ export default function(dom, data) {
|
|||||||
<meta property="description" itemprop="description" content="${escape(data.description)}" />
|
<meta property="description" itemprop="description" content="${escape(data.description)}" />
|
||||||
<meta property="article:published" itemprop="datePublished" content="${data.publishedISODateOnly}" />
|
<meta property="article:published" itemprop="datePublished" content="${data.publishedISODateOnly}" />
|
||||||
<meta property="article:created" itemprop="dateCreated" content="${data.publishedISODateOnly}" />
|
<meta property="article:created" itemprop="dateCreated" content="${data.publishedISODateOnly}" />
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.updatedDate) {
|
||||||
|
appendHead(`
|
||||||
<meta property="article:modified" itemprop="dateModified" content="${data.updatedDate.toISOString()}" />
|
<meta property="article:modified" itemprop="dateModified" content="${data.updatedDate.toISOString()}" />
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
@@ -119,26 +138,28 @@ function appendHtml(el, html) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function citation_meta_content(ref){
|
function citation_meta_content(ref){
|
||||||
// Special test for arxiv
|
|
||||||
var content = `citation_title=${ref.title};`;
|
var content = `citation_title=${ref.title};`;
|
||||||
|
|
||||||
ref.author.split(' and ').forEach(name => {
|
if (ref.author && ref.author !== '') {
|
||||||
name = name.trim();
|
ref.author.split(' and ').forEach(name => {
|
||||||
let last, firsts;
|
name = name.trim();
|
||||||
if (name.indexOf(',') != -1){
|
let last, firsts;
|
||||||
last = name.split(',')[0].trim();
|
if (name.indexOf(',') != -1){
|
||||||
firsts = name.split(',')[1].trim();
|
last = name.split(',')[0].trim();
|
||||||
} else {
|
firsts = name.split(',')[1].trim();
|
||||||
last = name.split(' ').slice(-1)[0].trim();
|
} else {
|
||||||
firsts = name.split(' ').slice(0,-1).join(' ');
|
last = name.split(' ').slice(-1)[0].trim();
|
||||||
}
|
firsts = name.split(' ').slice(0,-1).join(' ');
|
||||||
content += `citation_author=${firsts} ${last};`;
|
}
|
||||||
});
|
content += `citation_author=${firsts} ${last};`;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ('year' in ref) {
|
if ('year' in ref) {
|
||||||
content += `citation_publication_date=${ref.year};`;
|
content += `citation_publication_date=${ref.year};`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special test for arxiv
|
||||||
let arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url);
|
let arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url);
|
||||||
arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url);
|
arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url);
|
||||||
arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal);
|
arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal);
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
// no appendix -> add appendix
|
// no appendix -> add appendix
|
||||||
// title in front, no h1 -> add it
|
// title in front, no h1 -> add it
|
||||||
// no title in front, h1 -> read and put into frontMatter
|
// no title in front, h1 -> read and put into frontMatter
|
||||||
@@ -29,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,6 +64,8 @@ export default function(dom, data) {
|
|||||||
interstitial.password = data.password;
|
interstitial.password = data.password;
|
||||||
body.insertBefore(interstitial, body.firstChild);
|
body.insertBefore(interstitial, body.firstChild);
|
||||||
}
|
}
|
||||||
|
} else if (!hasPassword && interstitial) {
|
||||||
|
interstitial.parentElement.removeChild(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
let appendix = dom.querySelector('d-appendix');
|
let appendix = dom.querySelector('d-appendix');
|
||||||
|
|||||||
+81
-36
@@ -1,47 +1,92 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
const webcomponentPath = 'https://distill.pub/third-party/polyfills/webcomponents-lite.js';
|
const webcomponentPath = 'https://distill.pub/third-party/polyfills/webcomponents-lite.js';
|
||||||
const intersectionObserverPath = 'https://distill.pub/third-party/polyfills/intersection-observer.js';
|
const intersectionObserverPath = 'https://distill.pub/third-party/polyfills/intersection-observer.js';
|
||||||
|
|
||||||
const template = `
|
// const template = `
|
||||||
if ('IntersectionObserver' in window &&
|
// if ('IntersectionObserver' in window &&
|
||||||
'IntersectionObserverEntry' in window &&
|
// 'IntersectionObserverEntry' in window &&
|
||||||
'intersectionRatio' in IntersectionObserverEntry.prototype) {
|
// 'intersectionRatio' in IntersectionObserverEntry.prototype) {
|
||||||
// Platform supports IntersectionObserver natively! :-)
|
// // Platform supports IntersectionObserver natively! :-)
|
||||||
if (!('isIntersecting' in IntersectionObserverEntry.prototype)) {
|
// if (!('isIntersecting' in IntersectionObserverEntry.prototype)) {
|
||||||
Object.defineProperty(IntersectionObserverEntry.prototype,
|
// Object.defineProperty(IntersectionObserverEntry.prototype,
|
||||||
'isIntersecting', {
|
// 'isIntersecting', {
|
||||||
get: function () {
|
// get: function () {
|
||||||
return this.intersectionRatio > 0;
|
// return this.intersectionRatio > 0;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
// Platform does not support webcomponents--loading polyfills synchronously.
|
// // Platform does not support webcomponents--loading polyfills synchronously.
|
||||||
const scriptTag = document.createElement('script');
|
// const scriptTag = document.createElement('script');
|
||||||
scriptTag.src = '${intersectionObserverPath}';
|
// scriptTag.src = '${intersectionObserverPath}';
|
||||||
scriptTag.async = false;
|
// scriptTag.async = false;
|
||||||
document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);
|
// document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
|
// if ('registerElement' in document &&
|
||||||
|
// 'import' in document.createElement('link') &&
|
||||||
|
// 'content' in document.createElement('template')) {
|
||||||
|
// // Platform supports webcomponents natively! :-)
|
||||||
|
// } else {
|
||||||
|
// // Platform does not support webcomponents--loading polyfills synchronously.
|
||||||
|
// const scriptTag = document.createElement('script');
|
||||||
|
// scriptTag.src = '${webcomponentPath}';
|
||||||
|
// scriptTag.async = false;
|
||||||
|
// document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// `;
|
||||||
|
|
||||||
if ('registerElement' in document &&
|
|
||||||
'import' in document.createElement('link') &&
|
const addBackIn = `
|
||||||
'content' in document.createElement('template')) {
|
window.addEventListener('WebComponentsReady', function() {
|
||||||
// Platform supports webcomponents natively! :-)
|
console.warn('WebComponentsReady');
|
||||||
} else {
|
const loaderTag = document.createElement('script');
|
||||||
// Platform does not support webcomponents--loading polyfills synchronously.
|
loaderTag.src = 'https://distill.pub/template.v2.js';
|
||||||
const scriptTag = document.createElement('script');
|
document.head.insertBefore(loaderTag, document.head.firstChild);
|
||||||
scriptTag.src = '${webcomponentPath}';
|
});
|
||||||
scriptTag.async = false;
|
|
||||||
document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);
|
|
||||||
}
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default function render(dom) {
|
export default function render(dom) {
|
||||||
|
// pull out template script tag
|
||||||
|
const templateTag = dom.querySelector('script[src*="template.v2.js"]');
|
||||||
|
if (templateTag) {
|
||||||
|
templateTag.parentNode.removeChild(templateTag);
|
||||||
|
} else {
|
||||||
|
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
|
||||||
|
const loaderTag = dom.createElement('script');
|
||||||
|
loaderTag.src = 'https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.0.17/webcomponents-loader.js';
|
||||||
|
dom.head.insertBefore(loaderTag, dom.head.firstChild);
|
||||||
|
|
||||||
|
// add loader event listener to add tempalrte back in
|
||||||
|
const addTag = dom.createElement('script');
|
||||||
|
addTag.innerHTML = addBackIn;
|
||||||
|
dom.head.insertBefore(addTag, dom.head.firstChild);
|
||||||
|
|
||||||
|
|
||||||
// create polyfill script tag
|
// create polyfill script tag
|
||||||
const polyfillScriptTag = dom.createElement('script');
|
// const polyfillScriptTag = dom.createElement('script');
|
||||||
polyfillScriptTag.innerHTML = template;
|
// polyfillScriptTag.innerHTML = template;
|
||||||
polyfillScriptTag.id = 'polyfills';
|
// polyfillScriptTag.id = 'polyfills';
|
||||||
|
|
||||||
// insert at appropriate position--before any other script tag
|
// insert at appropriate position--before any other script tag
|
||||||
const firstScriptTag = dom.head.querySelector('script');
|
// const firstScriptTag = dom.head.querySelector('script');
|
||||||
dom.head.insertBefore(polyfillScriptTag, firstScriptTag);
|
// dom.head.insertBefore(polyfillScriptTag, firstScriptTag);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Try to only reorder things that MAY be user defined.
|
Try to only reorder things that MAY be user defined.
|
||||||
Try to use templates etc to define the order of our own tags.
|
Try to use templates etc to define the order of our own tags.
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { renderTOC } from '../components/d-toc';
|
import { renderTOC } from '../components/d-toc';
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
export default function(dom) {
|
export default function(dom) {
|
||||||
|
|
||||||
var textNodes = dom.createTreeWalker(
|
var textNodes = dom.createTreeWalker(
|
||||||
@@ -10,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;
|
||||||
|
|||||||
+96
-81
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
import { Template } from '../mixins/template';
|
import { Template } from '../mixins/template';
|
||||||
import { scaleLinear } from 'd3-scale';
|
import { scaleLinear } from 'd3-scale';
|
||||||
import { range } from 'd3-array';
|
import { range } from 'd3-array';
|
||||||
@@ -90,14 +104,14 @@ const T = Template('d-slider', `
|
|||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="background">
|
<div class='background'>
|
||||||
<div class="track"></div>
|
<div class='track'></div>
|
||||||
<div class="track-fill"></div>
|
<div class='track-fill'></div>
|
||||||
<div class="knob-container">
|
<div class='knob-container'>
|
||||||
<div class="knob-highlight"></div>
|
<div class='knob-highlight'></div>
|
||||||
<div class="knob"></div>
|
<div class='knob'></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ticks"></div>
|
<div class='ticks'></div>
|
||||||
</div>
|
</div>
|
||||||
`);
|
`);
|
||||||
|
|
||||||
@@ -121,18 +135,18 @@ export class Slider extends T(HTMLElement) {
|
|||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
this.connected = true;
|
this.connected = true;
|
||||||
this.setAttribute("role", "slider");
|
this.setAttribute('role', 'slider');
|
||||||
// Makes the element tab-able.
|
// Makes the element tab-able.
|
||||||
if (!this.hasAttribute("tabindex")) { this.setAttribute("tabindex", 0); }
|
if (!this.hasAttribute('tabindex')) { this.setAttribute('tabindex', 0); }
|
||||||
|
|
||||||
// Keeps track of keyboard vs. mouse interactions for focus rings
|
// Keeps track of keyboard vs. mouse interactions for focus rings
|
||||||
this.mouseEvent = false;
|
this.mouseEvent = false;
|
||||||
|
|
||||||
// Handles to shadow DOM elements
|
// Handles to shadow DOM elements
|
||||||
this.knob = this.root.querySelector(".knob-container");
|
this.knob = this.root.querySelector('.knob-container');
|
||||||
this.background = this.root.querySelector(".background");
|
this.background = this.root.querySelector('.background');
|
||||||
this.trackFill = this.root.querySelector(".track-fill");
|
this.trackFill = this.root.querySelector('.track-fill');
|
||||||
this.track = this.root.querySelector(".track");
|
this.track = this.root.querySelector('.track');
|
||||||
|
|
||||||
// Default values for attributes
|
// Default values for attributes
|
||||||
this.min = this.min ? this.min : 0;
|
this.min = this.min ? this.min : 0;
|
||||||
@@ -148,108 +162,109 @@ export class Slider extends T(HTMLElement) {
|
|||||||
|
|
||||||
this.drag = drag()
|
this.drag = drag()
|
||||||
.container(this.background)
|
.container(this.background)
|
||||||
.on("start", () => {
|
.on('start', () => {
|
||||||
this.mouseEvent = true;
|
this.mouseEvent = true;
|
||||||
this.background.classList.add("mousedown");
|
this.background.classList.add('mousedown');
|
||||||
this.changeValue = this.value;
|
this.changeValue = this.value;
|
||||||
this.dragUpdate();
|
this.dragUpdate();
|
||||||
})
|
})
|
||||||
.on("drag", () => {
|
.on('drag', () => {
|
||||||
this.dragUpdate();
|
this.dragUpdate();
|
||||||
})
|
})
|
||||||
.on("end", () => {
|
.on('end', () => {
|
||||||
this.mouseEvent = false;
|
this.mouseEvent = false;
|
||||||
this.background.classList.remove("mousedown");
|
this.background.classList.remove('mousedown');
|
||||||
this.dragUpdate();
|
this.dragUpdate();
|
||||||
if (this.changeValue !== this.value) this.dispatchChange();
|
if (this.changeValue !== this.value) this.dispatchChange();
|
||||||
this.changeValue = this.value;
|
this.changeValue = this.value;
|
||||||
});
|
});
|
||||||
this.drag(select(this.background));
|
this.drag(select(this.background));
|
||||||
|
|
||||||
this.addEventListener("focusin", (e) => {
|
this.addEventListener('focusin', () => {
|
||||||
if(!this.mouseEvent) {
|
if(!this.mouseEvent) {
|
||||||
this.background.classList.add("focus");
|
this.background.classList.add('focus');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.addEventListener("focusout", (e) => {
|
this.addEventListener('focusout', () => {
|
||||||
this.background.classList.remove("focus");
|
this.background.classList.remove('focus');
|
||||||
});
|
});
|
||||||
this.addEventListener("keydown", this.onKeyDown);
|
this.addEventListener('keydown', this.onKeyDown);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get observedAttributes() {return ["min", "max", "value", "step", "ticks", "origin", "tickValues", "tickLabels"]; }
|
static get observedAttributes() {return ['min', 'max', 'value', 'step', 'ticks', 'origin', 'tickValues', 'tickLabels']; }
|
||||||
|
|
||||||
attributeChangedCallback(attr, oldValue, newValue) {
|
attributeChangedCallback(attr, oldValue, newValue) {
|
||||||
if (attr == "min") {
|
if (isNaN(newValue) || newValue === undefined || newValue === null) return;
|
||||||
|
if (attr == 'min') {
|
||||||
this.min = +newValue;
|
this.min = +newValue;
|
||||||
this.setAttribute("aria-valuemin", this.min);
|
this.setAttribute('aria-valuemin', this.min);
|
||||||
}
|
}
|
||||||
if (attr == "max") {
|
if (attr == 'max') {
|
||||||
this.max = +newValue;
|
this.max = +newValue;
|
||||||
this.setAttribute("aria-valuemax", this.max);
|
this.setAttribute('aria-valuemax', this.max);
|
||||||
}
|
}
|
||||||
if (attr == "value") {
|
if (attr == 'value') {
|
||||||
this.update(+newValue);
|
this.update(+newValue);
|
||||||
}
|
}
|
||||||
if (attr == "origin") {
|
if (attr == 'origin') {
|
||||||
this.origin = +newValue;
|
this.origin = +newValue;
|
||||||
this.update(this.value);
|
// this.update(this.value);
|
||||||
}
|
}
|
||||||
if (attr == "step") {
|
if (attr == 'step') {
|
||||||
if (newValue > 0) {
|
if (newValue > 0) {
|
||||||
this.step = +newValue;
|
this.step = +newValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (attr == "ticks") {
|
if (attr == 'ticks') {
|
||||||
this.ticks = (newValue === "" ? true : newValue);
|
this.ticks = (newValue === '' ? true : newValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onKeyDown(e) {
|
onKeyDown(event) {
|
||||||
this.changeValue = this.value;
|
this.changeValue = this.value;
|
||||||
let stopPropagation = false;
|
let stopPropagation = false;
|
||||||
switch (event.keyCode) {
|
switch (event.keyCode) {
|
||||||
case keyCodes.left:
|
case keyCodes.left:
|
||||||
case keyCodes.down:
|
case keyCodes.down:
|
||||||
this.update(this.value - this.step)
|
this.update(this.value - this.step);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
case keyCodes.right:
|
case keyCodes.right:
|
||||||
case keyCodes.up:
|
case keyCodes.up:
|
||||||
this.update(this.value + this.step)
|
this.update(this.value + this.step);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
case keyCodes.pageUp:
|
case keyCodes.pageUp:
|
||||||
this.update(this.value + this.step * 10)
|
this.update(this.value + this.step * 10);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case keyCodes.pageDown:
|
case keyCodes.pageDown:
|
||||||
this.update(this.value + this.step * 10)
|
this.update(this.value + this.step * 10);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
case keyCodes.home:
|
case keyCodes.home:
|
||||||
this.update(this.min);
|
this.update(this.min);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
case keyCodes.end:
|
case keyCodes.end:
|
||||||
this.update(this.max);
|
this.update(this.max);
|
||||||
stopPropagation = true;
|
stopPropagation = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (stopPropagation) {
|
if (stopPropagation) {
|
||||||
this.background.classList.add("focus");
|
this.background.classList.add('focus');
|
||||||
e.preventDefault();
|
event.preventDefault();
|
||||||
e.stopPropagation();
|
event.stopPropagation();
|
||||||
if (this.changeValue !== this.value) this.dispatchChange();
|
if (this.changeValue !== this.value) this.dispatchChange();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validateValueRange(min, max, value) {
|
validateValueRange(min, max, value) {
|
||||||
return Math.max(Math.min(max, value), min)
|
return Math.max(Math.min(max, value), min);
|
||||||
}
|
}
|
||||||
|
|
||||||
quantizeValue(value, step) {
|
quantizeValue(value, step) {
|
||||||
@@ -265,53 +280,53 @@ export class Slider extends T(HTMLElement) {
|
|||||||
|
|
||||||
update(value) {
|
update(value) {
|
||||||
let v = value;
|
let v = value;
|
||||||
if (this.step !== "any") {
|
if (this.step !== 'any') {
|
||||||
v = this.quantizeValue(value, this.step);
|
v = this.quantizeValue(value, this.step);
|
||||||
}
|
}
|
||||||
v = this.validateValueRange(this.min, this.max, v);
|
v = this.validateValueRange(this.min, this.max, v);
|
||||||
if (this.connected) {
|
if (this.connected) {
|
||||||
this.knob.style.left = this.scale(v) * 100 + "%";
|
this.knob.style.left = this.scale(v) * 100 + '%';
|
||||||
this.trackFill.style.width = this.scale(this.min + Math.abs(v - this.origin)) * 100 + "%";
|
this.trackFill.style.width = this.scale(this.min + Math.abs(v - this.origin)) * 100 + '%';
|
||||||
this.trackFill.style.left = this.scale(Math.min(v, this.origin)) * 100 + "%";
|
this.trackFill.style.left = this.scale(Math.min(v, this.origin)) * 100 + '%';
|
||||||
}
|
}
|
||||||
if (this.value !== v) {
|
if (this.value !== v) {
|
||||||
this.value = v;
|
this.value = v;
|
||||||
this.setAttribute("aria-valuenow", this.value);
|
this.setAttribute('aria-valuenow', this.value);
|
||||||
this.dispatchInput();
|
this.dispatchInput();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dispatches only on a committed change (basically only on mouseup).
|
// Dispatches only on a committed change (basically only on mouseup).
|
||||||
dispatchChange() {
|
dispatchChange() {
|
||||||
const e = new Event("change");
|
const e = new Event('change');
|
||||||
this.dispatchEvent(e, {});
|
this.dispatchEvent(e, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dispatches on each value change.
|
// Dispatches on each value change.
|
||||||
dispatchInput() {
|
dispatchInput() {
|
||||||
const e = new Event("input");
|
const e = new Event('input');
|
||||||
this.dispatchEvent(e, {});
|
this.dispatchEvent(e, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderTicks() {
|
renderTicks() {
|
||||||
const ticksContainer = this.root.querySelector(".ticks");
|
const ticksContainer = this.root.querySelector('.ticks');
|
||||||
if (this.ticks !== false) {
|
if (this.ticks !== false) {
|
||||||
let tickData = [];
|
let tickData = [];
|
||||||
if (this.ticks > 0) {
|
if (this.ticks > 0) {
|
||||||
tickData = this.scale.ticks(this.ticks);
|
tickData = this.scale.ticks(this.ticks);
|
||||||
} else if (this.step === "any") {
|
} else if (this.step === 'any') {
|
||||||
tickData = this.scale.ticks();
|
tickData = this.scale.ticks();
|
||||||
} else {
|
} else {
|
||||||
tickData = range(this.min, this.max + 1e-6, this.step);
|
tickData = range(this.min, this.max + 1e-6, this.step);
|
||||||
}
|
}
|
||||||
tickData.forEach(d => {
|
tickData.forEach(d => {
|
||||||
const tick = document.createElement("div");
|
const tick = document.createElement('div');
|
||||||
tick.classList.add("tick");
|
tick.classList.add('tick');
|
||||||
tick.style.left = this.scale(d) * 100 + "%";
|
tick.style.left = this.scale(d) * 100 + '%';
|
||||||
ticksContainer.appendChild(tick)
|
ticksContainer.appendChild(tick);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
ticksContainer.style.display = "none";
|
ticksContainer.style.display = 'none';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
function nodeListToArray(nodeList) {
|
function nodeListToArray(nodeList) {
|
||||||
return Array.prototype.slice.call(nodeList);
|
return Array.prototype.slice.call(nodeList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2018 The Distill Template Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/* global it, should, describe */
|
/* global it, should, describe */
|
||||||
|
|
||||||
// Test format: https://mochajs.org/#bdd
|
// Test format: https://mochajs.org/#bdd
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// Copyright 2018 The Distill Template Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
/* global it, describe, before, beforeEach, after, afterEach */
|
/* global it, describe, before, beforeEach, after, afterEach */
|
||||||
|
|
||||||
const jsdom = require('jsdom');
|
const jsdom = require('jsdom');
|
||||||
|
|||||||
Reference in New Issue
Block a user