@projektemacher/storymapjs 0.10.7 → 0.11.0
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 +431 -19
- package/README.md +168 -17
- package/dist/assets/demo-bWnOyfUw.js +1 -0
- package/dist/assets/harness-C3JUv5Ii.js +1 -0
- package/dist/assets/harness-multi-XZNex3tb.js +1 -0
- package/dist/assets/harness-support-CjfZIVeb.js +1 -0
- package/dist/assets/index-wHPqGrBS.js +1 -0
- package/dist/assets/main-DQ32hWBM.js +17 -0
- package/dist/context.json +23 -9
- package/dist/css/fonts/files/amatic-sc-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-hebrew-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-hebrew-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-vietnamese-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-200-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-600-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-800-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-200-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-600-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-800-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-200-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-600-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-800-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-arabic-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/cairo-latin-ext-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/dancing-script-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-cyrillic-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-greek-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-greek-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-greek-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-greek-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-greek-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-vietnamese-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-vietnamese-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-vietnamese-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-vietnamese-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-vietnamese-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-cyrillic-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-greek-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-greek-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-greek-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-greek-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-hebrew-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-hebrew-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-cyrillic-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-vietnamese-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/raleway-cyrillic-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/raleway-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/raleway-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/raleway-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/raleway-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/raleway-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-greek-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-greek-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-greek-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/unica-one-vietnamese-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-cyrillic-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-cyrillic-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-cyrillic-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-greek-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-greek-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-vietnamese-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-vietnamese-wght-normal.woff2 +0 -0
- package/dist/css/fonts/font.abril-droidsans.css +3 -0
- package/dist/css/fonts/font.amatic-andika.css +57 -0
- package/dist/css/fonts/font.bitter-raleway.css +111 -0
- package/dist/css/fonts/font.cairo.css +312 -0
- package/dist/css/fonts/font.clicker-garamond.css +93 -0
- package/dist/css/fonts/font.dancing-ledger.css +12 -0
- package/dist/css/fonts/font.default.css +183 -0
- package/dist/css/fonts/font.fjalla-average.css +3 -0
- package/dist/css/fonts/font.georgia-helvetica.css +3 -0
- package/dist/css/fonts/font.knightlab.css +642 -0
- package/dist/css/fonts/font.lustria-lato.css +3 -0
- package/dist/css/fonts/font.medula-lato.css +3 -0
- package/dist/css/fonts/font.oldstandard.css +84 -0
- package/dist/css/fonts/font.opensans-gentiumbook.css +183 -0
- package/dist/css/fonts/font.playfair-faunaone.css +39 -0
- package/dist/css/fonts/font.playfair.css +147 -0
- package/dist/css/fonts/font.pt.css +183 -0
- package/dist/css/fonts/font.roboto-megrim.css +3 -0
- package/dist/css/fonts/font.rufina-sintony.css +3 -0
- package/dist/css/fonts/font.ubuntu.css +291 -0
- package/dist/css/fonts/font.unicaone-vollkorn.css +84 -0
- package/dist/css/storymap.css +1 -1
- package/dist/demo.html +3 -2
- package/dist/docs/api/.nojekyll +1 -0
- package/dist/docs/api/assets/custom.css +47 -0
- package/dist/docs/api/assets/hierarchy.js +1 -0
- package/dist/docs/api/assets/highlight.css +57 -0
- package/dist/docs/api/assets/icons.js +18 -0
- package/dist/docs/api/assets/icons.svg +1 -0
- package/dist/docs/api/assets/main.js +60 -0
- package/dist/docs/api/assets/navigation.js +1 -0
- package/dist/docs/api/assets/search.js +1 -0
- package/dist/docs/api/assets/style.css +1648 -0
- package/dist/docs/api/classes/StoryMap.html +2112 -0
- package/dist/docs/api/functions/MediaType.html +51 -0
- package/dist/docs/api/functions/isPresentation3Collection.html +47 -0
- package/dist/docs/api/functions/isPresentation3Manifest.html +53 -0
- package/dist/docs/api/functions/isSlideshowCollection.html +51 -0
- package/dist/docs/api/functions/loadCSS.html +63 -0
- package/dist/docs/api/functions/manifestToStorymapData.html +49 -0
- package/dist/docs/api/functions/setLanguage.html +54 -0
- package/dist/docs/api/functions/slideshowToStorymapData.html +51 -0
- package/dist/docs/api/functions/slideshowVersion.html +48 -0
- package/dist/docs/api/functions/storymapToManifest.html +57 -0
- package/dist/docs/api/functions/validateStorymap.html +53 -0
- package/dist/docs/api/functions/validateStorymapAndReport.html +54 -0
- package/dist/docs/api/hierarchy.html +28 -0
- package/dist/docs/api/index.html +300 -0
- package/dist/docs/api/interfaces/AnimationHandle.html +60 -0
- package/dist/docs/api/interfaces/ImagereadyPayload.html +71 -0
- package/dist/docs/api/interfaces/LanguageEntry.html +102 -0
- package/dist/docs/api/interfaces/LatLngLiteral.html +73 -0
- package/dist/docs/api/interfaces/LoadOptions.html +59 -0
- package/dist/docs/api/interfaces/MapEvents.html +116 -0
- package/dist/docs/api/interfaces/MapMarkerEvents.html +66 -0
- package/dist/docs/api/interfaces/MarkerEventPayload.html +57 -0
- package/dist/docs/api/interfaces/MediaEvents.html +78 -0
- package/dist/docs/api/interfaces/MenuBarEvents.html +114 -0
- package/dist/docs/api/interfaces/MessageEvents.html +72 -0
- package/dist/docs/api/interfaces/OlLayer.html +1400 -0
- package/dist/docs/api/interfaces/OlMap.html +1656 -0
- package/dist/docs/api/interfaces/OlProjection.html +332 -0
- package/dist/docs/api/interfaces/OlSource.html +784 -0
- package/dist/docs/api/interfaces/OlTileLayer.html +1497 -0
- package/dist/docs/api/interfaces/OlVectorLayer.html +1559 -0
- package/dist/docs/api/interfaces/OlView.html +1958 -0
- package/dist/docs/api/interfaces/SlideBackgroundState.html +66 -0
- package/dist/docs/api/interfaces/SlideEvents.html +78 -0
- package/dist/docs/api/interfaces/SlideNavEvents.html +72 -0
- package/dist/docs/api/interfaces/SlideshowPlayerSettings.html +182 -0
- package/dist/docs/api/interfaces/SlideshowToStorymapResult.html +60 -0
- package/dist/docs/api/interfaces/SlideshowTranslatorOptions.html +65 -0
- package/dist/docs/api/interfaces/SlideshowWarning.html +72 -0
- package/dist/docs/api/interfaces/StoryMapEvents.html +146 -0
- package/dist/docs/api/interfaces/StoryMapMarker.html +763 -0
- package/dist/docs/api/interfaces/StorySliderEvents.html +102 -0
- package/dist/docs/api/interfaces/StorymapBasemap.html +69 -0
- package/dist/docs/api/interfaces/StorymapData.html +77 -0
- package/dist/docs/api/interfaces/StorymapDataWrapper.html +60 -0
- package/dist/docs/api/interfaces/StorymapDocument.html +68 -0
- package/dist/docs/api/interfaces/StorymapError.html +63 -0
- package/dist/docs/api/interfaces/StorymapGeoreference.html +93 -0
- package/dist/docs/api/interfaces/StorymapGeoreferenceBody.html +74 -0
- package/dist/docs/api/interfaces/StorymapGroundControlPoint.html +69 -0
- package/dist/docs/api/interfaces/StorymapLanguageMap.html +57 -0
- package/dist/docs/api/interfaces/StorymapManifest.html +118 -0
- package/dist/docs/api/interfaces/StorymapManifestAnnotation.html +137 -0
- package/dist/docs/api/interfaces/StorymapManifestBackground.html +81 -0
- package/dist/docs/api/interfaces/StorymapManifestCanvas.html +188 -0
- package/dist/docs/api/interfaces/StorymapManifestContentResource.html +97 -0
- package/dist/docs/api/interfaces/StorymapManifestFeatureCollection.html +82 -0
- package/dist/docs/api/interfaces/StorymapManifestGeoreferencing.html +87 -0
- package/dist/docs/api/interfaces/StorymapManifestImageService.html +69 -0
- package/dist/docs/api/interfaces/StorymapManifestRange.html +75 -0
- package/dist/docs/api/interfaces/StorymapManifestService.html +77 -0
- package/dist/docs/api/interfaces/StorymapManifestSpecificResource.html +69 -0
- package/dist/docs/api/interfaces/StorymapManifestStatement.html +63 -0
- package/dist/docs/api/interfaces/StorymapMapOptions.html +92 -0
- package/dist/docs/api/interfaces/StorymapOptions.html +734 -0
- package/dist/docs/api/interfaces/StorymapOverlayLayer.html +157 -0
- package/dist/docs/api/interfaces/StorymapSlide.html +186 -0
- package/dist/docs/api/interfaces/StorymapSlideBackground.html +72 -0
- package/dist/docs/api/interfaces/StorymapSlideLocation.html +161 -0
- package/dist/docs/api/interfaces/StorymapSlideMarker.html +103 -0
- package/dist/docs/api/interfaces/StorymapSlideMedia.html +149 -0
- package/dist/docs/api/interfaces/StorymapSlideNarration.html +117 -0
- package/dist/docs/api/interfaces/StorymapSlideText.html +72 -0
- package/dist/docs/api/interfaces/StorymapTilejson.html +105 -0
- package/dist/docs/api/interfaces/SwipableEvents.html +102 -0
- package/dist/docs/api/interfaces/TextEvents.html +66 -0
- package/dist/docs/api/media/es.json +31 -0
- package/dist/docs/api/media/events.md +66 -0
- package/dist/docs/api/media/migration-from-knightlab.md +399 -0
- package/dist/docs/api/media/slideshow.md +109 -0
- package/dist/docs/api/media/storymap-as-iiif-manifest.md +1007 -0
- package/dist/docs/api/modules.html +50 -0
- package/dist/docs/api/types/ContentState.html +70 -0
- package/dist/docs/api/types/FiredEvent.html +43 -0
- package/dist/docs/api/types/ImagereadyKind.html +34 -0
- package/dist/docs/api/types/MediaTypeMatch.html +78 -0
- package/dist/docs/api/types/SwipeDirection.html +36 -0
- package/dist/docs/api/types/TileSourceFactory.html +53 -0
- package/dist/docs/authoring.html +306 -0
- package/dist/docs/events.html +263 -0
- package/dist/docs/iiif.html +738 -69
- package/dist/docs/migration.html +360 -11
- package/dist/docs/readme.html +149 -17
- package/dist/embed/index.html +8 -1
- package/dist/examples/font-css-false.json +33 -0
- package/dist/examples/issue-242-nonlatin.json +55 -0
- package/dist/examples/issue-305-start-at-slide-data.json +96 -0
- package/dist/examples/issue-358-iframe.json +57 -0
- package/dist/examples/issue-iiif-geo.json +32 -0
- package/dist/examples/issue-image-alt.json +23 -0
- package/dist/examples/issue-image-region.json +42 -0
- package/dist/examples/issue-image-srcset.json +24 -0
- package/dist/examples/layers-control.json +60 -0
- package/dist/examples/map-area-overlays.json +68 -0
- package/dist/examples/map-template-provider.json +36 -0
- package/dist/examples/multi-media.json +71 -0
- package/dist/examples/no-map.json +44 -0
- package/dist/examples-iiif/annotated-image.json +204 -0
- package/dist/examples-iiif/bob-boilen.json +11 -5
- package/dist/examples-iiif/courbet.json +9 -6
- package/dist/examples-iiif/empty.json +8 -4
- package/dist/examples-iiif/flickr-drewvigal.json +248 -24
- package/dist/examples-iiif/flickr-zach.wise.json +8 -4
- package/dist/examples-iiif/font-css-false.json +114 -0
- package/dist/examples-iiif/georeferenced-layer-unsupported.json +153 -0
- package/dist/examples-iiif/georeferenced-layer.json +318 -0
- package/dist/examples-iiif/iiif-wellcome.json +9 -6
- package/dist/examples-iiif/instagram-chenpamela.json +381 -36
- package/dist/examples-iiif/instagram_brentfoster.json +429 -40
- package/dist/examples-iiif/instagram_couch.json +261 -26
- package/dist/examples-iiif/instagram_joegermuska.json +441 -41
- package/dist/examples-iiif/instagram_matteich.json +261 -26
- package/dist/examples-iiif/instagram_mirandamulligan.json +261 -26
- package/dist/examples-iiif/instagram_raymondmccrea.json +261 -26
- package/dist/examples-iiif/instagram_test.json +261 -26
- package/dist/examples-iiif/issue-134-no-lines.json +9 -5
- package/dist/examples-iiif/issue-177-color-vars.json +9 -5
- package/dist/examples-iiif/issue-211-rtl.json +9 -5
- package/dist/examples-iiif/issue-242-nonlatin.json +239 -0
- package/dist/examples-iiif/issue-272-facebook.json +9 -5
- package/dist/examples-iiif/issue-305-start-at-slide-data.json +305 -0
- package/dist/examples-iiif/issue-305-start-at-slide.json +9 -5
- package/dist/examples-iiif/issue-341-distance.json +9 -5
- package/dist/examples-iiif/issue-358-iframe.json +190 -0
- package/dist/examples-iiif/issue-360-juxtapose.json +22 -7
- package/dist/examples-iiif/issue-368-null-fields.json +9 -5
- package/dist/examples-iiif/issue-375-code-lists.json +9 -5
- package/dist/examples-iiif/issue-381-dateline.json +9 -5
- package/dist/examples-iiif/issue-405-custom-icon.json +203 -0
- package/dist/examples-iiif/issue-425-many-slides.json +9 -5
- package/dist/examples-iiif/issue-428-background.json +20 -8
- package/dist/examples-iiif/issue-435-googlemaps.json +9 -5
- package/dist/examples-iiif/issue-437-documentcloud.json +22 -7
- package/dist/examples-iiif/issue-451-webp.json +9 -5
- package/dist/examples-iiif/issue-455-audio.json +9 -5
- package/dist/examples-iiif/issue-480-shorts.json +9 -5
- package/dist/examples-iiif/issue-506-marker-sync.json +9 -5
- package/dist/examples-iiif/issue-iiif-geo.json +200 -0
- package/dist/examples-iiif/issue-image-alt.json +90 -0
- package/dist/examples-iiif/issue-image-region.json +203 -0
- package/dist/examples-iiif/issue-image-srcset.json +87 -0
- package/dist/examples-iiif/jansteen.json +9 -6
- package/dist/examples-iiif/katrina.json +197 -41
- package/dist/examples-iiif/layers-control.json +226 -0
- package/dist/examples-iiif/map-area-overlays.json +289 -0
- package/dist/examples-iiif/map-template-provider.json +133 -0
- package/dist/examples-iiif/marktwain.json +255 -58
- package/dist/examples-iiif/multi-media.json +237 -0
- package/dist/examples-iiif/no-map.json +148 -0
- package/dist/examples-iiif/population.json +440 -76
- package/dist/examples-iiif/president.json +456 -83
- package/dist/examples-iiif/scroll-hint.json +190 -0
- package/dist/examples-iiif/seurat.json +113 -22
- package/dist/examples-iiif/zoomify-clamp.json +153 -0
- package/dist/examples-slideshow/single.json +79 -0
- package/dist/examples-slideshow/static/pixel.png +0 -0
- package/dist/examples-slideshow/static.json +44 -0
- package/dist/harness-multi.html +17 -0
- package/dist/harness.html +4 -2
- package/dist/index.html +19 -12
- package/dist/js/storymap.d.ts +2669 -307
- package/dist/js/storymap.js +10820 -6196
- package/dist/js/storymap.js.map +1 -1
- package/dist/navplace-properties.json +54 -0
- package/dist/site.css +54 -36
- package/docs/migration-from-knightlab.md +279 -19
- package/docs/storymap-as-iiif-manifest.md +633 -136
- package/package.json +12 -7
- package/schema/storymap.schema.json +733 -80
- package/src/animation/easings.ts +8 -1
- package/src/animation/tween.ts +186 -0
- package/src/core/Browser.ts +6 -5
- package/src/core/Load.ts +54 -2
- package/src/core/Util.ts +257 -193
- package/src/core/mixins.ts +66 -35
- package/src/core/viewers.ts +94 -0
- package/src/dom/DomEvent.ts +27 -8
- package/src/globals.d.ts +8 -0
- package/src/language/Language.ts +206 -25
- package/src/language/locale/.expected-gaps.json +346 -0
- package/src/language/locale/be.json +15 -2
- package/src/language/locale/bg.json +15 -2
- package/src/language/locale/cs.json +15 -2
- package/src/language/locale/de.json +23 -2
- package/src/language/locale/el.json +15 -2
- package/src/language/locale/en.json +17 -3
- package/src/language/locale/es.json +15 -2
- package/src/language/locale/et.json +5 -1
- package/src/language/locale/fr.json +15 -2
- package/src/language/locale/he.json +16 -3
- package/src/language/locale/hu.json +15 -2
- package/src/language/locale/is.json +5 -1
- package/src/language/locale/it.json +15 -2
- package/src/language/locale/jp.json +15 -2
- package/src/language/locale/ko.json +15 -2
- package/src/language/locale/nl.json +15 -2
- package/src/language/locale/nn.json +5 -1
- package/src/language/locale/no.json +15 -2
- package/src/language/locale/pl.json +15 -2
- package/src/language/locale/pt.json +15 -2
- package/src/language/locale/ru.json +15 -2
- package/src/language/locale/sk.json +15 -2
- package/src/language/locale/sr.json +5 -1
- package/src/language/locale/sv.json +15 -2
- package/src/language/locale/tr.json +15 -2
- package/src/language/locale/uk.json +15 -2
- package/src/language/locale/ur.json +5 -1
- package/src/language/locale/zh-cn.json +15 -2
- package/src/language/locale/zh-tw.json +15 -2
- package/src/main.ts +143 -0
- package/src/map/Map.ts +227 -112
- package/src/map/MapMarker.ts +44 -8
- package/src/map/georeference.ts +325 -0
- package/src/map/openlayers/Map.OpenLayers.ts +1601 -263
- package/src/map/openlayers/MapMarker.OpenLayers.ts +348 -24
- package/src/map/openlayers/zoomifyTiles.ts +1 -4
- package/src/map/slideView.ts +149 -0
- package/src/map/types.ts +2 -0
- package/src/media/EmbedUtil.ts +333 -24
- package/src/media/Media.ts +270 -59
- package/src/media/embedId.ts +110 -0
- package/src/media/types/Audio.ts +9 -82
- package/src/media/types/Blockquote.ts +2 -3
- package/src/media/types/DailyMotion.ts +5 -10
- package/src/media/types/DocumentCloud.ts +6 -35
- package/src/media/types/Facebook.ts +3 -4
- package/src/media/types/Flickr.ts +23 -12
- package/src/media/types/GoogleDoc.ts +3 -4
- package/src/media/types/HtmlMedia.ts +233 -0
- package/src/media/types/IFrame.ts +3 -4
- package/src/media/types/Image.ts +87 -9
- package/src/media/types/Juxtapose.ts +14 -5
- package/src/media/types/SoundCloud.ts +28 -6
- package/src/media/types/Text.ts +46 -21
- package/src/media/types/Twitter.ts +35 -20
- package/src/media/types/Video.ts +9 -79
- package/src/media/types/Vimeo.ts +11 -11
- package/src/media/types/Website.ts +23 -13
- package/src/media/types/Wikipedia.ts +18 -8
- package/src/media/types/YouTube.ts +72 -40
- package/src/scss/Typography.scss +16 -18
- package/src/scss/VCO.StoryMap.scss +208 -12
- package/src/scss/Variables.scss +3 -2
- package/src/scss/core/Mixins.scss +5 -63
- package/src/scss/core/Reset.scss +5 -18
- package/src/scss/fonts/font.amatic-andika.scss +3 -0
- package/src/scss/fonts/font.bitter-raleway.scss +6 -0
- package/src/scss/fonts/font.cairo.scss +79 -0
- package/src/scss/fonts/font.clicker-garamond.scss +5 -0
- package/src/scss/fonts/font.dancing-ledger.scss +1 -0
- package/src/scss/fonts/font.knightlab.scss +14 -0
- package/src/scss/fonts/font.oldstandard.scss +6 -0
- package/src/scss/fonts/font.opensans-gentiumbook.scss +5 -0
- package/src/scss/fonts/font.playfair-faunaone.scss +2 -0
- package/src/scss/fonts/font.playfair.scss +4 -0
- package/src/scss/fonts/font.pt.scss +6 -0
- package/src/scss/fonts/font.ubuntu.scss +4 -0
- package/src/scss/fonts/font.unicaone-vollkorn.scss +5 -0
- package/src/scss/map/VCO.Map.scss +1 -1
- package/src/scss/map/VCO.MapMarker.scss +114 -8
- package/src/scss/map/openlayers/VCO.Map.OpenLayers.scss +7 -4
- package/src/scss/media/VCO.Media.scss +14 -17
- package/src/scss/media/types/VCO.Media.Blockquote.scss +1 -1
- package/src/scss/media/types/VCO.Media.Text.scss +13 -5
- package/src/scss/media/types/VCO.Media.Twitter.scss +4 -4
- package/src/scss/media/types/VCO.Media.Wikipedia.scss +3 -19
- package/src/scss/site/site.scss +55 -36
- package/src/scss/slider/VCO.Slide.scss +61 -13
- package/src/scss/slider/VCO.SlideNav.scss +34 -24
- package/src/scss/slider/VCO.StorySlider.scss +53 -1
- package/src/scss/snapmap/VCO.SnapMap.scss +3 -3
- package/src/scss/ui/VCO.Consent.scss +63 -13
- package/src/scss/ui/VCO.Layers.scss +119 -0
- package/src/scss/ui/VCO.MenuBar.Button.scss +143 -14
- package/src/scss/ui/VCO.MenuBar.scss +9 -2
- package/src/scss/ui/VCO.Message.scss +16 -5
- package/src/site/site.ts +2 -1
- package/src/slider/Slide.ts +326 -74
- package/src/slider/SlideNav.ts +54 -9
- package/src/slider/StorySlider.ts +352 -60
- package/src/storymap/Consent.ts +429 -82
- package/src/storymap/StoryMap.ts +2163 -340
- package/src/storymap/content-state.ts +180 -0
- package/src/storymap/font-css.ts +72 -0
- package/src/storymap/from-slideshow.ts +785 -0
- package/src/storymap/iiif-shared.ts +228 -0
- package/src/storymap/iiif.ts +1742 -95
- package/src/storymap/to-iiif.ts +1008 -0
- package/src/storymap/validate.ts +80 -7
- package/src/types.ts +591 -29
- package/src/ui/LayersControl.ts +302 -0
- package/src/ui/MenuBar.ts +325 -61
- package/src/ui/Message.ts +44 -2
- package/src/ui/Swipable.ts +170 -85
- package/dist/assets/demo-D6cTmzn6.js +0 -1
- package/dist/assets/harness-BPFlzutp.js +0 -1
- package/dist/assets/index-DDsPBPZA.js +0 -1
- package/dist/assets/main-Y-MYUSJ4.js +0 -17
- package/src/animation/morpheus.d.ts +0 -41
- package/src/scss/VCO.StoryMap.Dark.scss +0 -138
- package/src/scss/Variables.Dark.scss +0 -56
- package/src/scss/media/types/VCO.Media.Instagram.scss +0 -7
- package/src/scss/media/types/VCO.Media.Profile.scss +0 -5
- package/src/ui/Draggable.ts +0 -374
package/src/types.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
// Shared types for the StoryMapJS codebase.
|
|
2
|
+
import type { Tile as TileLayer } from "ol/layer";
|
|
3
|
+
import type Layer from "ol/layer/Layer";
|
|
4
|
+
import type Source from "ol/source/Source";
|
|
2
5
|
|
|
3
6
|
// ---------- Storymap data (exchange format) ----------
|
|
4
7
|
|
|
@@ -12,6 +15,40 @@ export interface StorymapSlideLocation {
|
|
|
12
15
|
lat?: number;
|
|
13
16
|
lon?: number;
|
|
14
17
|
zoom?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Image region `[x, y, w, h]` in image pixels (IIIF xywh convention,
|
|
20
|
+
* slideshow-style image stops): the view fits the region on
|
|
21
|
+
* navigation; image maps (`map_type: "iiif"` + `map_as_image`) only.
|
|
22
|
+
*/
|
|
23
|
+
region?: [number, number, number, number];
|
|
24
|
+
/**
|
|
25
|
+
* View rotation in degrees clockwise (slideshow `rotation`). Applied to
|
|
26
|
+
* the map view on navigation; absent means north-up (0). Image and geo
|
|
27
|
+
* maps alike; purely presentational. Honored only with
|
|
28
|
+
* `slideshow_source`.
|
|
29
|
+
*/
|
|
30
|
+
rotation?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Per-slide image grading (slideshow `filters`): applied as a CSS
|
|
33
|
+
* `filter()` on the map viewport. All fields optional; absent means
|
|
34
|
+
* unfiltered. `hueRotate` is degrees (-180..180), `blur` is CSS pixels.
|
|
35
|
+
* Honored only with `slideshow_source`.
|
|
36
|
+
*/
|
|
37
|
+
filter?: StorymapSlideFilter;
|
|
38
|
+
/**
|
|
39
|
+
* Spotlight mask (slideshow `passepartout`): normalized viewport
|
|
40
|
+
* fractions `{x, y, w, h}` (0..1) left visible while the rest is dimmed
|
|
41
|
+
* with `color`. `invert` dims the inside instead of the outside.
|
|
42
|
+
* Absent means no mask. Honored only with `slideshow_source`.
|
|
43
|
+
*/
|
|
44
|
+
mask?: StorymapSlideMask;
|
|
45
|
+
/**
|
|
46
|
+
* Per-slide basemap override (multi-manifest slideshow tours): any
|
|
47
|
+
* `map_type` value or IIIF `info.json` URL. Absent keeps the story
|
|
48
|
+
* basemap. The layer is cached, so returning to a slide is free.
|
|
49
|
+
* Honored only with `slideshow_source`.
|
|
50
|
+
*/
|
|
51
|
+
basemap?: string;
|
|
15
52
|
line?: boolean;
|
|
16
53
|
icon?: string;
|
|
17
54
|
iconSize?: number[];
|
|
@@ -20,6 +57,35 @@ export interface StorymapSlideLocation {
|
|
|
20
57
|
[key: string]: unknown;
|
|
21
58
|
}
|
|
22
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Declarative CSS filter grading for one slide (slideshow `filters`).
|
|
62
|
+
* Rendered by `buildSlideFilter()`; unknown keys never reach CSS.
|
|
63
|
+
*/
|
|
64
|
+
export interface StorymapSlideFilter {
|
|
65
|
+
brightness?: number;
|
|
66
|
+
contrast?: number;
|
|
67
|
+
saturate?: number;
|
|
68
|
+
hueRotate?: number;
|
|
69
|
+
sepia?: number;
|
|
70
|
+
blur?: number;
|
|
71
|
+
[key: string]: unknown;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Spotlight mask geometry (slideshow `passepartout`). Fractions of the
|
|
76
|
+
* visible map area; `color` is a `#rgb`/`#rrggbb`/`#rrggbbaa`/`rgb(a)` string.
|
|
77
|
+
*/
|
|
78
|
+
export interface StorymapSlideMask {
|
|
79
|
+
x: number;
|
|
80
|
+
y: number;
|
|
81
|
+
w: number;
|
|
82
|
+
h: number;
|
|
83
|
+
color?: string;
|
|
84
|
+
invert?: boolean;
|
|
85
|
+
opacity?: number;
|
|
86
|
+
[key: string]: unknown;
|
|
87
|
+
}
|
|
88
|
+
|
|
23
89
|
export type MediaTypeMatch = {
|
|
24
90
|
type: string;
|
|
25
91
|
name: string;
|
|
@@ -32,8 +98,109 @@ export interface StorymapSlideMedia {
|
|
|
32
98
|
url?: string | null;
|
|
33
99
|
caption?: string | null;
|
|
34
100
|
credit?: string | null;
|
|
101
|
+
/**
|
|
102
|
+
* Accessible description of the media, used as the image's `alt` when the
|
|
103
|
+
* media is an image. In IIIF this is the painting annotation's
|
|
104
|
+
* `accessibilitySummary`.
|
|
105
|
+
*/
|
|
106
|
+
alt?: string | null;
|
|
35
107
|
thumb?: string | null;
|
|
36
108
|
mediatype?: MediaTypeMatch | null;
|
|
109
|
+
/**
|
|
110
|
+
* WebVTT subtitle file for an audio or video slide, rendered as a
|
|
111
|
+
* `<track kind="subtitles">`. IIIF has no subtitle term, so this stays a
|
|
112
|
+
* storymap-JSON field; the authoring guide notes the
|
|
113
|
+
* `TextualBody` + `format: text/vtt` shape we also accept.
|
|
114
|
+
*/
|
|
115
|
+
subtitles?: string | null;
|
|
116
|
+
/**
|
|
117
|
+
* Start offset in seconds for audio/video media (slideshow `audio.offset`).
|
|
118
|
+
* Applied once the media metadata is available; absent or negative means 0.
|
|
119
|
+
* Honored only with `slideshow_source`.
|
|
120
|
+
*/
|
|
121
|
+
offset?: number;
|
|
122
|
+
/**
|
|
123
|
+
* Loop audio/video media (slideshow `audio.loop`). Absent means no loop.
|
|
124
|
+
* Honored only with `slideshow_source`.
|
|
125
|
+
*/
|
|
126
|
+
loop?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* `auto` (default) plays on activation; `click` arms the media paused and
|
|
129
|
+
* lets the visitor start it (slideshow `audio.play`). Absent means `auto`.
|
|
130
|
+
* Honored only with `slideshow_source`.
|
|
131
|
+
*/
|
|
132
|
+
play?: "auto" | "click";
|
|
133
|
+
/**
|
|
134
|
+
* Stop this media when leaving the slide (default true). `false` lets an
|
|
135
|
+
* audio bed continue across slides (slideshow ambient audio). Honored
|
|
136
|
+
* only with `slideshow_source`.
|
|
137
|
+
*/
|
|
138
|
+
stopOnExit?: boolean;
|
|
139
|
+
[key: string]: unknown;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Per-slide marker presentation, consolidated. `location.*` keeps working as
|
|
144
|
+
* the legacy spelling and `marker.*` wins when present.
|
|
145
|
+
*
|
|
146
|
+
* In a IIIF manifest none of this is a `storymap:` term: it all arrives in the
|
|
147
|
+
* `navPlace` Feature's `properties` bag (`icon`, `iconSize`, `image`, `name`,
|
|
148
|
+
* `popup`, `audioBadge`), which is a GeoJSON foreign-member bag and so needs
|
|
149
|
+
* no vocabulary registration.
|
|
150
|
+
*/
|
|
151
|
+
export interface StorymapSlideMarker {
|
|
152
|
+
icon?: string;
|
|
153
|
+
iconSize?: number[];
|
|
154
|
+
image?: string;
|
|
155
|
+
/** The marker label; in a manifest this is `properties.name`. */
|
|
156
|
+
label?: string;
|
|
157
|
+
/** Show the popup card when this (active) marker is clicked. */
|
|
158
|
+
popup?: boolean;
|
|
159
|
+
/** Mark slides that carry narration or audio media with a small badge. */
|
|
160
|
+
audioBadge?: boolean;
|
|
161
|
+
[key: string]: unknown;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Optional spoken narration for one slide, played through a dedicated audio
|
|
166
|
+
* element rather than the slide's media frame — a tour stop usually has a
|
|
167
|
+
* picture and a recording, not one media item. In a IIIF manifest this is a
|
|
168
|
+
* `motivation: "supplementing"` Sound/Video body, read and written alongside
|
|
169
|
+
* the painting annotation.
|
|
170
|
+
*/
|
|
171
|
+
export interface StorymapSlideNarration {
|
|
172
|
+
url: string;
|
|
173
|
+
/**
|
|
174
|
+
* Loop the narration (slideshow `audio.loop`). Absent means no loop.
|
|
175
|
+
* Note: a looping narration never fires `ended`, so `autoplay_media`
|
|
176
|
+
* falls back to its millisecond timer for that slide. Honored only with
|
|
177
|
+
* `slideshow_source`.
|
|
178
|
+
*/
|
|
179
|
+
loop?: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Start offset in seconds (slideshow `audio.offset`), applied once the
|
|
182
|
+
* audio metadata is available. Absent or negative means 0. Honored only
|
|
183
|
+
* with `slideshow_source`.
|
|
184
|
+
*/
|
|
185
|
+
offset?: number;
|
|
186
|
+
/**
|
|
187
|
+
* `auto` (default) plays on navigation; `click` arms the narration
|
|
188
|
+
* paused and lets the visitor start it (slideshow `audio.play`).
|
|
189
|
+
* Honored only with `slideshow_source`.
|
|
190
|
+
*/
|
|
191
|
+
play?: "auto" | "click";
|
|
192
|
+
/**
|
|
193
|
+
* Stop the narration when leaving the slide (default true). `false`
|
|
194
|
+
* keeps an audio bed playing across slides while the URL is unchanged
|
|
195
|
+
* (slideshow ambient audio). Honored only with `slideshow_source`.
|
|
196
|
+
*/
|
|
197
|
+
stopOnExit?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Stop any other playing narration/ambient track before starting this
|
|
200
|
+
* one (default true). `false` allows the ambient overlap of two tracks.
|
|
201
|
+
* Honored only with `slideshow_source`.
|
|
202
|
+
*/
|
|
203
|
+
stopAllPrevious?: boolean;
|
|
37
204
|
[key: string]: unknown;
|
|
38
205
|
}
|
|
39
206
|
|
|
@@ -43,21 +210,111 @@ export interface StorymapSlideBackground {
|
|
|
43
210
|
opacity?: number;
|
|
44
211
|
}
|
|
45
212
|
|
|
213
|
+
/**
|
|
214
|
+
* One slide of a storymap.
|
|
215
|
+
*
|
|
216
|
+
* The nullable members (`| null`) are not decoration: the storymap JSON uses
|
|
217
|
+
* `null` to mean "explicitly absent" and the viewer seeds its own defaults
|
|
218
|
+
* with `null` before the data is merged in, so a plain `?` would not type.
|
|
219
|
+
*/
|
|
46
220
|
export interface StorymapSlide {
|
|
47
221
|
type?: string;
|
|
48
222
|
date?: string | Record<string, unknown> | null;
|
|
49
223
|
group?: string;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
224
|
+
/**
|
|
225
|
+
* The language tag this slide's text was read in. A IIIF manifest states its text as a
|
|
226
|
+
* language map; the reader picks the viewer's configured language and
|
|
227
|
+
* reports which one it used, so a host can offer a language switch.
|
|
228
|
+
* Absent for language-neutral (`none`) text, and for a single-language
|
|
229
|
+
* storymap.
|
|
230
|
+
*/
|
|
231
|
+
language?: string;
|
|
232
|
+
location?: StorymapSlideLocation | null;
|
|
233
|
+
media?: StorymapSlideMedia | null;
|
|
234
|
+
/**
|
|
235
|
+
* Additional visible media for this slide (#358), rendered after `media`
|
|
236
|
+
* in order. Items without a non-empty `url` are skipped, so a document
|
|
237
|
+
* without this field renders identically. In a IIIF manifest these are
|
|
238
|
+
* further `painting` annotations on the canvas; the slide layout
|
|
239
|
+
* (`media_layout`) has no IIIF term and stays viewer-side.
|
|
240
|
+
*/
|
|
241
|
+
media_extra?: StorymapSlideMedia[] | null;
|
|
242
|
+
/**
|
|
243
|
+
* Layout of a multi-media slide (#358): `stack` piles the items
|
|
244
|
+
* vertically (the panel scrolls), `row` puts two items side by side.
|
|
245
|
+
* Defaults to `stack`; `row` with anything but two items falls back to
|
|
246
|
+
* `stack`. Ignored for a single media item.
|
|
247
|
+
*/
|
|
248
|
+
media_layout?: "stack" | "row";
|
|
249
|
+
marker?: StorymapSlideMarker | null;
|
|
250
|
+
narration?: StorymapSlideNarration | null;
|
|
251
|
+
text?: StorymapSlideText | null;
|
|
53
252
|
background?: StorymapSlideBackground | string | null;
|
|
54
|
-
uniqueid?: string;
|
|
253
|
+
uniqueid?: string | null;
|
|
254
|
+
/**
|
|
255
|
+
* Provenance identifiers for the slide's source (slideshow
|
|
256
|
+
* `manifest_id`/`canvas_id`/`image_id`): which manifest, canvas and
|
|
257
|
+
* image the stop was translated from. Data-only (deep links, export);
|
|
258
|
+
* never rendered.
|
|
259
|
+
*/
|
|
260
|
+
provenance?: StorymapSlideProvenance | null;
|
|
261
|
+
/**
|
|
262
|
+
* Per-slide autoplay dwell in milliseconds (slideshow `slidetimeout`):
|
|
263
|
+
* overrides the global `autoplay` interval for this slide; `0` holds on
|
|
264
|
+
* this slide. Absent means the global interval. Honored only with
|
|
265
|
+
* `slideshow_source`.
|
|
266
|
+
*/
|
|
267
|
+
slidetimeout?: number;
|
|
268
|
+
/**
|
|
269
|
+
* Per-slide image overlay on the map (slideshow `imgoverlay`): a placed
|
|
270
|
+
* image shown while this slide is active. Absent means no overlay.
|
|
271
|
+
* Honored only with `slideshow_source`.
|
|
272
|
+
*/
|
|
273
|
+
imgoverlay?: StorymapImageOverlay | null;
|
|
274
|
+
[key: string]: unknown;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* A per-slide image overlay (slideshow `imgoverlay`). `url` is a full-size
|
|
279
|
+
* image; `extent` pins it to `[west, south, east, north]` (lon/lat, or raw
|
|
280
|
+
* image pixels on image-space maps) and defaults to the current view;
|
|
281
|
+
* `size` scales it as a fraction of the viewport width; `opacity` is 0..1.
|
|
282
|
+
*/
|
|
283
|
+
export interface StorymapImageOverlay {
|
|
284
|
+
url: string;
|
|
285
|
+
size?: number;
|
|
286
|
+
opacity?: number;
|
|
287
|
+
extent?: [number, number, number, number];
|
|
288
|
+
[key: string]: unknown;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Provenance identifiers for one slide's source: the manifest, canvas and
|
|
293
|
+
* image a stop was translated from. Data-only.
|
|
294
|
+
*/
|
|
295
|
+
export interface StorymapSlideProvenance {
|
|
296
|
+
manifest?: string;
|
|
297
|
+
canvas?: string;
|
|
298
|
+
image?: string;
|
|
299
|
+
[key: string]: unknown;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Authorship and rights for the story as a whole (slideshow
|
|
304
|
+
* `creator`/`rights`). Rendered into the map attribution line for
|
|
305
|
+
* slideshow tours; the license URL stays data-only for hosts.
|
|
306
|
+
*/
|
|
307
|
+
export interface StorymapCredit {
|
|
308
|
+
creator?: string;
|
|
309
|
+
rights?: string;
|
|
310
|
+
licenseUrl?: string;
|
|
55
311
|
[key: string]: unknown;
|
|
56
312
|
}
|
|
57
313
|
|
|
58
314
|
export interface StorymapData {
|
|
59
315
|
uniqueid?: string;
|
|
60
316
|
slides: StorymapSlide[];
|
|
317
|
+
credit?: StorymapCredit | null;
|
|
61
318
|
[key: string]: unknown;
|
|
62
319
|
}
|
|
63
320
|
|
|
@@ -67,6 +324,29 @@ export interface StorymapDataWrapper {
|
|
|
67
324
|
|
|
68
325
|
// ---------- StoryMap / Map options ----------
|
|
69
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Custom tile layer/source factory (see
|
|
329
|
+
* `StorymapOptions.tile_source_factory`). `createDefault` runs the
|
|
330
|
+
* built-in `map_type` handling, so a factory can decorate or delegate.
|
|
331
|
+
*
|
|
332
|
+
* May return any `ol/layer/Layer` (used as-is — this is what lets a
|
|
333
|
+
* third-party layer such as an Allmaps `WarpedMapLayer` render), a bare
|
|
334
|
+
* `Source` (wrapped in a `TileLayer`), or `null`/`undefined` to fall
|
|
335
|
+
* through to the default `map_type` handling.
|
|
336
|
+
*/
|
|
337
|
+
export type TileSourceFactory = (
|
|
338
|
+
map_type: string,
|
|
339
|
+
context: { options: StorymapOptions; createDefault: () => TileLayer },
|
|
340
|
+
) => Layer | TileLayer | Source | null | undefined;
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Named progress indicator styles (slideshow `progressbar`), shared by the
|
|
344
|
+
* translator (which emits them) and the menubar (which renders them) so the
|
|
345
|
+
* set cannot drift.
|
|
346
|
+
*/
|
|
347
|
+
export const PROGRESSBAR_STYLES = ["bar", "dots", "squares", "block", "thinblock"] as const;
|
|
348
|
+
export type ProgressbarStyle = (typeof PROGRESSBAR_STYLES)[number];
|
|
349
|
+
|
|
70
350
|
export interface StorymapOptions {
|
|
71
351
|
width: number;
|
|
72
352
|
height: number;
|
|
@@ -75,7 +355,6 @@ export interface StorymapOptions {
|
|
|
75
355
|
default_bg_color: { r: number; g: number; b: number };
|
|
76
356
|
map_size_sticky: number;
|
|
77
357
|
map_center_offset: { left: number; top: number } | null;
|
|
78
|
-
less_bounce: boolean;
|
|
79
358
|
start_at_slide: number;
|
|
80
359
|
call_to_action: boolean;
|
|
81
360
|
call_to_action_text: string;
|
|
@@ -89,7 +368,6 @@ export interface StorymapOptions {
|
|
|
89
368
|
skinny_size: number;
|
|
90
369
|
duration: number;
|
|
91
370
|
ease: unknown;
|
|
92
|
-
dragging: boolean;
|
|
93
371
|
trackResize: boolean;
|
|
94
372
|
/**
|
|
95
373
|
* Navigate slides with arrow keys anywhere on the page (default false:
|
|
@@ -101,15 +379,61 @@ export interface StorymapOptions {
|
|
|
101
379
|
nocache: boolean;
|
|
102
380
|
/** Advance slides automatically every N milliseconds; 0 disables (issue #380) */
|
|
103
381
|
autoplay: number;
|
|
382
|
+
/**
|
|
383
|
+
* With autoplay on, wait for the current slide's audio or video to end
|
|
384
|
+
* before advancing instead of using the `autoplay` millisecond timer,
|
|
385
|
+
* which stays as the fallback. Slides without playable media keep the
|
|
386
|
+
* timer, so a mixed story never stalls.
|
|
387
|
+
*/
|
|
388
|
+
autoplay_media: boolean;
|
|
104
389
|
/** Show a progress bar in the menubar (issue #247) */
|
|
105
390
|
show_progress: boolean;
|
|
106
|
-
/**
|
|
391
|
+
/**
|
|
392
|
+
* Progress indicator style (slideshow `progressbar`): `false`/`"off"`
|
|
393
|
+
* hides it (same as `show_progress: false`), `true`/`"bar"` is the
|
|
394
|
+
* classic fill bar, `dots`/`squares` render one step per slide,
|
|
395
|
+
* `block`/`thinblock` are fill-bar height variants. Absent means the
|
|
396
|
+
* `show_progress` boolean decides and the style is `"bar"`. Honored
|
|
397
|
+
* only with `slideshow_source`.
|
|
398
|
+
*/
|
|
399
|
+
progressbar?:
|
|
400
|
+
| boolean
|
|
401
|
+
| "bar"
|
|
402
|
+
| "dots"
|
|
403
|
+
| "squares"
|
|
404
|
+
| "block"
|
|
405
|
+
| "thinblock"
|
|
406
|
+
| "off"; /** Show the slide headline as a label on the active map marker (issue #243) */
|
|
107
407
|
marker_labels: boolean;
|
|
108
408
|
/** Default text alignment for slide text: left, center or right (issue #244) */
|
|
109
409
|
text_align: "left" | "center" | "right";
|
|
410
|
+
/**
|
|
411
|
+
* Slide panel dock (slideshow `textmode`): which side the text panel
|
|
412
|
+
* occupies in landscape. `"right"` (default) is the current layout;
|
|
413
|
+
* `"left"` mirrors it; `"bottom"` docks the panel below the map.
|
|
414
|
+
* Portrait layouts always behave like `"bottom"`. Honored only with
|
|
415
|
+
* `slideshow_source`.
|
|
416
|
+
*/
|
|
417
|
+
textmode?: "left" | "right" | "bottom";
|
|
418
|
+
/**
|
|
419
|
+
* Slide panel size as a percentage (slideshow `textsize`): percent of
|
|
420
|
+
* the width for side docks, of the height for the bottom dock.
|
|
421
|
+
* Range 10..80; absent keeps the built-in 50/50 split. Honored only
|
|
422
|
+
* with `slideshow_source`.
|
|
423
|
+
*/
|
|
424
|
+
textsize?: number;
|
|
110
425
|
/** Override the overview fit center (issues #107, #271) */
|
|
111
426
|
map_overview_center: { lat: number; lon: number } | null;
|
|
112
427
|
map_type: string;
|
|
428
|
+
/**
|
|
429
|
+
* Custom OpenLayers tile layer/source factory (issue #473): consulted
|
|
430
|
+
* by the tile layer factory before the built-in `map_type` switch, for
|
|
431
|
+
* every base, overlay and minimap layer. Return a `TileLayer` (or a
|
|
432
|
+
* bare `Source`, auto-wrapped in one) for custom handling — e.g. WMS —
|
|
433
|
+
* or `null`/`undefined` to fall through to the default types.
|
|
434
|
+
* Constructor- and runtime-only: functions cannot ride storymap JSON.
|
|
435
|
+
*/
|
|
436
|
+
tile_source_factory: TileSourceFactory | null;
|
|
113
437
|
attribution: string;
|
|
114
438
|
/**
|
|
115
439
|
* Stacked raster overlays above the base map, below the route lines.
|
|
@@ -118,8 +442,16 @@ export interface StorymapOptions {
|
|
|
118
442
|
* (default) means base map only.
|
|
119
443
|
*/
|
|
120
444
|
overlays: StorymapOverlayLayer[];
|
|
445
|
+
/** Show the basemap/overlay switcher in the menubar (default false) */
|
|
446
|
+
show_layers_control: boolean;
|
|
447
|
+
/**
|
|
448
|
+
* Selectable base maps for the layer switcher. Entry 0 is the initial
|
|
449
|
+
* basemap unless `map_type` says otherwise; omit for an overlays-only
|
|
450
|
+
* control. Constructor- and runtime-only when labels are functions
|
|
451
|
+
* (functions cannot ride storymap JSON — see `label`).
|
|
452
|
+
*/
|
|
453
|
+
basemaps?: StorymapBasemap[];
|
|
121
454
|
map_mini: boolean;
|
|
122
|
-
map_subdomains: string;
|
|
123
455
|
map_as_image: boolean;
|
|
124
456
|
map_access_token: string;
|
|
125
457
|
map_background_color: string;
|
|
@@ -160,7 +492,9 @@ export interface StorymapOptions {
|
|
|
160
492
|
/**
|
|
161
493
|
* Ask for permission before loading anything from external services
|
|
162
494
|
* (media embeds, map tiles, external font CSS) — GDPR consent mode.
|
|
163
|
-
*
|
|
495
|
+
* Decisions are remembered per service in `localStorage` under
|
|
496
|
+
* `storymapjs-consent` with no expiry: clearing site data is what makes
|
|
497
|
+
* the viewer ask again.
|
|
164
498
|
*/
|
|
165
499
|
consent_required: boolean;
|
|
166
500
|
/** Slide text color override, sets --vco-color-text (issue #177) */
|
|
@@ -170,14 +504,95 @@ export interface StorymapOptions {
|
|
|
170
504
|
/** Show the great-circle route distance in the menubar (issue #341) */
|
|
171
505
|
show_distance: boolean;
|
|
172
506
|
/**
|
|
173
|
-
*
|
|
174
|
-
* the
|
|
507
|
+
* Slide transition effect (slideshow `fxmode`): `"slide"` (default) is
|
|
508
|
+
* the current glide, `"fade"` cross-fades slides, `"none"` jumps without
|
|
509
|
+
* animation. `prefers-reduced-motion` still forces `"none"`. Honored
|
|
510
|
+
* only with `slideshow_source`.
|
|
511
|
+
*/
|
|
512
|
+
fxmode?: "slide" | "fade" | "none";
|
|
513
|
+
/**
|
|
514
|
+
* Reading mode (slideshow `mode`): `"standard"` (default) is the
|
|
515
|
+
* slider; `"static"` stacks all slides in a scrollable list and follows
|
|
516
|
+
* the map to the slide in view. Honored only with `slideshow_source`.
|
|
517
|
+
*/
|
|
518
|
+
mode?: "standard" | "static";
|
|
519
|
+
/**
|
|
520
|
+
* HUD foreground color override (slideshow `hudcolor`): sets the
|
|
521
|
+
* `--vco-hud-fg` CSS variable. Absent follows the theme. Honored only
|
|
522
|
+
* with `slideshow_source`.
|
|
523
|
+
*/
|
|
524
|
+
hudcolor?: string;
|
|
525
|
+
/**
|
|
526
|
+
* HUD background color override (slideshow `hudbgcolor`): sets the
|
|
527
|
+
* `--vco-hud-bg` CSS variable. Absent follows the theme. Honored only
|
|
528
|
+
* with `slideshow_source`.
|
|
529
|
+
*/
|
|
530
|
+
hudbgcolor?: string;
|
|
531
|
+
/**
|
|
532
|
+
* HUD opacity percent 0..100 (slideshow `hudopacity`): applied to the
|
|
533
|
+
* HUD background. Absent means fully opaque theme background. Honored
|
|
534
|
+
* only with `slideshow_source`.
|
|
535
|
+
*/
|
|
536
|
+
hudopacity?: number;
|
|
537
|
+
/**
|
|
538
|
+
* Show the previous/next slide navigation (slideshow `shownav`).
|
|
539
|
+
* Default true; `false` hides the nav chrome (keyboard/AT navigation
|
|
540
|
+
* still works, like `show_progress: false` keeps the story usable).
|
|
541
|
+
* Honored only with `slideshow_source`.
|
|
542
|
+
*/
|
|
543
|
+
shownav?: boolean;
|
|
544
|
+
/**
|
|
545
|
+
* Render slide headlines (slideshow `showheadings`). Default true;
|
|
546
|
+
* `false` hides headline elements via CSS. Honored only with
|
|
547
|
+
* `slideshow_source`.
|
|
548
|
+
*/
|
|
549
|
+
show_headings?: boolean;
|
|
550
|
+
/**
|
|
551
|
+
* Show scrollbars in the slide panel (slideshow `showscrollbars`).
|
|
552
|
+
* Default true; `false` hides them via CSS (content still scrolls).
|
|
553
|
+
* Honored only with `slideshow_source`.
|
|
554
|
+
*/
|
|
555
|
+
show_scrollbars?: boolean;
|
|
556
|
+
/**
|
|
557
|
+
* Fixed viewer height (slideshow `viewerheight`), e.g. `"400px"`:
|
|
558
|
+
* applied as a container height override when set. Absent keeps the
|
|
559
|
+
* measured-container behavior. Only `px`, `%` and `vh` units accepted.
|
|
560
|
+
* Honored only with `slideshow_source`.
|
|
561
|
+
*/
|
|
562
|
+
viewerheight?: string;
|
|
563
|
+
/**
|
|
564
|
+
* Show media captions and credits (slideshow `showinfo`). Default true;
|
|
565
|
+
* `false` hides the caption/credit block. Honored only with
|
|
566
|
+
* `slideshow_source`.
|
|
567
|
+
*/
|
|
568
|
+
show_info?: boolean;
|
|
569
|
+
/**
|
|
570
|
+
* Detect slideshow tours automatically (default `true`): an
|
|
571
|
+
* `AnnotationCollection` shaped like one loads through the translator.
|
|
572
|
+
* Set `false` to disable detection (such documents then fail validation
|
|
573
|
+
* as before).
|
|
574
|
+
*/
|
|
575
|
+
slideshow?: boolean;
|
|
576
|
+
/**
|
|
577
|
+
* @internal Source marker: true when the loaded document came from a
|
|
578
|
+
* slideshow tour (set programmatically by the viewer, never from data).
|
|
579
|
+
* The slideshow-motivated presentation fields (location
|
|
580
|
+
* rotation/filter/mask/basemap, narration/media playback bags,
|
|
581
|
+
* slidetimeout, imgoverlay, and the player-chrome options above) render
|
|
582
|
+
* only with this set — internal documents keep the long-standing
|
|
583
|
+
* behavior. Absent from constructor defaults and schema, so storymap
|
|
584
|
+
* data cannot inject it; it travels via options copies. Hosts may pass
|
|
585
|
+
* it explicitly as an escape hatch.
|
|
586
|
+
*/
|
|
587
|
+
slideshow_source?: boolean;
|
|
588
|
+
/**
|
|
589
|
+
* Raw OpenLayers map configuration. `controls` replaces the StoryMapJS
|
|
590
|
+
* defaults, `interactions` are *added to* the viewer's own pan/zoom
|
|
591
|
+
* interactions, and `view` is merged over the computed default view
|
|
175
592
|
* and `element` (an HTMLElement or DOM id) replaces the auto-created map
|
|
176
593
|
* container div.
|
|
177
594
|
*/
|
|
178
595
|
map_options: StorymapMapOptions;
|
|
179
|
-
map_popup: boolean;
|
|
180
|
-
zoom_distance: number;
|
|
181
596
|
calculate_zoom: boolean;
|
|
182
597
|
line_follows_path: boolean;
|
|
183
598
|
line_color: string;
|
|
@@ -189,16 +604,44 @@ export interface StorymapOptions {
|
|
|
189
604
|
show_lines: boolean;
|
|
190
605
|
show_history_line: boolean;
|
|
191
606
|
use_custom_markers: boolean;
|
|
192
|
-
|
|
607
|
+
/**
|
|
608
|
+
* IIIF image service for image maps. `url` is the `info.json`; `width`
|
|
609
|
+
* and `height` record the canvas size so region clamping and the static
|
|
610
|
+
* fallback work without another fetch; `fallbackUrl` is a full-size
|
|
611
|
+
* image used when `info.json` cannot be loaded (slideshow
|
|
612
|
+
* `image_static`).
|
|
613
|
+
*/
|
|
614
|
+
iiif: {
|
|
615
|
+
url: string;
|
|
616
|
+
attribution: string;
|
|
617
|
+
width?: number;
|
|
618
|
+
height?: number;
|
|
619
|
+
fallbackUrl?: string;
|
|
620
|
+
};
|
|
621
|
+
tilejson?: StorymapTilejson;
|
|
622
|
+
/**
|
|
623
|
+
* The `seeAlso` targets a IIIF manifest points at, recorded but not
|
|
624
|
+
* fetched — see `loadSeeAlso()`.
|
|
625
|
+
*/
|
|
626
|
+
see_also?: { id: string; type: string }[];
|
|
193
627
|
map_height: number;
|
|
194
628
|
storyslider_height: number;
|
|
195
629
|
slide_padding_lr: number;
|
|
196
630
|
slide_default_fade: string;
|
|
197
631
|
menubar_default_y: number;
|
|
198
|
-
path_gfx: string;
|
|
199
632
|
script_path: string;
|
|
200
|
-
|
|
633
|
+
/**
|
|
634
|
+
* Font theme stylesheet: `stock:<name>`, a URL/path, or `false` for no
|
|
635
|
+
* injected stylesheet (the host bundles the theme itself).
|
|
636
|
+
*/
|
|
637
|
+
font_css: string | false;
|
|
201
638
|
language: string;
|
|
639
|
+
/**
|
|
640
|
+
* Colour theme: `"dark"` forces the dark palette, `"light"` pins the
|
|
641
|
+
* light one (overriding an OS dark preference), unset follows
|
|
642
|
+
* `prefers-color-scheme`. Construction-time only, like `map_type`.
|
|
643
|
+
*/
|
|
644
|
+
theme?: "dark" | "light";
|
|
202
645
|
api_key_flickr: string;
|
|
203
646
|
[key: string]: unknown;
|
|
204
647
|
}
|
|
@@ -219,14 +662,57 @@ export interface AnimationHandle {
|
|
|
219
662
|
|
|
220
663
|
// ---------- map ----------
|
|
221
664
|
|
|
665
|
+
/**
|
|
666
|
+
* TileJSON 2.1 tile source metadata, from a manifest's map configuration
|
|
667
|
+
* service.
|
|
668
|
+
*
|
|
669
|
+
* This is how a manifest states a tile source: `tiles` is the URL template and
|
|
670
|
+
* the rest is the standard metadata around it, where a keyword basemap
|
|
671
|
+
* (`osm`, `stadia`, `iiif`, …) has no such thing to say. `minzoom`,
|
|
672
|
+
* `maxzoom`, `bounds` and `scheme` constrain the source; `center` and `zoom`
|
|
673
|
+
* set the initial view.
|
|
674
|
+
*/
|
|
675
|
+
export interface StorymapTilejson {
|
|
676
|
+
/** URL template, e.g. `https://tiles.example.org/{z}/{x}/{y}.png` */
|
|
677
|
+
tiles: string | string[];
|
|
678
|
+
/** Lowest zoom level the source has tiles for */
|
|
679
|
+
minzoom?: number;
|
|
680
|
+
/** Highest zoom level the source has tiles for */
|
|
681
|
+
maxzoom?: number;
|
|
682
|
+
/** `[west, south, east, north]`, WGS84 lon/lat, of the covered area */
|
|
683
|
+
bounds?: [number, number, number, number];
|
|
684
|
+
/** `xyz` (default) or `tms`, which flips the tile row order */
|
|
685
|
+
scheme?: "xyz" | "tms";
|
|
686
|
+
/** `[lon, lat, zoom]` of the map's default view */
|
|
687
|
+
center?: [number, number, number];
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* A selectable base map for the layer switcher (`StorymapOptions.basemaps`).
|
|
692
|
+
*/
|
|
693
|
+
export interface StorymapBasemap {
|
|
694
|
+
/** Any `map_type` value. */
|
|
695
|
+
map_type: string;
|
|
696
|
+
/**
|
|
697
|
+
* Control row label. Defaults to `map_type`. A function is re-invoked
|
|
698
|
+
* on every `refreshLabels()` for host i18n (constructor options only —
|
|
699
|
+
* see `StorymapOverlayLayer.label`).
|
|
700
|
+
*/
|
|
701
|
+
label?: string | (() => string);
|
|
702
|
+
}
|
|
703
|
+
|
|
222
704
|
/**
|
|
223
705
|
* A stacked raster overlay above the base map (StorymapOptions.overlays).
|
|
224
706
|
* Presentation is declarative: hosts no longer need to reach into the
|
|
225
707
|
* layer objects for blend modes, clips or stacking tweaks.
|
|
226
708
|
*/
|
|
227
709
|
export interface StorymapOverlayLayer {
|
|
228
|
-
/**
|
|
229
|
-
|
|
710
|
+
/**
|
|
711
|
+
* Any `map_type` value the tile layer factory accepts. Required unless
|
|
712
|
+
* the entry carries a `georeference` (a placed IIIF image instead of
|
|
713
|
+
* a tile source).
|
|
714
|
+
*/
|
|
715
|
+
map_type?: string;
|
|
230
716
|
/** Layer opacity 0..1 (default 1) */
|
|
231
717
|
opacity?: number;
|
|
232
718
|
/** Initial visibility (default true) */
|
|
@@ -243,8 +729,71 @@ export interface StorymapOverlayLayer {
|
|
|
243
729
|
className?: string;
|
|
244
730
|
/** CSS mix-blend-mode for the layer container (needs className) */
|
|
245
731
|
blendMode?: string;
|
|
732
|
+
/**
|
|
733
|
+
* Control row label for the layer switcher (`show_layers_control`).
|
|
734
|
+
* Defaults to `map_type`. A function is re-invoked on every
|
|
735
|
+
* `refreshLabels()` for host i18n — but only when the entry comes from
|
|
736
|
+
* constructor options: `mergeData()` overwrites option keys with the
|
|
737
|
+
* storymap JSON, so a document carrying `overlays` replaces function
|
|
738
|
+
* labels with its own strings.
|
|
739
|
+
*/
|
|
740
|
+
label?: string | (() => string);
|
|
741
|
+
/**
|
|
742
|
+
* Render the row checked and disabled: an overlay the visitor may add
|
|
743
|
+
* back but not remove (e.g. a georeferenced scan the story is built on).
|
|
744
|
+
* The control never toggles a locked entry.
|
|
745
|
+
*/
|
|
746
|
+
locked?: boolean;
|
|
747
|
+
/** false hides the row from the control without removing the overlay. */
|
|
748
|
+
control?: boolean;
|
|
246
749
|
/** Clip box `[west, south, east, north]` in lon/lat (mercator maps) */
|
|
247
750
|
extent?: [number, number, number, number];
|
|
751
|
+
/**
|
|
752
|
+
* IIIF Georeference Extension placement instead of a tile source. The
|
|
753
|
+
* ground control points are fitted affinely and the image is placed on
|
|
754
|
+
* the geographic map, so this is the manifest-side equivalent of a
|
|
755
|
+
* georeferenced raster overlay.
|
|
756
|
+
*/
|
|
757
|
+
georeference?: StorymapGeoreference;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
/**
|
|
761
|
+
* A IIIF Georeference Extension annotation body plus the image it places
|
|
762
|
+
* (`overlays[].georeference`). The `body` is the annotation payload of
|
|
763
|
+
* `iiif.io/api/extension/georef` verbatim: a GeoJSON FeatureCollection of
|
|
764
|
+
* ground control points pairing `properties.resourceCoords` (image pixels)
|
|
765
|
+
* with `geometry.coordinates` (WGS84 lon/lat), optionally carrying a
|
|
766
|
+
* `transformation` hint.
|
|
767
|
+
*
|
|
768
|
+
* The viewer fits the affine (first-order polynomial) case and places the
|
|
769
|
+
* image with OpenLayers' reprojection, which requires an axis-aligned
|
|
770
|
+
* placement; rotated or skewed sheets, higher-order polynomials and thin
|
|
771
|
+
* plate splines are reported and skipped — see the "Geo-referenced layers"
|
|
772
|
+
* section of docs/storymap-as-iiif-manifest.md.
|
|
773
|
+
*/
|
|
774
|
+
export interface StorymapGeoreference {
|
|
775
|
+
/** IIIF Image API service base (or a full-size image URL) to place */
|
|
776
|
+
url: string;
|
|
777
|
+
/** Image width in pixels (the resourceCoords space) */
|
|
778
|
+
width: number;
|
|
779
|
+
/** Image height in pixels */
|
|
780
|
+
height: number;
|
|
781
|
+
/** Georeference annotation body: the GCP FeatureCollection */
|
|
782
|
+
body: StorymapGeoreferenceBody;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
export interface StorymapGeoreferenceBody {
|
|
786
|
+
type?: string;
|
|
787
|
+
/** `polynomial` with `order: 1`, or absent; other values are skipped */
|
|
788
|
+
transformation?: { type?: string; options?: { order?: number } };
|
|
789
|
+
features: StorymapGroundControlPoint[];
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/** One ground control point: an image pixel paired with a WGS84 position */
|
|
793
|
+
export interface StorymapGroundControlPoint {
|
|
794
|
+
type?: string;
|
|
795
|
+
properties?: { resourceCoords?: [number, number] };
|
|
796
|
+
geometry?: { type?: string; coordinates?: number[] };
|
|
248
797
|
}
|
|
249
798
|
|
|
250
799
|
/** OpenLayers passthrough options (see StorymapOptions.map_options) */
|
|
@@ -255,26 +804,39 @@ export interface StorymapMapOptions {
|
|
|
255
804
|
view?: Record<string, unknown>;
|
|
256
805
|
/** Replaces the default (empty) controls list */
|
|
257
806
|
controls?: unknown[];
|
|
258
|
-
/**
|
|
807
|
+
/**
|
|
808
|
+
* Added to the viewer's own pan/zoom interactions (not a replacement:
|
|
809
|
+
* the viewer's defaults are always added). `controls` *is* a
|
|
810
|
+
* replacement, since the viewer adds none of its own.
|
|
811
|
+
*/
|
|
259
812
|
interactions?: unknown[];
|
|
260
813
|
/** Any other ol/Map constructor option (layers, pixelRatio, ...) */
|
|
261
814
|
[key: string]: unknown;
|
|
262
815
|
}
|
|
263
816
|
|
|
817
|
+
/**
|
|
818
|
+
* A resolved geographic coordinate.
|
|
819
|
+
*
|
|
820
|
+
* `lat`/`lon` are required: this type is for points the map can actually
|
|
821
|
+
* focus on. A *slide* may carry a `location` without coordinates (an image
|
|
822
|
+
* region, an icon only) — that is `StorymapSlideLocation`, which keeps them
|
|
823
|
+
* optional. `lng` is accepted as a legacy alias on input only.
|
|
824
|
+
*/
|
|
264
825
|
export interface LatLngLiteral {
|
|
265
|
-
lat: number
|
|
266
|
-
lon
|
|
267
|
-
lng?: number
|
|
826
|
+
lat: number;
|
|
827
|
+
lon: number;
|
|
828
|
+
lng?: number;
|
|
268
829
|
}
|
|
269
830
|
|
|
270
|
-
|
|
831
|
+
/**
|
|
832
|
+
* A marker's data: the slide it was created from, plus the `real_marker` flag
|
|
833
|
+
* the marker sets once it has confirmed numeric lat/lon. A separate interface
|
|
834
|
+
* used to drift from `StorymapSlide` (narrower `text`, its own `location`),
|
|
835
|
+
* which then made `Map._createMarker(slide)` unassignable.
|
|
836
|
+
*/
|
|
837
|
+
export type MapMarkerData = StorymapSlide & {
|
|
271
838
|
real_marker?: boolean;
|
|
272
|
-
|
|
273
|
-
media?: StorymapSlideMedia & { mediatype?: MediaTypeMatch | null };
|
|
274
|
-
text?: { headline?: string };
|
|
275
|
-
type?: string;
|
|
276
|
-
[key: string]: unknown;
|
|
277
|
-
}
|
|
839
|
+
};
|
|
278
840
|
|
|
279
841
|
export type IconSpec = {
|
|
280
842
|
url: string;
|