@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.
Files changed (370) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/bin/.DS_Store +0 -0
  3. package/bin/go-iiif/.DS_Store +0 -0
  4. package/bin/index.js +2 -0
  5. package/bin/starters/.DS_Store +0 -0
  6. package/bin/starters/README.md +0 -0
  7. package/bin/starters/default/.circleci/config.yml +98 -0
  8. package/bin/starters/default/.gitignore +14 -0
  9. package/bin/starters/default/.nojekyll +0 -0
  10. package/bin/starters/default/CHANGELOG.md +38 -0
  11. package/bin/starters/default/README.md +25 -0
  12. package/bin/starters/default/bin/deploy.sh +25 -0
  13. package/bin/starters/default/config/_default/config.yml +53 -0
  14. package/bin/starters/default/config/development/config.yml +14 -0
  15. package/bin/starters/default/config/environments/dev.yml +14 -0
  16. package/bin/starters/default/config/environments/github.yml +15 -0
  17. package/bin/starters/default/config/environments/netlify.yml +18 -0
  18. package/bin/starters/default/config/epub.yml +15 -0
  19. package/bin/starters/default/config/pdf.yml +16 -0
  20. package/bin/starters/default/config/site.yml +13 -0
  21. package/bin/starters/default/config.yml +53 -0
  22. package/bin/starters/default/content/about.md +20 -0
  23. package/bin/starters/default/content/bibliography.md +7 -0
  24. package/bin/starters/default/content/catalogue/1.md +28 -0
  25. package/bin/starters/default/content/catalogue/2.md +29 -0
  26. package/bin/starters/default/content/catalogue/3.md +20 -0
  27. package/bin/starters/default/content/catalogue/4.md +22 -0
  28. package/bin/starters/default/content/catalogue/catalogue-index.md +8 -0
  29. package/bin/starters/default/content/contents.md +7 -0
  30. package/bin/starters/default/content/contributors.md +7 -0
  31. package/bin/starters/default/content/cover.md +11 -0
  32. package/bin/starters/default/content/essay.md +80 -0
  33. package/bin/starters/default/content/intro.md +21 -0
  34. package/bin/starters/default/content/search-index.md +8 -0
  35. package/bin/starters/default/data/figures.yml +90 -0
  36. package/bin/starters/default/data/objects.yml +49 -0
  37. package/bin/starters/default/data/publication.yml +149 -0
  38. package/bin/starters/default/data/references.yml +11 -0
  39. package/bin/starters/default/static/css/custom.css +0 -0
  40. package/bin/starters/default/static/data/sample-geojson.json +16 -0
  41. package/bin/starters/default/static/downloads/.gitkeep +0 -0
  42. package/bin/starters/default/static/downloads/output.epub +0 -0
  43. package/bin/starters/default/static/downloads/output.mobi +0 -0
  44. package/bin/starters/default/static/downloads/output.pdf +0 -0
  45. package/bin/starters/default/static/img/contributors/judith-keller.jpg +0 -0
  46. package/bin/starters/default/static/img/cover.png +0 -0
  47. package/bin/starters/default/static/img/figures/duo.jpg +0 -0
  48. package/bin/starters/default/static/img/figures/evans-burroughs.jpg +0 -0
  49. package/bin/starters/default/static/img/figures/evans-child.jpg +0 -0
  50. package/bin/starters/default/static/img/figures/evans-graveyard.jpg +0 -0
  51. package/bin/starters/default/static/img/figures/evans-hymns.jpg +0 -0
  52. package/bin/starters/default/static/img/figures/evans-legionnaire.jpg +0 -0
  53. package/bin/starters/default/static/img/figures/evans-refugee.jpg +0 -0
  54. package/bin/starters/default/static/img/figures/evans-sons.jpg +0 -0
  55. package/bin/starters/default/static/img/figures/evans-video-still.jpg +0 -0
  56. package/bin/starters/default/static/img/figures/evans-washroom.jpg +0 -0
  57. package/bin/starters/default/static/img/figures/evans.jpg +0 -0
  58. package/bin/starters/default/static/img/figures/family.jpg +0 -0
  59. package/bin/starters/default/static/img/figures/lange-house.jpg +0 -0
  60. package/bin/starters/default/static/img/figures/lange.jpg +0 -0
  61. package/bin/starters/default/static/img/figures/mother-b.jpg +0 -0
  62. package/bin/starters/default/static/img/figures/mother-c.jpg +0 -0
  63. package/bin/starters/default/static/img/figures/mother.jpg +0 -0
  64. package/bin/starters/default/static/img/figures/pickers.jpg +0 -0
  65. package/bin/starters/default/static/img/logo-getty.png +0 -0
  66. package/bin/starters/default/static/img/pattern-spiral-overlay.png +0 -0
  67. package/bin/starters/default/static/js/custom.js +4 -0
  68. package/bin/themes/README.md +0 -0
  69. package/bin/themes/default/.circleci/config.yml +62 -0
  70. package/bin/themes/default/.eslintrc.js +16 -0
  71. package/bin/themes/default/.gitignore +13 -0
  72. package/bin/themes/default/.scss-lint.yml +239 -0
  73. package/bin/themes/default/CHANGELOG.md +73 -0
  74. package/bin/themes/default/LICENSE.md +20 -0
  75. package/bin/themes/default/README.md +112 -0
  76. package/bin/themes/default/archetypes/default.md +2 -0
  77. package/bin/themes/default/cypress.json +7 -0
  78. package/bin/themes/default/layouts/404.html +0 -0
  79. package/bin/themes/default/layouts/_default/baseof.html +43 -0
  80. package/bin/themes/default/layouts/_default/single.html +26 -0
  81. package/bin/themes/default/layouts/contents/single.html +37 -0
  82. package/bin/themes/default/layouts/cover/single.html +128 -0
  83. package/bin/themes/default/layouts/data/search-index.html +65 -0
  84. package/bin/themes/default/layouts/entry/single.html +372 -0
  85. package/bin/themes/default/layouts/essay/single.html +24 -0
  86. package/bin/themes/default/layouts/partials/analytics.html +29 -0
  87. package/bin/themes/default/layouts/partials/cite-this.html +348 -0
  88. package/bin/themes/default/layouts/partials/contents-list/card-image.html +13 -0
  89. package/bin/themes/default/layouts/partials/contents-list/closing-tags.html +59 -0
  90. package/bin/themes/default/layouts/partials/contents-list/contents-list.html +179 -0
  91. package/bin/themes/default/layouts/partials/contents-list/file-dir.html +7 -0
  92. package/bin/themes/default/layouts/partials/contents-list/file-path.html +10 -0
  93. package/bin/themes/default/layouts/partials/contents-list/list-item-type.html +9 -0
  94. package/bin/themes/default/layouts/partials/contents-list/list-item-types/abstract.html +17 -0
  95. package/bin/themes/default/layouts/partials/contents-list/list-item-types/brief.html +7 -0
  96. package/bin/themes/default/layouts/partials/contents-list/list-item-types/default.html +9 -0
  97. package/bin/themes/default/layouts/partials/contents-list/list-item-types/grid.html +30 -0
  98. package/bin/themes/default/layouts/partials/contents-list/section-heading.html +5 -0
  99. package/bin/themes/default/layouts/partials/contents-list.html +207 -0
  100. package/bin/themes/default/layouts/partials/contributor-info.html +78 -0
  101. package/bin/themes/default/layouts/partials/contributor-list.html +102 -0
  102. package/bin/themes/default/layouts/partials/copyright.html +155 -0
  103. package/bin/themes/default/layouts/partials/debug-contents.html +8 -0
  104. package/bin/themes/default/layouts/partials/dublin-core.html +21 -0
  105. package/bin/themes/default/layouts/partials/error-message.html +19 -0
  106. package/bin/themes/default/layouts/partials/figure-caption.html +1 -0
  107. package/bin/themes/default/layouts/partials/figure-fallback.html +31 -0
  108. package/bin/themes/default/layouts/partials/figure-image.html +44 -0
  109. package/bin/themes/default/layouts/partials/figure-label.html +15 -0
  110. package/bin/themes/default/layouts/partials/figure-soundcloud.html +25 -0
  111. package/bin/themes/default/layouts/partials/figure-table.html +44 -0
  112. package/bin/themes/default/layouts/partials/figure-vimeo.html +24 -0
  113. package/bin/themes/default/layouts/partials/figure-website.html +21 -0
  114. package/bin/themes/default/layouts/partials/figure-youtube.html +23 -0
  115. package/bin/themes/default/layouts/partials/figures/caption.html +44 -0
  116. package/bin/themes/default/layouts/partials/figures/label.html +35 -0
  117. package/bin/themes/default/layouts/partials/figures/media-types/fallback.html +32 -0
  118. package/bin/themes/default/layouts/partials/figures/media-types/image.html +54 -0
  119. package/bin/themes/default/layouts/partials/figures/media-types/soundcloud.html +35 -0
  120. package/bin/themes/default/layouts/partials/figures/media-types/table.html +53 -0
  121. package/bin/themes/default/layouts/partials/figures/media-types/vimeo.html +34 -0
  122. package/bin/themes/default/layouts/partials/figures/media-types/website.html +24 -0
  123. package/bin/themes/default/layouts/partials/figures/media-types/youtube.html +29 -0
  124. package/bin/themes/default/layouts/partials/footer-buttons.html +29 -0
  125. package/bin/themes/default/layouts/partials/head.html +46 -0
  126. package/bin/themes/default/layouts/partials/icon.html +20 -0
  127. package/bin/themes/default/layouts/partials/icons-cc.html +86 -0
  128. package/bin/themes/default/layouts/partials/icons.html +54 -0
  129. package/bin/themes/default/layouts/partials/json-ld.html +117 -0
  130. package/bin/themes/default/layouts/partials/link-list-arrow.html +16 -0
  131. package/bin/themes/default/layouts/partials/link-list.html +11 -0
  132. package/bin/themes/default/layouts/partials/menu-header.html +25 -0
  133. package/bin/themes/default/layouts/partials/menu.html +69 -0
  134. package/bin/themes/default/layouts/partials/metadata.html +27 -0
  135. package/bin/themes/default/layouts/partials/navbar.html +173 -0
  136. package/bin/themes/default/layouts/partials/open-graph.html +43 -0
  137. package/bin/themes/default/layouts/partials/page-abstract.html +7 -0
  138. package/bin/themes/default/layouts/partials/page-bibliography.html +59 -0
  139. package/bin/themes/default/layouts/partials/page-class.html +9 -0
  140. package/bin/themes/default/layouts/partials/page-contributor.html +48 -0
  141. package/bin/themes/default/layouts/partials/page-header.html +22 -0
  142. package/bin/themes/default/layouts/partials/page-title.html +9 -0
  143. package/bin/themes/default/layouts/partials/page-tombstone.html +36 -0
  144. package/bin/themes/default/layouts/partials/pdf-info.html +20 -0
  145. package/bin/themes/default/layouts/partials/pdf-title-pages.html +39 -0
  146. package/bin/themes/default/layouts/partials/scripts.html +5 -0
  147. package/bin/themes/default/layouts/partials/search.html +52 -0
  148. package/bin/themes/default/layouts/partials/site-title.html +9 -0
  149. package/bin/themes/default/layouts/partials/tests/check-node-modules.html +9 -0
  150. package/bin/themes/default/layouts/partials/tests/check-page-one-class.html +21 -0
  151. package/bin/themes/default/layouts/partials/tests/check-page-weights.html +49 -0
  152. package/bin/themes/default/layouts/partials/tests/run.html +13 -0
  153. package/bin/themes/default/layouts/partials/twitter-card.html +23 -0
  154. package/bin/themes/default/layouts/shortcodes/q-bibliography.html +61 -0
  155. package/bin/themes/default/layouts/shortcodes/q-cite.html +79 -0
  156. package/bin/themes/default/layouts/shortcodes/q-class.html +3 -0
  157. package/bin/themes/default/layouts/shortcodes/q-contributor.html +327 -0
  158. package/bin/themes/default/layouts/shortcodes/q-contributors.html +11 -0
  159. package/bin/themes/default/layouts/shortcodes/q-figure-group.html +457 -0
  160. package/bin/themes/default/layouts/shortcodes/q-figure-new.html +70 -0
  161. package/bin/themes/default/layouts/shortcodes/q-figure-zoom.html +408 -0
  162. package/bin/themes/default/layouts/shortcodes/q-figure.html +86 -0
  163. package/bin/themes/default/layouts/sitemap.xml +24 -0
  164. package/bin/themes/default/layouts/splash/single.html +67 -0
  165. package/bin/themes/default/package-lock.json +13198 -0
  166. package/bin/themes/default/package.json +96 -0
  167. package/bin/themes/default/source/css/application.scss +30 -0
  168. package/bin/themes/default/source/css/bulma-components.scss +21 -0
  169. package/bin/themes/default/source/css/colors.scss +16 -0
  170. package/bin/themes/default/source/css/components/_all.scss +15 -0
  171. package/bin/themes/default/source/css/components/container.sass +35 -0
  172. package/bin/themes/default/source/css/components/quire-buttons.scss +95 -0
  173. package/bin/themes/default/source/css/components/quire-citation.scss +77 -0
  174. package/bin/themes/default/source/css/components/quire-contents-list.scss +329 -0
  175. package/bin/themes/default/source/css/components/quire-contributors.scss +131 -0
  176. package/bin/themes/default/source/css/components/quire-copyright.scss +28 -0
  177. package/bin/themes/default/source/css/components/quire-cover.scss +216 -0
  178. package/bin/themes/default/source/css/components/quire-deepzoom.scss +181 -0
  179. package/bin/themes/default/source/css/components/quire-entry.scss +651 -0
  180. package/bin/themes/default/source/css/components/quire-figure.scss +589 -0
  181. package/bin/themes/default/source/css/components/quire-map.scss +17 -0
  182. package/bin/themes/default/source/css/components/quire-menu.scss +209 -0
  183. package/bin/themes/default/source/css/components/quire-navbar.scss +366 -0
  184. package/bin/themes/default/source/css/components/quire-page.scss +920 -0
  185. package/bin/themes/default/source/css/components/quire-popup.scss +233 -0
  186. package/bin/themes/default/source/css/components/quire-search.scss +121 -0
  187. package/bin/themes/default/source/css/epub.scss +549 -0
  188. package/bin/themes/default/source/css/fonts.scss +159 -0
  189. package/bin/themes/default/source/css/layout.scss +186 -0
  190. package/bin/themes/default/source/css/print.scss +613 -0
  191. package/bin/themes/default/source/css/utilities.scss +345 -0
  192. package/bin/themes/default/source/css/variables.scss +144 -0
  193. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.eot +0 -0
  194. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.woff +0 -0
  195. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bold.woff2 +0 -0
  196. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.eot +0 -0
  197. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.woff +0 -0
  198. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-bolditalic.woff2 +0 -0
  199. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.eot +0 -0
  200. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.woff +0 -0
  201. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-italic.woff2 +0 -0
  202. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.eot +0 -0
  203. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.woff +0 -0
  204. package/bin/themes/default/source/fonts/ibm-plex-sans-condensed/ibmplexsanscondensed-regular.woff2 +0 -0
  205. package/bin/themes/default/source/fonts/noto-sans/notosans-bold.eot +0 -0
  206. package/bin/themes/default/source/fonts/noto-sans/notosans-bold.woff +0 -0
  207. package/bin/themes/default/source/fonts/noto-sans/notosans-bold.woff2 +0 -0
  208. package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.eot +0 -0
  209. package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.woff +0 -0
  210. package/bin/themes/default/source/fonts/noto-sans/notosans-bolditalic.woff2 +0 -0
  211. package/bin/themes/default/source/fonts/noto-sans/notosans-italic.eot +0 -0
  212. package/bin/themes/default/source/fonts/noto-sans/notosans-italic.woff +0 -0
  213. package/bin/themes/default/source/fonts/noto-sans/notosans-italic.woff2 +0 -0
  214. package/bin/themes/default/source/fonts/noto-sans/notosans-regular.eot +0 -0
  215. package/bin/themes/default/source/fonts/noto-sans/notosans-regular.woff +0 -0
  216. package/bin/themes/default/source/fonts/noto-sans/notosans-regular.woff2 +0 -0
  217. package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.eot +0 -0
  218. package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.woff +0 -0
  219. package/bin/themes/default/source/fonts/noto-serif/notoserif-bold.woff2 +0 -0
  220. package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.eot +0 -0
  221. package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.woff +0 -0
  222. package/bin/themes/default/source/fonts/noto-serif/notoserif-bolditalic.woff2 +0 -0
  223. package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.eot +0 -0
  224. package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.woff +0 -0
  225. package/bin/themes/default/source/fonts/noto-serif/notoserif-italic.woff2 +0 -0
  226. package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.eot +0 -0
  227. package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.woff +0 -0
  228. package/bin/themes/default/source/fonts/noto-serif/notoserif-regular.woff2 +0 -0
  229. package/bin/themes/default/source/img/cover.png +0 -0
  230. package/bin/themes/default/source/img/fullscreen.png +0 -0
  231. package/bin/themes/default/source/img/icons/arrow_forward.png +0 -0
  232. package/bin/themes/default/source/img/icons/baseline-headset-24px.png +0 -0
  233. package/bin/themes/default/source/img/icons/baseline-videocam-24px.png +0 -0
  234. package/bin/themes/default/source/img/icons/baseline-website-24px.png +0 -0
  235. package/bin/themes/default/source/img/icons/cc-by-nc-nd.png +0 -0
  236. package/bin/themes/default/source/img/icons/cc-by-nc-sa.png +0 -0
  237. package/bin/themes/default/source/img/icons/cc-by-nc.png +0 -0
  238. package/bin/themes/default/source/img/icons/cc-by-nd.png +0 -0
  239. package/bin/themes/default/source/img/icons/cc-by-sa.png +0 -0
  240. package/bin/themes/default/source/img/icons/cc-by.png +0 -0
  241. package/bin/themes/default/source/img/icons/cc-zero.png +0 -0
  242. package/bin/themes/default/source/img/icons/close.png +0 -0
  243. package/bin/themes/default/source/img/icons/down-arrow.png +0 -0
  244. package/bin/themes/default/source/img/icons/download.png +0 -0
  245. package/bin/themes/default/source/img/icons/favicon.ico +0 -0
  246. package/bin/themes/default/source/img/icons/home.png +0 -0
  247. package/bin/themes/default/source/img/icons/left-arrow.png +0 -0
  248. package/bin/themes/default/source/img/icons/link.png +0 -0
  249. package/bin/themes/default/source/img/icons/nav.png +0 -0
  250. package/bin/themes/default/source/img/icons/right-arrow.png +0 -0
  251. package/bin/themes/default/source/img/icons/search.png +0 -0
  252. package/bin/themes/default/source/img/icons/start.png +0 -0
  253. package/bin/themes/default/source/img/layers-2x.png +0 -0
  254. package/bin/themes/default/source/img/layers.png +0 -0
  255. package/bin/themes/default/source/img/marker-icon.png +0 -0
  256. package/bin/themes/default/source/img/pattern-spiral-overlay.png +0 -0
  257. package/bin/themes/default/source/img/promo-screenshots/classic-catalogue.png +0 -0
  258. package/bin/themes/default/source/img/promo-screenshots/classic-entry.png +0 -0
  259. package/bin/themes/default/source/img/promo-screenshots/classic-essay.png +0 -0
  260. package/bin/themes/default/source/img/promo-screenshots/modern-contents.png +0 -0
  261. package/bin/themes/default/source/img/promo-screenshots/modern-cover.png +0 -0
  262. package/bin/themes/default/source/img/promo-screenshots/modern-essay.png +0 -0
  263. package/bin/themes/default/source/js/application.js +604 -0
  264. package/bin/themes/default/source/js/deepzoom.js +186 -0
  265. package/bin/themes/default/source/js/epub.js +9 -0
  266. package/bin/themes/default/source/js/fullscreen.js +190 -0
  267. package/bin/themes/default/source/js/helper.js +197 -0
  268. package/bin/themes/default/source/js/map.js +94 -0
  269. package/bin/themes/default/source/js/navigation.js +59 -0
  270. package/bin/themes/default/source/js/popup.js +311 -0
  271. package/bin/themes/default/source/js/search.js +35 -0
  272. package/bin/themes/default/source/js/soundcloud-api.js +1 -0
  273. package/bin/themes/default/static/css/epub.css +401 -0
  274. package/bin/themes/default/static/fonts/MaterialIcons-Regular.eot +0 -0
  275. package/bin/themes/default/static/fonts/MaterialIcons-Regular.woff +0 -0
  276. package/bin/themes/default/static/fonts/MaterialIcons-Regular.woff2 +0 -0
  277. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.eot +0 -0
  278. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.woff +0 -0
  279. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bold.woff2 +0 -0
  280. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.eot +0 -0
  281. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.woff +0 -0
  282. package/bin/themes/default/static/fonts/ibmplexsanscondensed-bolditalic.woff2 +0 -0
  283. package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.eot +0 -0
  284. package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.woff +0 -0
  285. package/bin/themes/default/static/fonts/ibmplexsanscondensed-italic.woff2 +0 -0
  286. package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.eot +0 -0
  287. package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.woff +0 -0
  288. package/bin/themes/default/static/fonts/ibmplexsanscondensed-regular.woff2 +0 -0
  289. package/bin/themes/default/static/fonts/notosans-bold.eot +0 -0
  290. package/bin/themes/default/static/fonts/notosans-bold.woff +0 -0
  291. package/bin/themes/default/static/fonts/notosans-bold.woff2 +0 -0
  292. package/bin/themes/default/static/fonts/notosans-bolditalic.eot +0 -0
  293. package/bin/themes/default/static/fonts/notosans-bolditalic.woff +0 -0
  294. package/bin/themes/default/static/fonts/notosans-bolditalic.woff2 +0 -0
  295. package/bin/themes/default/static/fonts/notosans-italic.eot +0 -0
  296. package/bin/themes/default/static/fonts/notosans-italic.woff +0 -0
  297. package/bin/themes/default/static/fonts/notosans-italic.woff2 +0 -0
  298. package/bin/themes/default/static/fonts/notosans-regular.eot +0 -0
  299. package/bin/themes/default/static/fonts/notosans-regular.woff +0 -0
  300. package/bin/themes/default/static/fonts/notosans-regular.woff2 +0 -0
  301. package/bin/themes/default/static/fonts/notoserif-bold.eot +0 -0
  302. package/bin/themes/default/static/fonts/notoserif-bold.woff +0 -0
  303. package/bin/themes/default/static/fonts/notoserif-bold.woff2 +0 -0
  304. package/bin/themes/default/static/fonts/notoserif-bolditalic.eot +0 -0
  305. package/bin/themes/default/static/fonts/notoserif-bolditalic.woff +0 -0
  306. package/bin/themes/default/static/fonts/notoserif-bolditalic.woff2 +0 -0
  307. package/bin/themes/default/static/fonts/notoserif-italic.eot +0 -0
  308. package/bin/themes/default/static/fonts/notoserif-italic.woff +0 -0
  309. package/bin/themes/default/static/fonts/notoserif-italic.woff2 +0 -0
  310. package/bin/themes/default/static/fonts/notoserif-regular.eot +0 -0
  311. package/bin/themes/default/static/fonts/notoserif-regular.woff +0 -0
  312. package/bin/themes/default/static/fonts/notoserif-regular.woff2 +0 -0
  313. package/bin/themes/default/static/img/baseline-website-24px.png +0 -0
  314. package/bin/themes/default/static/img/cover.png +0 -0
  315. package/bin/themes/default/static/img/fullscreen.png +0 -0
  316. package/bin/themes/default/static/img/fullscreen@2x.png +0 -0
  317. package/bin/themes/default/static/img/icons/arrow_forward.png +0 -0
  318. package/bin/themes/default/static/img/icons/baseline-headset-24px.png +0 -0
  319. package/bin/themes/default/static/img/icons/baseline-videocam-24px.png +0 -0
  320. package/bin/themes/default/static/img/icons/baseline-website-24px.png +0 -0
  321. package/bin/themes/default/static/img/icons/cc-by-nc-nd.png +0 -0
  322. package/bin/themes/default/static/img/icons/cc-by-nc-sa.png +0 -0
  323. package/bin/themes/default/static/img/icons/cc-by-nc.png +0 -0
  324. package/bin/themes/default/static/img/icons/cc-by-nd.png +0 -0
  325. package/bin/themes/default/static/img/icons/cc-by-sa.png +0 -0
  326. package/bin/themes/default/static/img/icons/cc-by.png +0 -0
  327. package/bin/themes/default/static/img/icons/cc-zero.png +0 -0
  328. package/bin/themes/default/static/img/icons/close.png +0 -0
  329. package/bin/themes/default/static/img/icons/down-arrow.png +0 -0
  330. package/bin/themes/default/static/img/icons/download.png +0 -0
  331. package/bin/themes/default/static/img/icons/favicon.ico +0 -0
  332. package/bin/themes/default/static/img/icons/home.png +0 -0
  333. package/bin/themes/default/static/img/icons/left-arrow.png +0 -0
  334. package/bin/themes/default/static/img/icons/link.png +0 -0
  335. package/bin/themes/default/static/img/icons/nav.png +0 -0
  336. package/bin/themes/default/static/img/icons/right-arrow.png +0 -0
  337. package/bin/themes/default/static/img/icons/search.png +0 -0
  338. package/bin/themes/default/static/img/icons/soundcloud.png +0 -0
  339. package/bin/themes/default/static/img/icons/start.png +0 -0
  340. package/bin/themes/default/static/img/icons/vimeo.png +0 -0
  341. package/bin/themes/default/static/img/icons/website.png +0 -0
  342. package/bin/themes/default/static/img/icons/youtube.png +0 -0
  343. package/bin/themes/default/static/img/layers-2x.png +0 -0
  344. package/bin/themes/default/static/img/layers.png +0 -0
  345. package/bin/themes/default/static/img/marker-icon.png +0 -0
  346. package/bin/themes/default/static/img/pattern-spiral-overlay.png +0 -0
  347. package/bin/themes/default/tests/.gitkeep +0 -0
  348. package/bin/themes/default/tests/e2e/.eslintrc.js +9 -0
  349. package/bin/themes/default/tests/e2e/fixtures/blns.json +483 -0
  350. package/bin/themes/default/tests/e2e/plugins/index.js +22 -0
  351. package/bin/themes/default/tests/e2e/specs/quire-contents.spec.js +52 -0
  352. package/bin/themes/default/tests/e2e/specs/quire-contributors.spec.js +66 -0
  353. package/bin/themes/default/tests/e2e/specs/quire-entry.spec.js +104 -0
  354. package/bin/themes/default/tests/e2e/specs/quire-essay.spec.js +105 -0
  355. package/bin/themes/default/tests/e2e/specs/quire-menu.spec.js +38 -0
  356. package/bin/themes/default/tests/e2e/specs/quire-modal.spec.js +69 -0
  357. package/bin/themes/default/tests/e2e/specs/quire-next-back-buttons.spec.js +27 -0
  358. package/bin/themes/default/tests/e2e/specs/quire-page.spec.js +28 -0
  359. package/bin/themes/default/tests/e2e/specs/quire-search.spec.js +48 -0
  360. package/bin/themes/default/tests/e2e/specs/quire-splash.spec.js +38 -0
  361. package/bin/themes/default/tests/e2e/support/commands.js +25 -0
  362. package/bin/themes/default/tests/e2e/support/index.js +20 -0
  363. package/bin/themes/default/theme.toml +22 -0
  364. package/bin/themes/default/tsconfig.json +5 -0
  365. package/bin/themes/default/webpack/webpack.config.dev.js +128 -0
  366. package/bin/themes/default/webpack/webpack.config.epub.js +140 -0
  367. package/bin/themes/default/webpack/webpack.config.pdf.js +135 -0
  368. package/bin/themes/default/webpack/webpack.config.prod.js +133 -0
  369. package/package.json +1 -1
  370. package/index.js +0 -20
