@thegetty/quire-cli 0.20.3 → 0.20.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/bin/.DS_Store +0 -0
- package/bin/go-iiif/.DS_Store +0 -0
- package/bin/index.js +2 -0
- package/bin/starters/.DS_Store +0 -0
- package/bin/starters/README.md +0 -0
- package/bin/starters/default/.circleci/config.yml +98 -0
- package/bin/starters/default/.gitignore +14 -0
- package/bin/starters/default/.nojekyll +0 -0
- package/bin/starters/default/CHANGELOG.md +38 -0
- package/bin/starters/default/README.md +25 -0
- package/bin/starters/default/bin/deploy.sh +25 -0
- package/bin/starters/default/config/_default/config.yml +53 -0
- package/bin/starters/default/config/development/config.yml +14 -0
- package/bin/starters/default/config/environments/dev.yml +14 -0
- package/bin/starters/default/config/environments/github.yml +15 -0
- package/bin/starters/default/config/environments/netlify.yml +18 -0
- package/bin/starters/default/config/epub.yml +15 -0
- package/bin/starters/default/config/pdf.yml +16 -0
- package/bin/starters/default/config/site.yml +13 -0
- package/bin/starters/default/config.yml +53 -0
- package/bin/starters/default/content/about.md +20 -0
- package/bin/starters/default/content/bibliography.md +7 -0
- package/bin/starters/default/content/catalogue/1.md +28 -0
- package/bin/starters/default/content/catalogue/2.md +29 -0
- package/bin/starters/default/content/catalogue/3.md +20 -0
- package/bin/starters/default/content/catalogue/4.md +22 -0
- package/bin/starters/default/content/catalogue/catalogue-index.md +8 -0
- package/bin/starters/default/content/contents.md +7 -0
- package/bin/starters/default/content/contributors.md +7 -0
- package/bin/starters/default/content/cover.md +11 -0
- package/bin/starters/default/content/essay.md +80 -0
- package/bin/starters/default/content/intro.md +21 -0
- package/bin/starters/default/content/search-index.md +8 -0
- package/bin/starters/default/data/figures.yml +90 -0
- package/bin/starters/default/data/objects.yml +49 -0
- package/bin/starters/default/data/publication.yml +149 -0
- package/bin/starters/default/data/references.yml +11 -0
- package/bin/starters/default/static/css/custom.css +0 -0
- package/bin/starters/default/static/data/sample-geojson.json +16 -0
- package/bin/starters/default/static/downloads/.gitkeep +0 -0
- package/bin/starters/default/static/downloads/output.epub +0 -0
- package/bin/starters/default/static/downloads/output.mobi +0 -0
- package/bin/starters/default/static/downloads/output.pdf +0 -0
- package/bin/starters/default/static/img/contributors/judith-keller.jpg +0 -0
- package/bin/starters/default/static/img/cover.png +0 -0
- package/bin/starters/default/static/img/figures/duo.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-burroughs.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-child.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-graveyard.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-hymns.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-legionnaire.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-refugee.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-sons.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-video-still.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans-washroom.jpg +0 -0
- package/bin/starters/default/static/img/figures/evans.jpg +0 -0
- package/bin/starters/default/static/img/figures/family.jpg +0 -0
- package/bin/starters/default/static/img/figures/lange-house.jpg +0 -0
- package/bin/starters/default/static/img/figures/lange.jpg +0 -0
- package/bin/starters/default/static/img/figures/mother-b.jpg +0 -0
- package/bin/starters/default/static/img/figures/mother-c.jpg +0 -0
- package/bin/starters/default/static/img/figures/mother.jpg +0 -0
- package/bin/starters/default/static/img/figures/pickers.jpg +0 -0
- package/bin/starters/default/static/img/logo-getty.png +0 -0
- package/bin/starters/default/static/img/pattern-spiral-overlay.png +0 -0
- package/bin/starters/default/static/js/custom.js +4 -0
- package/bin/themes/README.md +0 -0
- package/bin/themes/default/.circleci/config.yml +62 -0
- package/bin/themes/default/.eslintrc.js +16 -0
- package/bin/themes/default/.gitignore +13 -0
- package/bin/themes/default/.scss-lint.yml +239 -0
- package/bin/themes/default/CHANGELOG.md +73 -0
- package/bin/themes/default/LICENSE.md +20 -0
- package/bin/themes/default/README.md +112 -0
- package/bin/themes/default/archetypes/default.md +2 -0
- package/bin/themes/default/cypress.json +7 -0
- package/bin/themes/default/layouts/404.html +0 -0
- package/bin/themes/default/layouts/_default/baseof.html +43 -0
- package/bin/themes/default/layouts/_default/single.html +26 -0
- package/bin/themes/default/layouts/contents/single.html +37 -0
- package/bin/themes/default/layouts/cover/single.html +128 -0
- package/bin/themes/default/layouts/data/search-index.html +65 -0
- package/bin/themes/default/layouts/entry/single.html +372 -0
- package/bin/themes/default/layouts/essay/single.html +24 -0
- package/bin/themes/default/layouts/partials/analytics.html +29 -0
- package/bin/themes/default/layouts/partials/cite-this.html +348 -0
- package/bin/themes/default/layouts/partials/contents-list/card-image.html +13 -0
- package/bin/themes/default/layouts/partials/contents-list/closing-tags.html +59 -0
- package/bin/themes/default/layouts/partials/contents-list/contents-list.html +179 -0
- package/bin/themes/default/layouts/partials/contents-list/file-dir.html +7 -0
- package/bin/themes/default/layouts/partials/contents-list/file-path.html +10 -0
- package/bin/themes/default/layouts/partials/contents-list/list-item-type.html +9 -0
- package/bin/themes/default/layouts/partials/contents-list/list-item-types/abstract.html +17 -0
- package/bin/themes/default/layouts/partials/contents-list/list-item-types/brief.html +7 -0
- package/bin/themes/default/layouts/partials/contents-list/list-item-types/default.html +9 -0
- package/bin/themes/default/layouts/partials/contents-list/list-item-types/grid.html +30 -0
- package/bin/themes/default/layouts/partials/contents-list/section-heading.html +5 -0
- package/bin/themes/default/layouts/partials/contents-list.html +207 -0
- package/bin/themes/default/layouts/partials/contributor-info.html +78 -0
- package/bin/themes/default/layouts/partials/contributor-list.html +102 -0
- package/bin/themes/default/layouts/partials/copyright.html +155 -0
- package/bin/themes/default/layouts/partials/debug-contents.html +8 -0
- package/bin/themes/default/layouts/partials/dublin-core.html +21 -0
- package/bin/themes/default/layouts/partials/error-message.html +19 -0
- package/bin/themes/default/layouts/partials/figure-caption.html +1 -0
- package/bin/themes/default/layouts/partials/figure-fallback.html +31 -0
- package/bin/themes/default/layouts/partials/figure-image.html +44 -0
- package/bin/themes/default/layouts/partials/figure-label.html +15 -0
- package/bin/themes/default/layouts/partials/figure-soundcloud.html +25 -0
- package/bin/themes/default/layouts/partials/figure-table.html +44 -0
- package/bin/themes/default/layouts/partials/figure-vimeo.html +24 -0
- package/bin/themes/default/layouts/partials/figure-website.html +21 -0
- package/bin/themes/default/layouts/partials/figure-youtube.html +23 -0
- package/bin/themes/default/layouts/partials/figures/caption.html +44 -0
- package/bin/themes/default/layouts/partials/figures/label.html +35 -0
- package/bin/themes/default/layouts/partials/figures/media-types/fallback.html +32 -0
- package/bin/themes/default/layouts/partials/figures/media-types/image.html +54 -0
- package/bin/themes/default/layouts/partials/figures/media-types/soundcloud.html +35 -0
- package/bin/themes/default/layouts/partials/figures/media-types/table.html +53 -0
- package/bin/themes/default/layouts/partials/figures/media-types/vimeo.html +34 -0
- package/bin/themes/default/layouts/partials/figures/media-types/website.html +24 -0
- package/bin/themes/default/layouts/partials/figures/media-types/youtube.html +29 -0
- package/bin/themes/default/layouts/partials/footer-buttons.html +29 -0
- package/bin/themes/default/layouts/partials/head.html +46 -0
- package/bin/themes/default/layouts/partials/icon.html +20 -0
- package/bin/themes/default/layouts/partials/icons-cc.html +86 -0
- package/bin/themes/default/layouts/partials/icons.html +54 -0
- package/bin/themes/default/layouts/partials/json-ld.html +117 -0
- package/bin/themes/default/layouts/partials/link-list-arrow.html +16 -0
- package/bin/themes/default/layouts/partials/link-list.html +11 -0
- package/bin/themes/default/layouts/partials/menu-header.html +25 -0
- package/bin/themes/default/layouts/partials/menu.html +69 -0
- package/bin/themes/default/layouts/partials/metadata.html +27 -0
- package/bin/themes/default/layouts/partials/navbar.html +173 -0
- package/bin/themes/default/layouts/partials/open-graph.html +43 -0
- package/bin/themes/default/layouts/partials/page-abstract.html +7 -0
- package/bin/themes/default/layouts/partials/page-bibliography.html +59 -0
- package/bin/themes/default/layouts/partials/page-class.html +9 -0
- package/bin/themes/default/layouts/partials/page-contributor.html +48 -0
- package/bin/themes/default/layouts/partials/page-header.html +22 -0
- package/bin/themes/default/layouts/partials/page-title.html +9 -0
- package/bin/themes/default/layouts/partials/page-tombstone.html +36 -0
- package/bin/themes/default/layouts/partials/pdf-info.html +20 -0
- package/bin/themes/default/layouts/partials/pdf-title-pages.html +39 -0
- package/bin/themes/default/layouts/partials/scripts.html +5 -0
- package/bin/themes/default/layouts/partials/search.html +52 -0
- package/bin/themes/default/layouts/partials/site-title.html +9 -0
- package/bin/themes/default/layouts/partials/tests/check-node-modules.html +9 -0
- package/bin/themes/default/layouts/partials/tests/check-page-one-class.html +21 -0
- package/bin/themes/default/layouts/partials/tests/check-page-weights.html +49 -0
- package/bin/themes/default/layouts/partials/tests/run.html +13 -0
- package/bin/themes/default/layouts/partials/twitter-card.html +23 -0
- package/bin/themes/default/layouts/shortcodes/q-bibliography.html +61 -0
- package/bin/themes/default/layouts/shortcodes/q-cite.html +79 -0
- package/bin/themes/default/layouts/shortcodes/q-class.html +3 -0
- package/bin/themes/default/layouts/shortcodes/q-contributor.html +327 -0
- package/bin/themes/default/layouts/shortcodes/q-contributors.html +11 -0
- package/bin/themes/default/layouts/shortcodes/q-figure-group.html +457 -0
- package/bin/themes/default/layouts/shortcodes/q-figure-new.html +70 -0
- package/bin/themes/default/layouts/shortcodes/q-figure-zoom.html +408 -0
- package/bin/themes/default/layouts/shortcodes/q-figure.html +86 -0
- package/bin/themes/default/layouts/sitemap.xml +24 -0
- package/bin/themes/default/layouts/splash/single.html +67 -0
- package/bin/themes/default/package-lock.json +13198 -0
- package/bin/themes/default/package.json +96 -0
- package/bin/themes/default/source/css/application.scss +30 -0
- package/bin/themes/default/source/css/bulma-components.scss +21 -0
- package/bin/themes/default/source/css/colors.scss +16 -0
- package/bin/themes/default/source/css/components/_all.scss +15 -0
- package/bin/themes/default/source/css/components/container.sass +35 -0
- package/bin/themes/default/source/css/components/quire-buttons.scss +95 -0
- package/bin/themes/default/source/css/components/quire-citation.scss +77 -0
- package/bin/themes/default/source/css/components/quire-contents-list.scss +329 -0
- package/bin/themes/default/source/css/components/quire-contributors.scss +131 -0
- package/bin/themes/default/source/css/components/quire-copyright.scss +28 -0
- package/bin/themes/default/source/css/components/quire-cover.scss +216 -0
- package/bin/themes/default/source/css/components/quire-deepzoom.scss +181 -0
- package/bin/themes/default/source/css/components/quire-entry.scss +651 -0
- package/bin/themes/default/source/css/components/quire-figure.scss +589 -0
- package/bin/themes/default/source/css/components/quire-map.scss +17 -0
- package/bin/themes/default/source/css/components/quire-menu.scss +209 -0
- package/bin/themes/default/source/css/components/quire-navbar.scss +366 -0
- package/bin/themes/default/source/css/components/quire-page.scss +920 -0
- package/bin/themes/default/source/css/components/quire-popup.scss +233 -0
- package/bin/themes/default/source/css/components/quire-search.scss +121 -0
- package/bin/themes/default/source/css/epub.scss +549 -0
- package/bin/themes/default/source/css/fonts.scss +159 -0
- package/bin/themes/default/source/css/layout.scss +186 -0
- package/bin/themes/default/source/css/print.scss +613 -0
- package/bin/themes/default/source/css/utilities.scss +345 -0
- package/bin/themes/default/source/css/variables.scss +144 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.eot +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.woff +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.woff2 +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.eot +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.woff +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.woff2 +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.eot +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.woff +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.woff2 +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.eot +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.woff +0 -0
- package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bold.eot +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bold.woff +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bold.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.eot +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.woff +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-italic.eot +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-italic.woff +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-italic.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-regular.eot +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-regular.woff +0 -0
- package/bin/themes/default/source/fonts/noto-sans/notosans-regular.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.eot +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.woff +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.eot +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.woff +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.eot +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.woff +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.woff2 +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.eot +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.woff +0 -0
- package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.woff2 +0 -0
- package/bin/themes/default/source/img/cover.png +0 -0
- package/bin/themes/default/source/img/fullscreen.png +0 -0
- package/bin/themes/default/source/img/icons/arrow_forward.png +0 -0
- package/bin/themes/default/source/img/icons/baseline-headset-24px.png +0 -0
- package/bin/themes/default/source/img/icons/baseline-videocam-24px.png +0 -0
- package/bin/themes/default/source/img/icons/baseline-website-24px.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by-nc-nd.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by-nc-sa.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by-nc.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by-nd.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by-sa.png +0 -0
- package/bin/themes/default/source/img/icons/cc-by.png +0 -0
- package/bin/themes/default/source/img/icons/cc-zero.png +0 -0
- package/bin/themes/default/source/img/icons/close.png +0 -0
- package/bin/themes/default/source/img/icons/down-arrow.png +0 -0
- package/bin/themes/default/source/img/icons/download.png +0 -0
- package/bin/themes/default/source/img/icons/favicon.ico +0 -0
- package/bin/themes/default/source/img/icons/home.png +0 -0
- package/bin/themes/default/source/img/icons/left-arrow.png +0 -0
- package/bin/themes/default/source/img/icons/link.png +0 -0
- package/bin/themes/default/source/img/icons/nav.png +0 -0
- package/bin/themes/default/source/img/icons/right-arrow.png +0 -0
- package/bin/themes/default/source/img/icons/search.png +0 -0
- package/bin/themes/default/source/img/icons/start.png +0 -0
- package/bin/themes/default/source/img/layers-2x.png +0 -0
- package/bin/themes/default/source/img/layers.png +0 -0
- package/bin/themes/default/source/img/marker-icon.png +0 -0
- package/bin/themes/default/source/img/pattern-spiral-overlay.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/classic-catalogue.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/classic-entry.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/classic-essay.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/modern-contents.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/modern-cover.png +0 -0
- package/bin/themes/default/source/img/promo-screenshots/modern-essay.png +0 -0
- package/bin/themes/default/source/js/application.js +604 -0
- package/bin/themes/default/source/js/deepzoom.js +186 -0
- package/bin/themes/default/source/js/epub.js +9 -0
- package/bin/themes/default/source/js/fullscreen.js +190 -0
- package/bin/themes/default/source/js/helper.js +197 -0
- package/bin/themes/default/source/js/map.js +94 -0
- package/bin/themes/default/source/js/navigation.js +59 -0
- package/bin/themes/default/source/js/popup.js +311 -0
- package/bin/themes/default/source/js/search.js +35 -0
- package/bin/themes/default/source/js/soundcloud-api.js +1 -0
- package/bin/themes/default/static/css/epub.css +401 -0
- package/bin/themes/default/static/fonts/MaterialIcons-Regular.eot +0 -0
- package/bin/themes/default/static/fonts/MaterialIcons-Regular.woff +0 -0
- package/bin/themes/default/static/fonts/MaterialIcons-Regular.woff2 +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.eot +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.woff +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.woff2 +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.eot +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.woff +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.woff2 +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.eot +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.woff +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.woff2 +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.eot +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.woff +0 -0
- package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.woff2 +0 -0
- package/bin/themes/default/static/fonts/notosans-bold.eot +0 -0
- package/bin/themes/default/static/fonts/notosans-bold.woff +0 -0
- package/bin/themes/default/static/fonts/notosans-bold.woff2 +0 -0
- package/bin/themes/default/static/fonts/notosans-bolditalic.eot +0 -0
- package/bin/themes/default/static/fonts/notosans-bolditalic.woff +0 -0
- package/bin/themes/default/static/fonts/notosans-bolditalic.woff2 +0 -0
- package/bin/themes/default/static/fonts/notosans-italic.eot +0 -0
- package/bin/themes/default/static/fonts/notosans-italic.woff +0 -0
- package/bin/themes/default/static/fonts/notosans-italic.woff2 +0 -0
- package/bin/themes/default/static/fonts/notosans-regular.eot +0 -0
- package/bin/themes/default/static/fonts/notosans-regular.woff +0 -0
- package/bin/themes/default/static/fonts/notosans-regular.woff2 +0 -0
- package/bin/themes/default/static/fonts/notoserif-bold.eot +0 -0
- package/bin/themes/default/static/fonts/notoserif-bold.woff +0 -0
- package/bin/themes/default/static/fonts/notoserif-bold.woff2 +0 -0
- package/bin/themes/default/static/fonts/notoserif-bolditalic.eot +0 -0
- package/bin/themes/default/static/fonts/notoserif-bolditalic.woff +0 -0
- package/bin/themes/default/static/fonts/notoserif-bolditalic.woff2 +0 -0
- package/bin/themes/default/static/fonts/notoserif-italic.eot +0 -0
- package/bin/themes/default/static/fonts/notoserif-italic.woff +0 -0
- package/bin/themes/default/static/fonts/notoserif-italic.woff2 +0 -0
- package/bin/themes/default/static/fonts/notoserif-regular.eot +0 -0
- package/bin/themes/default/static/fonts/notoserif-regular.woff +0 -0
- package/bin/themes/default/static/fonts/notoserif-regular.woff2 +0 -0
- package/bin/themes/default/static/img/baseline-website-24px.png +0 -0
- package/bin/themes/default/static/img/cover.png +0 -0
- package/bin/themes/default/static/img/fullscreen.png +0 -0
- package/bin/themes/default/static/img/fullscreen@2x.png +0 -0
- package/bin/themes/default/static/img/icons/arrow_forward.png +0 -0
- package/bin/themes/default/static/img/icons/baseline-headset-24px.png +0 -0
- package/bin/themes/default/static/img/icons/baseline-videocam-24px.png +0 -0
- package/bin/themes/default/static/img/icons/baseline-website-24px.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by-nc-nd.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by-nc-sa.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by-nc.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by-nd.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by-sa.png +0 -0
- package/bin/themes/default/static/img/icons/cc-by.png +0 -0
- package/bin/themes/default/static/img/icons/cc-zero.png +0 -0
- package/bin/themes/default/static/img/icons/close.png +0 -0
- package/bin/themes/default/static/img/icons/down-arrow.png +0 -0
- package/bin/themes/default/static/img/icons/download.png +0 -0
- package/bin/themes/default/static/img/icons/favicon.ico +0 -0
- package/bin/themes/default/static/img/icons/home.png +0 -0
- package/bin/themes/default/static/img/icons/left-arrow.png +0 -0
- package/bin/themes/default/static/img/icons/link.png +0 -0
- package/bin/themes/default/static/img/icons/nav.png +0 -0
- package/bin/themes/default/static/img/icons/right-arrow.png +0 -0
- package/bin/themes/default/static/img/icons/search.png +0 -0
- package/bin/themes/default/static/img/icons/soundcloud.png +0 -0
- package/bin/themes/default/static/img/icons/start.png +0 -0
- package/bin/themes/default/static/img/icons/vimeo.png +0 -0
- package/bin/themes/default/static/img/icons/website.png +0 -0
- package/bin/themes/default/static/img/icons/youtube.png +0 -0
- package/bin/themes/default/static/img/layers-2x.png +0 -0
- package/bin/themes/default/static/img/layers.png +0 -0
- package/bin/themes/default/static/img/marker-icon.png +0 -0
- package/bin/themes/default/static/img/pattern-spiral-overlay.png +0 -0
- package/bin/themes/default/tests/.gitkeep +0 -0
- package/bin/themes/default/tests/e2e/.eslintrc.js +9 -0
- package/bin/themes/default/tests/e2e/fixtures/blns.json +483 -0
- package/bin/themes/default/tests/e2e/plugins/index.js +22 -0
- package/bin/themes/default/tests/e2e/specs/quire-contents.spec.js +52 -0
- package/bin/themes/default/tests/e2e/specs/quire-contributors.spec.js +66 -0
- package/bin/themes/default/tests/e2e/specs/quire-entry.spec.js +104 -0
- package/bin/themes/default/tests/e2e/specs/quire-essay.spec.js +105 -0
- package/bin/themes/default/tests/e2e/specs/quire-menu.spec.js +38 -0
- package/bin/themes/default/tests/e2e/specs/quire-modal.spec.js +69 -0
- package/bin/themes/default/tests/e2e/specs/quire-next-back-buttons.spec.js +27 -0
- package/bin/themes/default/tests/e2e/specs/quire-page.spec.js +28 -0
- package/bin/themes/default/tests/e2e/specs/quire-search.spec.js +48 -0
- package/bin/themes/default/tests/e2e/specs/quire-splash.spec.js +38 -0
- package/bin/themes/default/tests/e2e/support/commands.js +25 -0
- package/bin/themes/default/tests/e2e/support/index.js +20 -0
- package/bin/themes/default/theme.toml +22 -0
- package/bin/themes/default/tsconfig.json +5 -0
- package/bin/themes/default/webpack/webpack.config.dev.js +128 -0
- package/bin/themes/default/webpack/webpack.config.epub.js +140 -0
- package/bin/themes/default/webpack/webpack.config.pdf.js +135 -0
- package/bin/themes/default/webpack/webpack.config.prod.js +133 -0
- package/package.json +1 -1
- package/index.js +0 -20
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
//@ts-check
|
|
2
|
+
|
|
3
|
+
import L from "leaflet";
|
|
4
|
+
import "leaflet-iiif";
|
|
5
|
+
class DeepZoom {
|
|
6
|
+
// add map array to access map objects outside of Deepzoom class
|
|
7
|
+
constructor(id, mapArr) {
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.el = document.querySelector(`#${this.id}`);
|
|
10
|
+
|
|
11
|
+
// remove and refresh before init
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
if (figureModal) {
|
|
14
|
+
if (window["mapID"] != undefined || window["mapID"] != undefined) {
|
|
15
|
+
window["mapID"].off();
|
|
16
|
+
window["mapID"].remove();
|
|
17
|
+
}
|
|
18
|
+
let node = document.getElementById(id);
|
|
19
|
+
if (node) {
|
|
20
|
+
while (node.firstChild) {
|
|
21
|
+
node.removeChild(node.firstChild);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
this.catalogueEntry = this.el.getAttribute("data-catalogue-entry");
|
|
27
|
+
this.imageURL = this.el.getAttribute("src");
|
|
28
|
+
this.iiif = this.el.getAttribute("data-iiif");
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Leaflet options object
|
|
32
|
+
* https://leafletjs.com/reference-1.7.1.html#map-option
|
|
33
|
+
*/
|
|
34
|
+
const options = {
|
|
35
|
+
maxZoom: this.el.getAttribute('data-zoom-max') || 6,
|
|
36
|
+
minZoom: 1,
|
|
37
|
+
scrollWheelZoom: !this.catalogueEntry,
|
|
38
|
+
touchZoom: !this.catalogueEntry,
|
|
39
|
+
zoom: 1
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
if (this.imageURL) {
|
|
43
|
+
let image = new Image();
|
|
44
|
+
image.src = this.imageURL;
|
|
45
|
+
this.addImageProcess(image)
|
|
46
|
+
.then(arr => {
|
|
47
|
+
this.imgHeight = arr.height;
|
|
48
|
+
this.imgWidth = arr.width;
|
|
49
|
+
this.center = [0, 0];
|
|
50
|
+
this.map = this.createMap(options);
|
|
51
|
+
// add leaflet objects to array
|
|
52
|
+
mapArr.push(this.map);
|
|
53
|
+
if (this.catalogueEntry === undefined) {
|
|
54
|
+
window["mapID"] = this.map;
|
|
55
|
+
}
|
|
56
|
+
this.southWest = this.map.unproject(
|
|
57
|
+
[0, this.imgHeight],
|
|
58
|
+
this.map.getMaxZoom() - 1
|
|
59
|
+
);
|
|
60
|
+
this.northEast = this.map.unproject(
|
|
61
|
+
[this.imgWidth, 0],
|
|
62
|
+
this.map.getMaxZoom() - 1
|
|
63
|
+
);
|
|
64
|
+
let bounds = new L.LatLngBounds(this.southWest, this.northEast);
|
|
65
|
+
this.addTiles(bounds);
|
|
66
|
+
// well invalidate
|
|
67
|
+
// this.runMapTimeouts(this.map);
|
|
68
|
+
})
|
|
69
|
+
.catch(error => console.error(error));
|
|
70
|
+
} else if (this.imageURL && this.iiif) {
|
|
71
|
+
this.center = [0, 0];
|
|
72
|
+
this.map = this.createMap(options);
|
|
73
|
+
if (this.catalogueEntry === undefined) {
|
|
74
|
+
window["mapID"] = this.map;
|
|
75
|
+
}
|
|
76
|
+
this.addLayer(this.iiif, this.map);
|
|
77
|
+
this.runMapTimeouts(this.map);
|
|
78
|
+
} else {
|
|
79
|
+
this.center = [0, 0];
|
|
80
|
+
this.map = this.createMap(options);
|
|
81
|
+
if (this.catalogueEntry === undefined) {
|
|
82
|
+
window["mapID"] = this.map;
|
|
83
|
+
}
|
|
84
|
+
this.addLayer(this.iiif, this.map);
|
|
85
|
+
this.runMapTimeouts(this.map);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* validateSize
|
|
91
|
+
* @description
|
|
92
|
+
* invalidateSize map as a promise
|
|
93
|
+
* @param {object} map must be an integer
|
|
94
|
+
*/
|
|
95
|
+
validateSize(map) {
|
|
96
|
+
return new Promise((resolve, reject) => {
|
|
97
|
+
if (!map) reject(new Error("No map!"));
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
let modal = document.querySelector(".mfp-content");
|
|
100
|
+
if (modal) {
|
|
101
|
+
if (
|
|
102
|
+
map._container ===
|
|
103
|
+
modal.getElementsByTagName("figure")[0].children[0]
|
|
104
|
+
) {
|
|
105
|
+
resolve(map.invalidateSize());
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
resolve(map.invalidateSize());
|
|
109
|
+
}
|
|
110
|
+
}, 250);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* runMapTimeouts
|
|
116
|
+
* @description
|
|
117
|
+
* run map timeout functions
|
|
118
|
+
* @param {object} map must be an integer
|
|
119
|
+
*/
|
|
120
|
+
runMapTimeouts(map) {
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
this.validateSize(map);
|
|
123
|
+
}, 100);
|
|
124
|
+
if ($(window)) {
|
|
125
|
+
$(window).on("resize", event => {
|
|
126
|
+
if (map) {
|
|
127
|
+
this.validateSize(map);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* addImageProcess
|
|
135
|
+
* @description
|
|
136
|
+
* return an array of the natural height and width of the current image being processed
|
|
137
|
+
* @param {object} img must be an integer
|
|
138
|
+
*/
|
|
139
|
+
addImageProcess(img) {
|
|
140
|
+
return new Promise((resolve, reject) => {
|
|
141
|
+
img.onload = () => {
|
|
142
|
+
let arr = [];
|
|
143
|
+
arr["height"] = img.naturalHeight;
|
|
144
|
+
arr["width"] = img.naturalWidth;
|
|
145
|
+
resolve(arr);
|
|
146
|
+
};
|
|
147
|
+
img.onerror = reject;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @param {object} Leaflet options
|
|
153
|
+
*/
|
|
154
|
+
createMap(options) {
|
|
155
|
+
return L.map(this.id, {
|
|
156
|
+
center: [0, 0],
|
|
157
|
+
crs: L.CRS.Simple,
|
|
158
|
+
renderer: L.canvas(),
|
|
159
|
+
...options
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
addLayer(json, map) {
|
|
164
|
+
if (json) {
|
|
165
|
+
L.tileLayer.iiif(json).addTo(map);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
addTiles(bounds) {
|
|
170
|
+
if (bounds) {
|
|
171
|
+
this.map.setMaxBounds(bounds);
|
|
172
|
+
this.map.fitBounds(bounds);
|
|
173
|
+
let imageOverlay = L.imageOverlay(this.imageURL, bounds, {
|
|
174
|
+
opacity: 0.0
|
|
175
|
+
});
|
|
176
|
+
this.map.addLayer(imageOverlay);
|
|
177
|
+
imageOverlay.on("load", event => {
|
|
178
|
+
setTimeout(() => {
|
|
179
|
+
imageOverlay.setOpacity(1.0);
|
|
180
|
+
}, 250);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export default DeepZoom;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var document =
|
|
5
|
+
typeof window !== "undefined" && typeof window.document !== "undefined"
|
|
6
|
+
? window.document
|
|
7
|
+
: {};
|
|
8
|
+
var isCommonjs = typeof module !== "undefined" && module.exports;
|
|
9
|
+
var keyboardAllowed =
|
|
10
|
+
typeof Element !== "undefined" && "ALLOW_KEYBOARD_INPUT" in Element;
|
|
11
|
+
|
|
12
|
+
var fn = (function() {
|
|
13
|
+
var val;
|
|
14
|
+
|
|
15
|
+
var fnMap = [
|
|
16
|
+
[
|
|
17
|
+
"requestFullscreen",
|
|
18
|
+
"exitFullscreen",
|
|
19
|
+
"fullscreenElement",
|
|
20
|
+
"fullscreenEnabled",
|
|
21
|
+
"fullscreenchange",
|
|
22
|
+
"fullscreenerror"
|
|
23
|
+
],
|
|
24
|
+
// New WebKit
|
|
25
|
+
[
|
|
26
|
+
"webkitRequestFullscreen",
|
|
27
|
+
"webkitExitFullscreen",
|
|
28
|
+
"webkitFullscreenElement",
|
|
29
|
+
"webkitFullscreenEnabled",
|
|
30
|
+
"webkitfullscreenchange",
|
|
31
|
+
"webkitfullscreenerror"
|
|
32
|
+
],
|
|
33
|
+
// Old WebKit (Safari 5.1)
|
|
34
|
+
[
|
|
35
|
+
"webkitRequestFullScreen",
|
|
36
|
+
"webkitCancelFullScreen",
|
|
37
|
+
"webkitCurrentFullScreenElement",
|
|
38
|
+
"webkitCancelFullScreen",
|
|
39
|
+
"webkitfullscreenchange",
|
|
40
|
+
"webkitfullscreenerror"
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"mozRequestFullScreen",
|
|
44
|
+
"mozCancelFullScreen",
|
|
45
|
+
"mozFullScreenElement",
|
|
46
|
+
"mozFullScreenEnabled",
|
|
47
|
+
"mozfullscreenchange",
|
|
48
|
+
"mozfullscreenerror"
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
"msRequestFullscreen",
|
|
52
|
+
"msExitFullscreen",
|
|
53
|
+
"msFullscreenElement",
|
|
54
|
+
"msFullscreenEnabled",
|
|
55
|
+
"MSFullscreenChange",
|
|
56
|
+
"MSFullscreenError"
|
|
57
|
+
]
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
var i = 0;
|
|
61
|
+
var l = fnMap.length;
|
|
62
|
+
var ret = {};
|
|
63
|
+
|
|
64
|
+
for (; i < l; i++) {
|
|
65
|
+
val = fnMap[i];
|
|
66
|
+
if (val && val[1] in document) {
|
|
67
|
+
for (i = 0; i < val.length; i++) {
|
|
68
|
+
ret[fnMap[0][i]] = val[i];
|
|
69
|
+
}
|
|
70
|
+
return ret;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return false;
|
|
75
|
+
})();
|
|
76
|
+
|
|
77
|
+
var eventNameMap = {
|
|
78
|
+
change: fn.fullscreenchange,
|
|
79
|
+
error: fn.fullscreenerror
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var screenfull = {
|
|
83
|
+
request: function(elem) {
|
|
84
|
+
return new Promise(
|
|
85
|
+
function(resolve) {
|
|
86
|
+
var request = fn.requestFullscreen;
|
|
87
|
+
|
|
88
|
+
var onFullScreenEntered = function() {
|
|
89
|
+
this.off("change", onFullScreenEntered);
|
|
90
|
+
resolve();
|
|
91
|
+
}.bind(this);
|
|
92
|
+
|
|
93
|
+
elem = elem || document.documentElement;
|
|
94
|
+
|
|
95
|
+
// Work around Safari 5.1 bug: reports support for
|
|
96
|
+
// keyboard in fullscreen even though it doesn't.
|
|
97
|
+
// Browser sniffing, since the alternative with
|
|
98
|
+
// setTimeout is even worse.
|
|
99
|
+
if (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
|
|
100
|
+
elem[request]();
|
|
101
|
+
} else {
|
|
102
|
+
elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
this.on("change", onFullScreenEntered);
|
|
106
|
+
}.bind(this)
|
|
107
|
+
);
|
|
108
|
+
},
|
|
109
|
+
exit: function() {
|
|
110
|
+
return new Promise(
|
|
111
|
+
function(resolve) {
|
|
112
|
+
if (!this.isFullscreen) {
|
|
113
|
+
resolve();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
var onFullScreenExit = function() {
|
|
118
|
+
this.off("change", onFullScreenExit);
|
|
119
|
+
resolve();
|
|
120
|
+
}.bind(this);
|
|
121
|
+
|
|
122
|
+
document[fn.exitFullscreen]();
|
|
123
|
+
|
|
124
|
+
this.on("change", onFullScreenExit);
|
|
125
|
+
}.bind(this)
|
|
126
|
+
);
|
|
127
|
+
},
|
|
128
|
+
toggle: function(elem) {
|
|
129
|
+
return this.isFullscreen ? this.exit() : this.request(elem);
|
|
130
|
+
},
|
|
131
|
+
onchange: function(callback) {
|
|
132
|
+
this.on("change", callback);
|
|
133
|
+
},
|
|
134
|
+
onerror: function(callback) {
|
|
135
|
+
this.on("error", callback);
|
|
136
|
+
},
|
|
137
|
+
on: function(event, callback) {
|
|
138
|
+
var eventName = eventNameMap[event];
|
|
139
|
+
if (eventName) {
|
|
140
|
+
document.addEventListener(eventName, callback, false);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
off: function(event, callback) {
|
|
144
|
+
var eventName = eventNameMap[event];
|
|
145
|
+
if (eventName) {
|
|
146
|
+
document.removeEventListener(eventName, callback, false);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
raw: fn
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
if (!fn) {
|
|
153
|
+
if (isCommonjs) {
|
|
154
|
+
module.exports = false;
|
|
155
|
+
} else {
|
|
156
|
+
window.screenfull = false;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
Object.defineProperties(screenfull, {
|
|
163
|
+
isFullscreen: {
|
|
164
|
+
get: function() {
|
|
165
|
+
return Boolean(document[fn.fullscreenElement]);
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
element: {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function() {
|
|
171
|
+
return document[fn.fullscreenElement];
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
enabled: {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
get: function() {
|
|
177
|
+
// Coerce to boolean in case of old WebKit
|
|
178
|
+
return Boolean(document[fn.fullscreenEnabled]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
if (isCommonjs) {
|
|
184
|
+
module.exports = screenfull;
|
|
185
|
+
// TODO: remove this in the next major version
|
|
186
|
+
module.exports.default = screenfull;
|
|
187
|
+
} else {
|
|
188
|
+
window.screenfull = screenfull;
|
|
189
|
+
}
|
|
190
|
+
})();
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import SmoothScroll from "smooth-scroll";
|
|
2
|
+
import fullscreen from "./fullscreen";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @fileOverview
|
|
6
|
+
* @name helper.js
|
|
7
|
+
* @description This file contains functions that are used to aid core concepts in other files.
|
|
8
|
+
* Also some of these functions are more utility in nature.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Prevent and store scroll for expanded menu
|
|
13
|
+
* @description When the show/hide for nav is triggered we want to
|
|
14
|
+
* lock the position of the users state in scroll and also prevent
|
|
15
|
+
* the nav from going back to 0,0 in fixed state. These functions prevent that.
|
|
16
|
+
*/
|
|
17
|
+
export const preventDefault = e => {
|
|
18
|
+
e = e || window.event;
|
|
19
|
+
if (e.preventDefault) e.preventDefault();
|
|
20
|
+
e.returnValue = false;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const preventDefaultForScrollKeys = e => {
|
|
24
|
+
/*
|
|
25
|
+
left: 37,
|
|
26
|
+
up: 38,
|
|
27
|
+
right: 39,
|
|
28
|
+
down: 40,
|
|
29
|
+
spacebar: 32,
|
|
30
|
+
pageup: 33,
|
|
31
|
+
pagedown: 34,
|
|
32
|
+
end: 35,
|
|
33
|
+
home: 36
|
|
34
|
+
*/
|
|
35
|
+
let keys = {
|
|
36
|
+
37: 1,
|
|
37
|
+
38: 1,
|
|
38
|
+
39: 1,
|
|
39
|
+
40: 1
|
|
40
|
+
};
|
|
41
|
+
if (keys[e.keyCode]) {
|
|
42
|
+
preventDefault(e);
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* function to trigger and use smooth scrolling, docs: https://www.npmjs.com/package/smooth-scroll
|
|
49
|
+
* scroll behavior specifications:
|
|
50
|
+
* - https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
51
|
+
* - https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo
|
|
52
|
+
*/
|
|
53
|
+
export const smoothScroll = e => {
|
|
54
|
+
return new SmoothScroll('a[href*="#"]', {
|
|
55
|
+
// Selectors
|
|
56
|
+
ignore: ".quire-navbar, .quire-figure a", // Selector for links to ignore (must be a valid CSS selector)
|
|
57
|
+
header: ".quire-navbar", // Selector for fixed headers (must be a valid CSS selector)
|
|
58
|
+
topOnEmtyHash: true, // Scroll to the top of the page for links with href="#"
|
|
59
|
+
// Speed & Duration
|
|
60
|
+
speed: 500, // Integer. Amount of time in milliseconds it should take to scroll 1000px
|
|
61
|
+
speedAsDuration: false, // If true, use speed as the total duration of the scroll animation
|
|
62
|
+
durationMax: null, // Integer. The maximum amount of time the scroll animation should take
|
|
63
|
+
durationMin: null, // Integer. The minimum amount of time the scroll animation should take
|
|
64
|
+
clip: true, // If true, adjust scroll distance to prevent abrupt stops near the bottom of the page
|
|
65
|
+
offset: 50, // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels
|
|
66
|
+
// Easing
|
|
67
|
+
easing: "easeInOutCubic",
|
|
68
|
+
// History
|
|
69
|
+
updateURL: true, // Update the URL on scroll
|
|
70
|
+
popstate: true, // Animate scrolling with the forward/backward browser buttons (requires updateURL to be true)
|
|
71
|
+
emitEvents: true // Emit custom events
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Disable scroll on element
|
|
77
|
+
* @param {Element} element The element that will be disabled
|
|
78
|
+
*/
|
|
79
|
+
export const disableScroll = element => {
|
|
80
|
+
document.querySelector("html").style.overflow = "hidden";
|
|
81
|
+
if (element.addEventListener)
|
|
82
|
+
// older FF
|
|
83
|
+
element.addEventListener("DOMMouseScroll", preventDefault, false);
|
|
84
|
+
element.onwheel = preventDefault; // modern standard
|
|
85
|
+
element.onmousewheel = element.onmousewheel = preventDefault; // older browsers, IE
|
|
86
|
+
element.ontouchmove = preventDefault; // mobile
|
|
87
|
+
element.onkeydown = preventDefaultForScrollKeys;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Enable scroll on element
|
|
92
|
+
* @param {Element} element The element that will be enabled
|
|
93
|
+
*/
|
|
94
|
+
export const enableScroll = element => {
|
|
95
|
+
document.querySelector("html").style.overflow = "";
|
|
96
|
+
if (element.removeEventListener)
|
|
97
|
+
element.removeEventListener("DOMMouseScroll", preventDefault, false);
|
|
98
|
+
element.onmousewheel = element.onmousewheel = null;
|
|
99
|
+
element.onwheel = null;
|
|
100
|
+
element.ontouchmove = null;
|
|
101
|
+
element.onkeydown = null;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Preload Images
|
|
106
|
+
* @param {Array} srcs array of images
|
|
107
|
+
* @return {Promise}
|
|
108
|
+
*/
|
|
109
|
+
export const preloadImages = (srcs) => {
|
|
110
|
+
return new Promise((resolve) => {
|
|
111
|
+
if (!srcs.length) resolve();
|
|
112
|
+
for (let i = srcs.length; i >= 0; --i) {
|
|
113
|
+
const img = new Image();
|
|
114
|
+
img.onload = () => {
|
|
115
|
+
if (i <= 0) resolve();
|
|
116
|
+
};
|
|
117
|
+
img.src = srcs[i];
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Stop an iframe or HTML5 <video> from playing
|
|
124
|
+
* @param {Element} element The element that contains the video
|
|
125
|
+
*/
|
|
126
|
+
export const stopVideo = element => {
|
|
127
|
+
let iframe = element.querySelector("iframe");
|
|
128
|
+
let video = element.querySelector("video");
|
|
129
|
+
if (iframe) {
|
|
130
|
+
let iframeSrc = iframe.src;
|
|
131
|
+
iframe.src = iframeSrc;
|
|
132
|
+
}
|
|
133
|
+
if (video) {
|
|
134
|
+
video.pause();
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @description toggle fullscreen for entry leaflet images
|
|
140
|
+
* Also pass in the maps array to invalidate size after transition.
|
|
141
|
+
* @param {array} mapArr must be an integer
|
|
142
|
+
* @param {element} fullscreenButton must be an element
|
|
143
|
+
* @param {element} elementToFullscreen must be an element
|
|
144
|
+
*/
|
|
145
|
+
export const toggleFullscreen = (
|
|
146
|
+
mapArr,
|
|
147
|
+
fullscreenButton,
|
|
148
|
+
elementToFullscreen
|
|
149
|
+
) => {
|
|
150
|
+
/**
|
|
151
|
+
* validateSize
|
|
152
|
+
* @description
|
|
153
|
+
* invalidateSize map as a promise
|
|
154
|
+
* @param {object} map must be an object
|
|
155
|
+
*/
|
|
156
|
+
function validateSize(map) {
|
|
157
|
+
return new Promise((resolve, reject) => {
|
|
158
|
+
if (!map) reject(new Error("No map!"));
|
|
159
|
+
setTimeout(() => {
|
|
160
|
+
let modal = document.querySelector(".mfp-content");
|
|
161
|
+
if (modal) {
|
|
162
|
+
if (
|
|
163
|
+
map._container ===
|
|
164
|
+
modal.getElementsByTagName("figure")[0].children[0]
|
|
165
|
+
) {
|
|
166
|
+
resolve(map.invalidateSize());
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
resolve(map.invalidateSize());
|
|
170
|
+
}
|
|
171
|
+
}, 250);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const el = elementToFullscreen;
|
|
176
|
+
let toggleFullscreen = fullscreenButton;
|
|
177
|
+
if (toggleFullscreen) {
|
|
178
|
+
toggleFullscreen.addEventListener("click", event => {
|
|
179
|
+
event.stopPropagation();
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
if (fullscreen.enabled && el) {
|
|
182
|
+
el.classList.toggle("fullscreen", !el.classList.contains("fullscreen"));
|
|
183
|
+
// @ts-ignore
|
|
184
|
+
event.target.classList.toggle(
|
|
185
|
+
"fullscreen",
|
|
186
|
+
// @ts-ignore
|
|
187
|
+
!event.target.classList.contains("fullscreen")
|
|
188
|
+
);
|
|
189
|
+
fullscreen.toggle(el);
|
|
190
|
+
mapArr.forEach(v => {
|
|
191
|
+
validateSize(v).catch(err => console.log(err));
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import L from 'leaflet'
|
|
2
|
+
import 'leaflet-fullscreen'
|
|
3
|
+
// import leafletImage from 'leaflet-image'
|
|
4
|
+
|
|
5
|
+
class Map {
|
|
6
|
+
constructor(id) {
|
|
7
|
+
|
|
8
|
+
// remove and refresh before init
|
|
9
|
+
if (figureModal) {
|
|
10
|
+
if (window.mapID != undefined || window.mapID != undefined) {
|
|
11
|
+
window.mapID.off()
|
|
12
|
+
window.mapID.remove()
|
|
13
|
+
}
|
|
14
|
+
let node = document.getElementById(id);
|
|
15
|
+
if (node) {
|
|
16
|
+
while (node.firstChild) {
|
|
17
|
+
node.removeChild(node.firstChild)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
if (id) {
|
|
24
|
+
this.el = id
|
|
25
|
+
this.tiles = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
|
|
26
|
+
this.attribution = 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
|
|
27
|
+
this.data = $(`#${this.el}`).data('geojson')
|
|
28
|
+
this.center = this.getCoordinates()
|
|
29
|
+
this.defaultZoom = 6
|
|
30
|
+
this.map = this.createMap()
|
|
31
|
+
window.mapID = this.map
|
|
32
|
+
this.addTiles()
|
|
33
|
+
|
|
34
|
+
this.map.on('fullscreenchange', function () {
|
|
35
|
+
this.invalidateSize(true)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
if (this.data) {
|
|
39
|
+
this.getData()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
this.map.invalidateSize()
|
|
44
|
+
}, 100)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
createMap() {
|
|
49
|
+
return L.map(this.el, {
|
|
50
|
+
fullscreenControl: {
|
|
51
|
+
pseudoFullscreen: false // if true, fullscreen to page width and height
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
.setView(this.center, this.defaultZoom)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
addTiles() {
|
|
58
|
+
L.tileLayer(this.tiles, {
|
|
59
|
+
// options
|
|
60
|
+
attribution: this.attribution
|
|
61
|
+
}).addTo(this.map)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getCoordinates() {
|
|
65
|
+
let lat = $('#' + this.el).data('lat')
|
|
66
|
+
let long = $('#' + this.el).data('long')
|
|
67
|
+
return [lat, long]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
getData() {
|
|
71
|
+
$.getJSON(this.data, json => {
|
|
72
|
+
L.geoJson(json, {
|
|
73
|
+
// Change the style here as desired
|
|
74
|
+
pointToLayer: (feature, latlng) => {
|
|
75
|
+
return L.circleMarker(latlng, {
|
|
76
|
+
radius: 8,
|
|
77
|
+
fillColor: '#333',
|
|
78
|
+
color: '#000',
|
|
79
|
+
weight: 1,
|
|
80
|
+
opacity: 1,
|
|
81
|
+
fillOpacity: 0.75
|
|
82
|
+
})
|
|
83
|
+
},
|
|
84
|
+
// Change styles here as desired
|
|
85
|
+
onEachFeature: (feature, layer) => {
|
|
86
|
+
let options = { minWidth: 100, maxHeight: 250 }
|
|
87
|
+
layer.bindPopup(feature.properties.description, options)
|
|
88
|
+
}
|
|
89
|
+
}).addTo(this.map)
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default Map
|