@@ -0,0 +1,604 @@
1
+ //@ts-check
2
+
3
+ /**
4
+ * @fileOverview
5
+ * @name application.js
6
+ * @description This file serves as the entry point for Webpack, the JS library
7
+ * responsible for building all CSS and JS assets for the theme.
8
+ */
9
+
10
+ // Stylesheets
11
+ import "intersection-observer";
12
+ import "leaflet-fullscreen/dist/leaflet.fullscreen.css";
13
+ import "../css/application.scss";
14
+ import "leaflet/dist/leaflet.css";
15
+ import quicklink from "quicklink";
16
+
17
+ // JS Libraries (add them to package.json with `npm install [library]`)
18
+ import "babel-polyfill";
19
+ import $ from "jquery";
20
+ import "velocity-animate";
21
+ import "./soundcloud-api";
22
+
23
+ // Modules (feel free to define your own and import here)
24
+ import { preloadImages, stopVideo, toggleFullscreen } from "./helper";
25
+ import Search from "./search";
26
+ import Navigation from "./navigation";
27
+ import Popup from "./popup";
28
+ import DeepZoom from "./deepzoom";
29
+ import Map from "./map";
30
+
31
+ // array of leaflet instances
32
+ const mapArr = [];
33
+
34
+ /**
35
+ * toggleMenu
36
+ * @description Show/hide the menu UI by changing CSS classes and Aria status.
37
+ * This function is bound to the global window object so it can be called from
38
+ * templates without additional binding.
39
+ */
40
+ window["toggleMenu"] = () => {
41
+ let menu = document.getElementById("site-menu");
42
+ document.getElementsByClassName;
43
+ let menuAriaStatus = menu.getAttribute("aria-expanded");
44
+ menu.classList.toggle("is-expanded", !menu.classList.contains("is-expanded"));
45
+ if (menuAriaStatus === "true") {
46
+ $(
47
+ ".side-by-side > .quire-entry__image-wrap > .quire-entry__image"
48
+ ).removeClass("menu_open");
49
+ menu.setAttribute("aria-expanded", "false");
50
+ } else {
51
+ $(
52
+ ".side-by-side > .quire-entry__image-wrap > .quire-entry__image"
53
+ ).addClass("menu_open");
54
+ menu.setAttribute("aria-expanded", "true");
55
+ }
56
+ };
57
+
58
+ /**
59
+ * activeMenuPage
60
+ * @description This function is called on pageSetup to go through the navigation
61
+ * (#nav in partials/menu.html) and find all the anchor tags. Then find the user's
62
+ * current URL directory. Then it goes through the array of anchor tags and if the
63
+ * current URL directory matches the nav anchor, it's the active link.
64
+ */
65
+ function activeMenuPage() {
66
+ let nav = document.getElementById("nav");
67
+ let anchor = nav.getElementsByTagName("a");
68
+ let current =
69
+ window.location.protocol +
70
+ "//" +
71
+ window.location.host +
72
+ window.location.pathname;
73
+ for (var i = 0; i < anchor.length; i++) {
74
+ if (anchor[i].href == current) {
75
+ anchor[i].className = "active";
76
+ }
77
+ }
78
+ }
79
+
80
+ /**
81
+ * toggleSearch
82
+ * @description Show/hide the search UI by changing CSS classes and Aria status.
83
+ * This function is bound to the global window object so it can be called from
84
+ * templates without additinoal binding.
85
+ */
86
+ window["toggleSearch"] = () => {
87
+ let searchControls = document.getElementById("js-search");
88
+ let searchInput = document.getElementById("js-search-input");
89
+ let searchAriaStatus = searchControls.getAttribute("aria-expanded");
90
+ searchControls.classList.toggle(
91
+ "is-active",
92
+ !searchControls.classList.contains("is-active")
93
+ );
94
+ if (searchAriaStatus === "true") {
95
+ searchControls.setAttribute("aria-expanded", "false");
96
+ } else {
97
+ searchInput.focus();
98
+ searchControls.setAttribute("aria-expanded", "true");
99
+ }
100
+ };
101
+
102
+ /**
103
+ * sliderSetup
104
+ * @description Set up the simple image slider used on catalogue entry pages for
105
+ * objects with multiple figure images. See also slideImage function below.
106
+ */
107
+ async function sliderSetup() {
108
+ toggleFullscreen(
109
+ mapArr,
110
+ document.getElementById("toggleFullscreen"),
111
+ document.getElementById("quire-entry__image")
112
+ );
113
+
114
+ let slider = $(".quire-entry__image__group-container");
115
+ slider.each(function() {
116
+ let sliderImages = $(this).find("figure");
117
+ sliderImages.each((i, v) => {
118
+ if (sliderImages.length > 1) {
119
+ $(v)
120
+ .find(".quire-image-counter-download-container")
121
+ .append(
122
+ `<div class="quire-counter-container"><span class="counter">${i +
123
+ 1} of ${sliderImages.length}</span></div>`
124
+ );
125
+ }
126
+ });
127
+ let firstImage = $(sliderImages.first());
128
+ let lastImage = $(sliderImages.last());
129
+ sliderImages.addClass("visually-hidden");
130
+ firstImage.addClass("current-image first-image");
131
+ firstImage.removeClass("visually-hidden");
132
+ firstImage.css("display", "flex");
133
+ lastImage.addClass("last-image");
134
+ });
135
+ const images = [...document.querySelectorAll(".quire-deepzoom-entry")];
136
+ const imageSrcs = images.filter(v => {
137
+ return v.getAttribute("src") !== null ? v : "";
138
+ })
139
+ .map(v => {
140
+ return v.getAttribute("src");
141
+ });
142
+ await preloadImages(imageSrcs);
143
+ mapSetup(".quire-map-entry");
144
+ deepZoomSetup(".quire-deepzoom-entry", mapArr);
145
+ }
146
+
147
+ /**
148
+ * search
149
+ * @description makes a search query using Lunr
150
+ */
151
+ window["search"] = () => {
152
+ let searchInput = document.getElementById("js-search-input");
153
+ let searchQuery = searchInput["value"];
154
+ let searchInstance = window["QUIRE_SEARCH"];
155
+ let resultsContainer = document.getElementById("js-search-results-list");
156
+ let resultsTemplate = document.getElementById("js-search-results-template");
157
+ if (searchQuery.length >= 3) {
158
+ let searchResults = searchInstance.search(searchQuery);
159
+ displayResults(searchResults);
160
+ }
161
+
162
+ function clearResults() {
163
+ resultsContainer.innerText = "";
164
+ }
165
+
166
+ function displayResults(results) {
167
+ clearResults();
168
+ results.forEach(result => {
169
+ let clone = document.importNode(resultsTemplate.content, true);
170
+ let item = clone.querySelector(".js-search-results-item");
171
+ let title = clone.querySelector(".js-search-results-item-title");
172
+ let type = clone.querySelector(".js-search-results-item-type");
173
+ let length = clone.querySelector(".js-search-results-item-length");
174
+ item.href = result.url;
175
+ title.textContent = result.title;
176
+ type.textContent = result.type;
177
+ length.textContent = result.length;
178
+ resultsContainer.appendChild(clone);
179
+ });
180
+ }
181
+ };
182
+
183
+ /**
184
+ * scrollToHash
185
+ * @description Scroll the #main area after each smoothState reload.
186
+ * If a hash id is present, scroll to the location of that element,
187
+ * taking into account the height of the navbar.
188
+ */
189
+ function scrollToHash() {
190
+ // Select all links with hashes
191
+ $('a[href*="#"]')
192
+ // Remove links that don't actually link to anything
193
+ .not('[href="#"]')
194
+ .not('[href="#0"]')
195
+ .not('.popup')
196
+ .click(function(event) {
197
+ // only override default link behavior if it points to the same page
198
+ if (this.pathname.includes(window.location.pathname)) {
199
+ // prevent default scrolling behavior
200
+ event.preventDefault();
201
+ // ensure the hash is manually set after preventing default
202
+ window.location.hash = this.hash;
203
+ }
204
+ // save current hash, prefixing all ':' and '.' with '\\' to make them query-selectable
205
+ var hash = this.hash.replace(":", "\\:");
206
+ hash = hash.replace(".", "\\.");
207
+ // Figure out element to scroll to
208
+ var target = $(hash);
209
+ target = target.length ? target : $("[name=" + this.hash.slice(1) + "]");
210
+ // Does a scroll target exist?
211
+ if (target.length) {
212
+ $("html, body").animate(
213
+ {
214
+ scrollTop: target.offset().top - $(".quire-navbar").height() - 7
215
+ },
216
+ 1,
217
+ function() {
218
+ // Callback after animation
219
+ // Must change focus!
220
+ var $target = $(target);
221
+ $target.focus();
222
+ if ($target.is(":focus")) {
223
+ // Checking if the target was focused
224
+ return false;
225
+ } else {
226
+ $target.attr("tabindex", "-1"); // Adding tabindex for elements not focusable
227
+ $target.focus(); // Set focus again
228
+ }
229
+ }
230
+ );
231
+ }
232
+ });
233
+ }
234
+
235
+ function scrollToHashOnLoad() {
236
+ if (window.location.hash) {
237
+ var hash = window.location.hash;
238
+ hash = hash.replace(":", "\\:");
239
+ hash = hash.replace(".", "\\.");
240
+ $("html, body").animate(
241
+ {
242
+ scrollTop: $(hash).offset().top - $(".quire-navbar").height() - 7
243
+ },
244
+ 75,
245
+ "swing"
246
+ );
247
+ }
248
+ }
249
+
250
+ /**
251
+ * globalSetup
252
+ * @description Initial setup on first page load.
253
+ */
254
+ function globalSetup() {
255
+ let container = document.getElementById("container");
256
+ container.classList.remove("no-js");
257
+ var classNames = [];
258
+ if (navigator.userAgent.match(/(iPad|iPhone|iPod)/i))
259
+ classNames.push("device-ios");
260
+
261
+ if (navigator.userAgent.match(/android/i)) classNames.push("device-android");
262
+
263
+ if (classNames.length) classNames.push("on-device");
264
+
265
+ loadSearchData();
266
+ scrollToHash();
267
+ }
268
+
269
+ /**
270
+ * loadSearchData
271
+ * @description Load full-text index data from the specified URL
272
+ * and pass it to the search module.
273
+ */
274
+ function loadSearchData() {
275
+ // Grab search data
276
+ let dataURL = $("#js-search").data("search-index");
277
+ $.get(dataURL, {
278
+ cache: true
279
+ }).done(data => {
280
+ data = typeof data === "string" ? JSON.parse(data) : data;
281
+ window["QUIRE_SEARCH"] = new Search(data);
282
+ });
283
+ }
284
+
285
+ /**
286
+ * navigation
287
+ * @description Turn on ability to use arrow keys
288
+ * to get next adn previous pages
289
+ */
290
+ let navigation;
291
+
292
+ function navigationSetup() {
293
+ if (!navigation) {
294
+ navigation = new Navigation();
295
+ }
296
+ }
297
+
298
+ /**
299
+ * @description
300
+ * Set up modal for media
301
+ */
302
+ function popupSetup(figureModal) {
303
+ toggleFullscreen(
304
+ mapArr,
305
+ document.getElementById("toggleFullscreen"),
306
+ document.querySelector(".mfp-wrap")
307
+ );
308
+ if (figureModal) {
309
+ Popup(".q-figure__wrapper", mapArr);
310
+ } else {
311
+ mapSetup(".quire-map");
312
+ deepZoomSetup(".quire-deepzoom", mapArr);
313
+ }
314
+ }
315
+
316
+ /**
317
+ * @description
318
+ * Render Map if Popup @false
319
+ */
320
+ function mapSetup(ele) {
321
+ return [...document.querySelectorAll(ele)].forEach(v => {
322
+ let id = v.getAttribute("id");
323
+ new Map(id);
324
+ });
325
+ }
326
+
327
+ /**
328
+ * @description
329
+ * Render deepzoom or iiif if Popup @false
330
+ */
331
+ function deepZoomSetup(ele, mapArr) {
332
+ return [...document.querySelectorAll(ele)].forEach(v => {
333
+ let id = v.getAttribute("id");
334
+ new DeepZoom(id, mapArr);
335
+ });
336
+ }
337
+
338
+ /**
339
+ * @description
340
+ * Adding GoogleChromeLabs quicklinks https://github.com/GoogleChromeLabs/quicklink
341
+ * For faster subsequent page-loads by prefetching in-viewport links during idle time
342
+ */
343
+ function quickLinksSetup() {
344
+ let links = [...document.getElementsByTagName("a")];
345
+ links = links.filter(a => {
346
+ return a.hostname === window.location.hostname;
347
+ });
348
+ quicklink({
349
+ urls: links,
350
+ timeout: 4000,
351
+ ignores: [
352
+ /tel:/g,
353
+ /mailto:/g,
354
+ /#(.+)/,
355
+ uri => uri.includes("tel:"),
356
+ uri => uri.includes("mailto:"),
357
+ uri => uri.includes("#"),
358
+ uri => uri.includes(".zip"),
359
+ uri => uri.includes(".epub"),
360
+ uri => uri.includes(".pdf"),
361
+ uri => uri.includes(".mobi")
362
+ ]
363
+ });
364
+ }
365
+
366
+ /**
367
+ * Applies MLA format to date
368
+ *
369
+ * @param {Date} date javascript date object
370
+ * @return {String} MLA formatted date
371
+ */
372
+ function mlaDate(date) {
373
+ const options = {
374
+ month: "long"
375
+ };
376
+ const monthNum = date.getMonth();
377
+ let month;
378
+ if ([4, 5, 6].includes(monthNum)) {
379
+ let dateString = date.toLocaleDateString("en-US", options);
380
+ month = dateString.replace(/[^A-Za-z]+/, '');
381
+ } else {
382
+ month = (month === 8) ? "Sept" : date.toLocaleDateString("en-US", options).slice(0, 3);
383
+ month += '.';
384
+ }
385
+ const day = date.getDate();
386
+ const year = date.getFullYear();
387
+ return [day, month, year].join(' ');
388
+ }
389
+
390
+ /**
391
+ * @description
392
+ * Set the date for the cite this partial
393
+ * https://github.com/gettypubs/quire/issues/153
394
+ * Quire books include a "Cite this Page" feature with page-level citations formatted in both Chicago and MLA style.
395
+ * For MLA, the citations need to include a date the page was accessed by the reader.
396
+ *
397
+ */
398
+ function setDate() {
399
+ const $date = $(".cite-current-date");
400
+ const formattedDate = mlaDate(new Date());
401
+ $date.empty();
402
+ $date.text(formattedDate);
403
+ }
404
+
405
+ /**
406
+ * slideImage
407
+ * @description Slide to previous or next catalogue object image in a loop.
408
+ * Supports any number of figures per object, and any number of objects
409
+ * per page. Also pass in the maps array to invalidate size after transition.
410
+ * @param {string} direction must be an integer
411
+ * @param {object} event must be an object
412
+ * @param {array} mapArr must be an array
413
+ */
414
+ function slideImage(direction, event, mapArr) {
415
+ event.stopPropagation();
416
+ let deepzoomCont = $(".leaflet-image-layer");
417
+ deepzoomCont.hide();
418
+ let slider = $(".quire-entry__image__group-container");
419
+ let firstImage = slider.children(".first-image");
420
+ let lastImage = slider.children(".last-image");
421
+ let currentImage = slider.children(".current-image");
422
+ let nextImage = currentImage.next("figure");
423
+ let prevImage = currentImage.prev("figure");
424
+ stopVideo(document.querySelector(".current-image"));
425
+ currentImage.hide();
426
+ currentImage.removeClass("current-image");
427
+ if (direction == "next") {
428
+ if (currentImage.hasClass("last-image")) {
429
+ firstImage.addClass("current-image");
430
+ firstImage.css("display", "flex");
431
+ firstImage.removeClass("visually-hidden");
432
+ } else {
433
+ nextImage.addClass("current-image");
434
+ nextImage.css("display", "flex");
435
+ nextImage.removeClass("visually-hidden");
436
+ }
437
+ } else if (direction == "prev") {
438
+ if (currentImage.hasClass("first-image")) {
439
+ lastImage.addClass("current-image");
440
+ lastImage.css("display", "flex");
441
+ lastImage.removeClass("visually-hidden");
442
+ } else {
443
+ prevImage.addClass("current-image");
444
+ prevImage.css("display", "flex");
445
+ prevImage.removeClass("visually-hidden");
446
+ }
447
+ }
448
+
449
+ mapArr.forEach(v => {
450
+ validateSize(v)
451
+ .then(() => {
452
+ deepzoomCont.fadeIn({
453
+ duration: "fast"
454
+ });
455
+ })
456
+ .catch(err => console.log(err));
457
+ });
458
+ }
459
+
460
+ /**
461
+ * validateSize
462
+ * @description
463
+ * invalidateSize map as a promise
464
+ * @param {object} map must be an object
465
+ */
466
+ function validateSize(map) {
467
+ return new Promise((resolve, reject) => {
468
+ if (!map) reject(new Error("No map!"));
469
+ setTimeout(() => {
470
+ resolve(map.invalidateSize());
471
+ }, 250);
472
+ });
473
+ }
474
+
475
+ /**
476
+ * Translates the X-position of an element inside a container so that its contents
477
+ * are contained
478
+ * Expects the contained element to already be translated so that it's centered above
479
+ * another element
480
+ *
481
+ * @param {object} element to position
482
+ * @param {object} container element
483
+ * @param {number} container margin
484
+ */
485
+ function setPositionInContainer(el, container) {
486
+ const margin = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--gap'));
487
+ const elRect = el.getBoundingClientRect();
488
+ const containerRect = container.getBoundingClientRect();
489
+
490
+ const leftDiff = containerRect.left - elRect.left;
491
+ const rightDiff = elRect.right - containerRect.right;
492
+ const halfElWidth = elRect.width/2;
493
+ // x
494
+ if (rightDiff > 0) {
495
+ el.style.transform = `translateX(-${halfElWidth+rightDiff+margin}px)`;
496
+ } else if (leftDiff > 0) {
497
+ el.style.transform = `translateX(-${halfElWidth-leftDiff-margin}px)`;
498
+ }
499
+ // @todo y
500
+ }
501
+
502
+ /**
503
+ * @description
504
+ * find expandable class and look for aria-expanded
505
+ * https://github.com/gettypubs/quire/issues/152
506
+ * Cite button where users can select, tied to two config settings:
507
+ * citationPopupStyle - text for text only | icon for text and icon
508
+ * citationPopupLinkText which is whatever text you it to say
509
+ */
510
+ function toggleCite() {
511
+ let expandables = document.querySelectorAll(".expandable [aria-expanded]");
512
+ for (let i = 0; i < expandables.length; i++) {
513
+ expandables[i].addEventListener("click", event => {
514
+ // Allow these links to bubble up
515
+ event.stopPropagation();
516
+ let expanded = event.target.getAttribute("aria-expanded");
517
+ if (expanded === "false") {
518
+ event.target.setAttribute("aria-expanded", "true");
519
+ } else {
520
+ event.target.setAttribute("aria-expanded", "false");
521
+ }
522
+ let content = event.target.parentNode.querySelector(
523
+ ".quire-citation__content"
524
+ );
525
+ if (content) {
526
+ content.getAttribute("hidden");
527
+ if (typeof content.getAttribute("hidden") === "string") {
528
+ content.removeAttribute("hidden");
529
+ } else {
530
+ content.setAttribute("hidden", "hidden");
531
+ }
532
+ setPositionInContainer(content, document.documentElement);
533
+ }
534
+ });
535
+ }
536
+ document.addEventListener("click", event => {
537
+ let content = event.target.parentNode;
538
+ if (!content) return;
539
+ if (
540
+ content.classList.contains("quire-citation") ||
541
+ content.classList.contains("quire-citation__content")
542
+ ) {
543
+ // do nothing
544
+ } else {
545
+ // find all Buttons/Cites
546
+ let citeButtons = document.querySelectorAll(".quire-citation__button");
547
+ let citesContents = document.querySelectorAll(".quire-citation__content");
548
+ // hide all buttons
549
+ if (!citesContents) return;
550
+ for (let i = 0; i < citesContents.length; i++) {
551
+ if (!citeButtons[i]) return;
552
+ citeButtons[i].setAttribute("aria-expanded", "false");
553
+ citesContents[i].setAttribute("hidden", "hidden");
554
+ }
555
+ }
556
+ });
557
+ }
558
+
559
+ /**
560
+ * pageSetup
561
+ * @description This function is called after each smoothState reload.
562
+ * Initialize any jquery plugins or set up page UI elements here.
563
+ */
564
+ function pageSetup() {
565
+ setDate();
566
+ quickLinksSetup();
567
+ activeMenuPage();
568
+ sliderSetup();
569
+ navigationSetup();
570
+ popupSetup(figureModal);
571
+ toggleCite();
572
+ // smoothScroll();
573
+
574
+ // Wire up event listeners here, so we can pass in the maps array
575
+ const prev = document.getElementById("prev-image");
576
+ const next = document.getElementById("next-image");
577
+ if (prev)
578
+ prev.addEventListener("click", e => slideImage("prev", e, mapArr), false);
579
+ if (next)
580
+ next.addEventListener("click", e => slideImage("next", e, mapArr), false);
581
+ }
582
+
583
+ /**
584
+ * pageTeardown
585
+ * @description This function is called before each smoothState reload.
586
+ * Remove any event listeners here.
587
+ */
588
+ /*
589
+ function pageTeardown() {
590
+ navigationTeardown();
591
+ }
592
+ */
593
+
594
+ // Start
595
+ // -----------------------------------------------------------------------------
596
+ //
597
+ // Run immediately
598
+ globalSetup();
599
+
600
+ // Run when document is ready
601
+ $(window).ready(() => {
602
+ pageSetup();
603
+ scrollToHashOnLoad();
604
+ });