@projektemacher/storymapjs 0.10.6 → 0.10.8
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 +358 -16
- package/README.md +43 -9
- package/dist/assets/demo-DBpeF31K.js +1 -0
- package/dist/assets/harness-Cr0rYpvt.js +1 -0
- package/dist/assets/harness-multi-CYHgI0a9.js +1 -0
- package/dist/assets/harness-support-Do7sIp2j.js +1 -0
- package/dist/assets/index-wHPqGrBS.js +1 -0
- package/dist/assets/main-DXalctuR.js +17 -0
- package/dist/context.json +12 -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 +101 -21
- 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 +2 -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 +1604 -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/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/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 +197 -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/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/StorymapData.html +71 -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 +105 -0
- package/dist/docs/api/interfaces/StorymapManifestBackground.html +81 -0
- package/dist/docs/api/interfaces/StorymapManifestCanvas.html +140 -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 +532 -0
- package/dist/docs/api/interfaces/StorymapOverlayLayer.html +126 -0
- package/dist/docs/api/interfaces/StorymapSlide.html +132 -0
- package/dist/docs/api/interfaces/StorymapSlideBackground.html +72 -0
- package/dist/docs/api/interfaces/StorymapSlideLocation.html +117 -0
- package/dist/docs/api/interfaces/StorymapSlideMarker.html +104 -0
- package/dist/docs/api/interfaces/StorymapSlideMedia.html +110 -0
- package/dist/docs/api/interfaces/StorymapSlideNarration.html +65 -0
- package/dist/docs/api/interfaces/StorymapSlideText.html +72 -0
- package/dist/docs/api/interfaces/StorymapTilejson.html +105 -0
- package/dist/docs/api/media/es.json +31 -0
- package/dist/docs/api/media/migration-from-knightlab.md +359 -0
- package/dist/docs/api/modules.html +50 -0
- package/dist/docs/api/types/ContentState.html +70 -0
- package/dist/docs/api/types/ImagereadyKind.html +34 -0
- package/dist/docs/api/types/MediaTypeMatch.html +78 -0
- package/dist/docs/api/types/TileSourceFactory.html +53 -0
- package/dist/docs/authoring.html +293 -0
- package/dist/docs/iiif.html +617 -62
- package/dist/docs/migration.html +314 -12
- package/dist/docs/readme.html +40 -9
- package/dist/embed/index.html +130 -5
- 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/map-area-overlays.json +68 -0
- package/dist/examples/no-map.json +44 -0
- package/dist/examples-iiif/annotated-image.json +188 -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/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/map-area-overlays.json +289 -0
- package/dist/examples-iiif/marktwain.json +255 -58
- 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/harness-multi.html +17 -0
- package/dist/harness.html +3 -2
- package/dist/index.html +33 -10
- package/dist/js/storymap.d.ts +1558 -114
- package/dist/js/storymap.js +10113 -6490
- package/dist/js/storymap.js.map +1 -1
- package/dist/navplace-properties.json +40 -0
- package/docs/migration-from-knightlab.md +359 -0
- package/docs/storymap-as-iiif-manifest.md +934 -0
- package/package.json +16 -10
- package/schema/storymap.schema.json +431 -78
- package/src/animation/easings.ts +25 -0
- package/src/animation/tween.ts +186 -0
- package/src/core/Browser.ts +20 -0
- package/src/core/Load.ts +232 -0
- package/src/core/Util.ts +416 -0
- package/src/core/mixins.ts +188 -0
- package/src/core/viewers.ts +94 -0
- package/src/dom/Dom.ts +31 -0
- package/src/dom/DomEvent.ts +80 -0
- package/src/globals.d.ts +24 -0
- package/src/language/Language.ts +281 -0
- package/src/language/locale/.expected-gaps.json +86 -0
- package/src/language/locale/be.json +31 -0
- package/src/language/locale/bg.json +31 -0
- package/src/language/locale/cs.json +31 -0
- package/src/language/locale/de.json +31 -0
- package/src/language/locale/el.json +31 -0
- package/src/language/locale/en.json +32 -0
- package/src/language/locale/es.json +31 -0
- package/src/language/locale/et.json +22 -0
- package/src/language/locale/fr.json +31 -0
- package/src/language/locale/he.json +31 -0
- package/src/language/locale/hu.json +31 -0
- package/src/language/locale/is.json +22 -0
- package/src/language/locale/it.json +31 -0
- package/src/language/locale/jp.json +31 -0
- package/src/language/locale/ko.json +31 -0
- package/src/language/locale/nl.json +31 -0
- package/src/language/locale/nn.json +22 -0
- package/src/language/locale/no.json +31 -0
- package/src/language/locale/pl.json +31 -0
- package/src/language/locale/pt.json +31 -0
- package/src/language/locale/ru.json +31 -0
- package/src/language/locale/sk.json +31 -0
- package/src/language/locale/sr.json +21 -0
- package/src/language/locale/sv.json +31 -0
- package/src/language/locale/tr.json +31 -0
- package/src/language/locale/uk.json +31 -0
- package/src/language/locale/ur.json +22 -0
- package/src/language/locale/zh-cn.json +31 -0
- package/src/language/locale/zh-tw.json +31 -0
- package/src/main.ts +143 -0
- package/src/map/Map.ts +794 -0
- package/src/map/MapMarker.ts +172 -0
- package/src/map/georeference.ts +325 -0
- package/src/map/openlayers/Map.OpenLayers.ts +2492 -0
- package/src/map/openlayers/MapMarker.OpenLayers.ts +400 -0
- package/src/map/openlayers/zoomifyTiles.ts +25 -0
- package/src/map/types.ts +17 -0
- package/src/media/EmbedUtil.ts +452 -0
- package/src/media/Media.ts +597 -0
- package/src/media/MediaType.ts +163 -0
- package/src/media/embedId.ts +104 -0
- package/src/media/types/Audio.ts +14 -0
- package/src/media/types/Blockquote.ts +39 -0
- package/src/media/types/DailyMotion.ts +53 -0
- package/src/media/types/DocumentCloud.ts +12 -0
- package/src/media/types/Facebook.ts +40 -0
- package/src/media/types/Flickr.ts +115 -0
- package/src/media/types/GoogleDoc.ts +58 -0
- package/src/media/types/HtmlMedia.ts +167 -0
- package/src/media/types/IFrame.ts +50 -0
- package/src/media/types/Image.ts +115 -0
- package/src/media/types/Juxtapose.ts +41 -0
- package/src/media/types/SoundCloud.ts +99 -0
- package/src/media/types/Text.ts +178 -0
- package/src/media/types/Twitter.ts +109 -0
- package/src/media/types/Video.ts +14 -0
- package/src/media/types/Vimeo.ts +65 -0
- package/src/media/types/Website.ts +46 -0
- package/src/media/types/Wikipedia.ts +134 -0
- package/src/media/types/YouTube.ts +224 -0
- package/src/scss/Typography.scss +235 -0
- package/src/scss/VCO.StoryMap.Dark.scss +150 -0
- package/src/scss/VCO.StoryMap.scss +195 -0
- package/src/scss/Variables.Dark.scss +57 -0
- package/src/scss/Variables.scss +48 -0
- package/src/scss/core/Mixins.scss +54 -0
- package/src/scss/core/Reset.scss +206 -0
- package/src/scss/fonts/_font.base.scss +113 -0
- package/src/scss/fonts/font.abril-droidsans.scss +75 -0
- package/src/scss/fonts/font.amatic-andika.scss +76 -0
- package/src/scss/fonts/font.bitter-raleway.scss +92 -0
- package/src/scss/fonts/font.cairo.scss +79 -0
- package/src/scss/fonts/font.clicker-garamond.scss +97 -0
- package/src/scss/fonts/font.dancing-ledger.scss +75 -0
- package/src/scss/fonts/font.default.scss +9 -0
- package/src/scss/fonts/font.fjalla-average.scss +80 -0
- package/src/scss/fonts/font.georgia-helvetica.scss +58 -0
- package/src/scss/fonts/font.knightlab.scss +111 -0
- package/src/scss/fonts/font.lustria-lato.scss +80 -0
- package/src/scss/fonts/font.medula-lato.scss +73 -0
- package/src/scss/fonts/font.oldstandard.scss +94 -0
- package/src/scss/fonts/font.opensans-gentiumbook.scss +85 -0
- package/src/scss/fonts/font.playfair-faunaone.scss +88 -0
- package/src/scss/fonts/font.playfair.scss +89 -0
- package/src/scss/fonts/font.pt.scss +96 -0
- package/src/scss/fonts/font.roboto-megrim.scss +73 -0
- package/src/scss/fonts/font.rufina-sintony.scss +73 -0
- package/src/scss/fonts/font.ubuntu.scss +82 -0
- package/src/scss/fonts/font.unicaone-vollkorn.scss +90 -0
- package/src/scss/icons/Icons.scss +239 -0
- package/src/scss/map/VCO.ImageMarker.scss +23 -0
- package/src/scss/map/VCO.Map.scss +21 -0
- package/src/scss/map/VCO.MapMarker.scss +242 -0
- package/src/scss/map/openlayers/VCO.Map.OpenLayers.scss +126 -0
- package/src/scss/media/VCO.Media.scss +219 -0
- package/src/scss/media/types/VCO.Media.Blockquote.scss +76 -0
- package/src/scss/media/types/VCO.Media.IFrame.scss +11 -0
- package/src/scss/media/types/VCO.Media.Image.scss +13 -0
- package/src/scss/media/types/VCO.Media.Text.scss +98 -0
- package/src/scss/media/types/VCO.Media.Twitter.scss +87 -0
- package/src/scss/media/types/VCO.Media.Wikipedia.scss +65 -0
- package/src/scss/site/site.scss +748 -0
- package/src/scss/slider/VCO.Slide.scss +457 -0
- package/src/scss/slider/VCO.SlideNav.scss +332 -0
- package/src/scss/slider/VCO.StorySlider.scss +66 -0
- package/src/scss/snapmap/VCO.SnapMap.scss +103 -0
- package/src/scss/ui/VCO.Consent.scss +121 -0
- package/src/scss/ui/VCO.MenuBar.Button.scss +107 -0
- package/src/scss/ui/VCO.MenuBar.scss +20 -0
- package/src/scss/ui/VCO.Message.scss +101 -0
- package/src/site/site.ts +88 -0
- package/src/slider/Slide.ts +554 -0
- package/src/slider/SlideNav.ts +246 -0
- package/src/slider/StorySlider.ts +833 -0
- package/src/storymap/Consent.ts +471 -0
- package/src/storymap/StoryMap.ts +2118 -0
- package/src/storymap/content-state.ts +185 -0
- package/src/storymap/iiif.ts +1844 -0
- package/src/storymap/to-iiif.ts +921 -0
- package/src/storymap/validate.ts +257 -0
- package/src/types.ts +494 -0
- package/src/ui/MenuBar.ts +376 -0
- package/src/ui/Message.ts +127 -0
- package/src/ui/Swipable.ts +455 -0
- package/dist/assets/demo-CVQ7kFek.js +0 -1
- package/dist/assets/harness-C-VZV-ou.js +0 -1
- package/dist/assets/index-DDsPBPZA.js +0 -1
- package/dist/assets/main-DwbXrrYn.js +0 -17
package/src/types.ts
ADDED
|
@@ -0,0 +1,494 @@
|
|
|
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";
|
|
5
|
+
|
|
6
|
+
// ---------- Storymap data (exchange format) ----------
|
|
7
|
+
|
|
8
|
+
export interface StorymapSlideText {
|
|
9
|
+
headline?: string;
|
|
10
|
+
text?: string;
|
|
11
|
+
text_align?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface StorymapSlideLocation {
|
|
15
|
+
lat?: number;
|
|
16
|
+
lon?: number;
|
|
17
|
+
zoom?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Image region `[x, y, w, h]` in image pixels (IIIF xywh convention,
|
|
20
|
+
* StrollView-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
|
+
line?: boolean;
|
|
25
|
+
icon?: string;
|
|
26
|
+
iconSize?: number[];
|
|
27
|
+
image?: string;
|
|
28
|
+
use_custom_marker?: boolean;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type MediaTypeMatch = {
|
|
33
|
+
type: string;
|
|
34
|
+
name: string;
|
|
35
|
+
match_str: string;
|
|
36
|
+
// media type class constructor
|
|
37
|
+
cls: new (data: StorymapSlideMedia, options: Record<string, unknown>) => unknown;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export interface StorymapSlideMedia {
|
|
41
|
+
url?: string | null;
|
|
42
|
+
caption?: string | null;
|
|
43
|
+
credit?: string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Accessible description of the media, used as the image's `alt` when the
|
|
46
|
+
* media is an image. In IIIF this is the painting annotation's
|
|
47
|
+
* `accessibilitySummary`.
|
|
48
|
+
*/
|
|
49
|
+
alt?: string | null;
|
|
50
|
+
thumb?: string | null;
|
|
51
|
+
mediatype?: MediaTypeMatch | null;
|
|
52
|
+
/**
|
|
53
|
+
* WebVTT subtitle file for an audio or video slide, rendered as a
|
|
54
|
+
* `<track kind="subtitles">`. IIIF has no subtitle term, so this stays a
|
|
55
|
+
* storymap-JSON field; the authoring guide notes the
|
|
56
|
+
* `TextualBody` + `format: text/vtt` shape we also accept.
|
|
57
|
+
*/
|
|
58
|
+
subtitles?: string | null;
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Optional spoken narration for one slide, played through a dedicated audio
|
|
64
|
+
* element rather than the slide's media frame — a tour stop usually has a
|
|
65
|
+
* picture and a recording, not one media item. Storymap JSON only: the
|
|
66
|
+
* closest manifest spelling is a `Sound` body, which currently lands in
|
|
67
|
+
* `media.url` rather than here.
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* Per-slide marker presentation, consolidated. `location.*` keeps working as
|
|
71
|
+
* the legacy spelling and `marker.*` wins when present — see
|
|
72
|
+
* docs/plans/iiif-media-tours.md §2.
|
|
73
|
+
*
|
|
74
|
+
* In a IIIF manifest none of this is a `storymap:` term: it all arrives in the
|
|
75
|
+
* `navPlace` Feature's `properties` bag (`icon`, `iconSize`, `image`, `name`,
|
|
76
|
+
* `popup`, `audioBadge`), which is a GeoJSON foreign-member bag and so needs
|
|
77
|
+
* no vocabulary registration.
|
|
78
|
+
*/
|
|
79
|
+
export interface StorymapSlideMarker {
|
|
80
|
+
icon?: string;
|
|
81
|
+
iconSize?: number[];
|
|
82
|
+
image?: string;
|
|
83
|
+
/** The marker label; in a manifest this is `properties.name`. */
|
|
84
|
+
label?: string;
|
|
85
|
+
/** Show the popup card when this (active) marker is clicked. */
|
|
86
|
+
popup?: boolean;
|
|
87
|
+
/** Mark slides that carry narration or audio media with a small badge. */
|
|
88
|
+
audioBadge?: boolean;
|
|
89
|
+
[key: string]: unknown;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface StorymapSlideNarration {
|
|
93
|
+
url: string;
|
|
94
|
+
[key: string]: unknown;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface StorymapSlideBackground {
|
|
98
|
+
url?: string | null;
|
|
99
|
+
color?: string | null;
|
|
100
|
+
opacity?: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* One slide of a storymap.
|
|
105
|
+
*
|
|
106
|
+
* The nullable members (`| null`) are not decoration: the storymap JSON uses
|
|
107
|
+
* `null` to mean "explicitly absent" and the viewer seeds its own defaults
|
|
108
|
+
* with `null` before the data is merged in, so a plain `?` would not type.
|
|
109
|
+
*/
|
|
110
|
+
export interface StorymapSlide {
|
|
111
|
+
type?: string;
|
|
112
|
+
date?: string | Record<string, unknown> | null;
|
|
113
|
+
group?: string;
|
|
114
|
+
/**
|
|
115
|
+
* The language tag this slide's text was read in (§3.4 of
|
|
116
|
+
* docs/plans/iiif-interop.md). A IIIF manifest states its text as a
|
|
117
|
+
* language map; the reader picks the viewer's configured language and
|
|
118
|
+
* reports which one it used, so a host can offer a language switch.
|
|
119
|
+
* Absent for language-neutral (`none`) text, and for a single-language
|
|
120
|
+
* storymap.
|
|
121
|
+
*/
|
|
122
|
+
language?: string;
|
|
123
|
+
location?: StorymapSlideLocation | null;
|
|
124
|
+
media?: StorymapSlideMedia | null;
|
|
125
|
+
marker?: StorymapSlideMarker | null;
|
|
126
|
+
narration?: StorymapSlideNarration | null;
|
|
127
|
+
text?: StorymapSlideText | null;
|
|
128
|
+
background?: StorymapSlideBackground | string | null;
|
|
129
|
+
uniqueid?: string | null;
|
|
130
|
+
[key: string]: unknown;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface StorymapData {
|
|
134
|
+
uniqueid?: string;
|
|
135
|
+
slides: StorymapSlide[];
|
|
136
|
+
[key: string]: unknown;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface StorymapDataWrapper {
|
|
140
|
+
storymap: StorymapData;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// ---------- StoryMap / Map options ----------
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Custom tile layer/source factory (see
|
|
147
|
+
* `StorymapOptions.tile_source_factory`). `createDefault` runs the
|
|
148
|
+
* built-in `map_type` handling, so a factory can decorate or delegate.
|
|
149
|
+
*
|
|
150
|
+
* May return any `ol/layer/Layer` (used as-is — this is what lets a
|
|
151
|
+
* third-party layer such as an Allmaps `WarpedMapLayer` render), a bare
|
|
152
|
+
* `Source` (wrapped in a `TileLayer`), or `null`/`undefined` to fall
|
|
153
|
+
* through to the default `map_type` handling.
|
|
154
|
+
*/
|
|
155
|
+
export type TileSourceFactory = (
|
|
156
|
+
map_type: string,
|
|
157
|
+
context: { options: StorymapOptions; createDefault: () => TileLayer },
|
|
158
|
+
) => Layer | TileLayer | Source | null | undefined;
|
|
159
|
+
|
|
160
|
+
export interface StorymapOptions {
|
|
161
|
+
width: number;
|
|
162
|
+
height: number;
|
|
163
|
+
layout: string;
|
|
164
|
+
base_class: string;
|
|
165
|
+
default_bg_color: { r: number; g: number; b: number };
|
|
166
|
+
map_size_sticky: number;
|
|
167
|
+
map_center_offset: { left: number; top: number } | null;
|
|
168
|
+
start_at_slide: number;
|
|
169
|
+
call_to_action: boolean;
|
|
170
|
+
call_to_action_text: string;
|
|
171
|
+
menubar_height: number;
|
|
172
|
+
/** Show a fullscreen toggle button in the menubar (default: true) */
|
|
173
|
+
fullscreen: boolean;
|
|
174
|
+
/** Show the map overview button in the menubar (default: true) */
|
|
175
|
+
show_overview: boolean;
|
|
176
|
+
/** Show the back-to-the-beginning button in the menubar (default: true) */
|
|
177
|
+
show_back_to_start: boolean;
|
|
178
|
+
skinny_size: number;
|
|
179
|
+
duration: number;
|
|
180
|
+
ease: unknown;
|
|
181
|
+
trackResize: boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Navigate slides with arrow keys anywhere on the page (default false:
|
|
184
|
+
* arrows only work when the slide panel has focus). Form elements and
|
|
185
|
+
* the map itself (which pans) are always skipped. Read at construction.
|
|
186
|
+
*/
|
|
187
|
+
keyboard: boolean;
|
|
188
|
+
/** Re-fetch the source file on every load, bypassing caches (issue #417) */
|
|
189
|
+
nocache: boolean;
|
|
190
|
+
/** Advance slides automatically every N milliseconds; 0 disables (issue #380) */
|
|
191
|
+
autoplay: number;
|
|
192
|
+
/**
|
|
193
|
+
* With autoplay on, wait for the current slide's audio or video to end
|
|
194
|
+
* before advancing instead of using the `autoplay` millisecond timer,
|
|
195
|
+
* which stays as the fallback. Slides without playable media keep the
|
|
196
|
+
* timer, so a mixed story never stalls.
|
|
197
|
+
*/
|
|
198
|
+
autoplay_media: boolean;
|
|
199
|
+
/** Show a progress bar in the menubar (issue #247) */
|
|
200
|
+
show_progress: boolean;
|
|
201
|
+
/** Show the slide headline as a label on the active map marker (issue #243) */
|
|
202
|
+
marker_labels: boolean;
|
|
203
|
+
/** Default text alignment for slide text: left, center or right (issue #244) */
|
|
204
|
+
text_align: "left" | "center" | "right";
|
|
205
|
+
/** Override the overview fit center (issues #107, #271) */
|
|
206
|
+
map_overview_center: { lat: number; lon: number } | null;
|
|
207
|
+
map_type: string;
|
|
208
|
+
/**
|
|
209
|
+
* Custom OpenLayers tile layer/source factory (issue #473): consulted
|
|
210
|
+
* by the tile layer factory before the built-in `map_type` switch, for
|
|
211
|
+
* every base, overlay and minimap layer. Return a `TileLayer` (or a
|
|
212
|
+
* bare `Source`, auto-wrapped in one) for custom handling — e.g. WMS —
|
|
213
|
+
* or `null`/`undefined` to fall through to the default types.
|
|
214
|
+
* Constructor- and runtime-only: functions cannot ride storymap JSON.
|
|
215
|
+
*/
|
|
216
|
+
tile_source_factory: TileSourceFactory | null;
|
|
217
|
+
attribution: string;
|
|
218
|
+
/**
|
|
219
|
+
* Stacked raster overlays above the base map, below the route lines.
|
|
220
|
+
* Each entry accepts any `map_type` value (XYZ template, `osm:style`,
|
|
221
|
+
* …) plus per-layer presentation; see StorymapOverlayLayer. Empty
|
|
222
|
+
* (default) means base map only.
|
|
223
|
+
*/
|
|
224
|
+
overlays: StorymapOverlayLayer[];
|
|
225
|
+
map_mini: boolean;
|
|
226
|
+
map_as_image: boolean;
|
|
227
|
+
map_access_token: string;
|
|
228
|
+
map_background_color: string;
|
|
229
|
+
/**
|
|
230
|
+
* Landscape map layout: `"full"` (default) spans the whole width with the
|
|
231
|
+
* slide panel fading in over it (the map view is offset so markers clear
|
|
232
|
+
* the panel); `"left"` limits the map to the left, visible half with an
|
|
233
|
+
* opaque slide panel — no offset needed, fits and constraints align with
|
|
234
|
+
* the visible area directly. Portrait layouts are unaffected.
|
|
235
|
+
*/
|
|
236
|
+
map_area: "full" | "left";
|
|
237
|
+
/**
|
|
238
|
+
* Limit the map to a bounding box `[west, south, east, north]` (lon/lat;
|
|
239
|
+
* raw image pixel coordinates for image-space maps). The view center is
|
|
240
|
+
* constrained to the box; `null` (default) leaves the map unconstrained.
|
|
241
|
+
*/
|
|
242
|
+
map_bbox: number[] | null;
|
|
243
|
+
/**
|
|
244
|
+
* Constrain the minimap overview to a bounding box `[west, south, east,
|
|
245
|
+
* north]` in lon/lat (mercator maps only); `null` (default) leaves the
|
|
246
|
+
* overview unconstrained.
|
|
247
|
+
*/
|
|
248
|
+
overview_extent: [number, number, number, number] | null;
|
|
249
|
+
/**
|
|
250
|
+
* Legacy zoomify image pyramid (map_type: "zoomify"): the tiles are
|
|
251
|
+
* placed at the standard mercator tile positions, stretched from the
|
|
252
|
+
* world's top-left corner.
|
|
253
|
+
*/
|
|
254
|
+
zoomify?:
|
|
255
|
+
| {
|
|
256
|
+
path?: string;
|
|
257
|
+
width?: number;
|
|
258
|
+
height?: number;
|
|
259
|
+
tolerance?: number;
|
|
260
|
+
attribution?: string;
|
|
261
|
+
}
|
|
262
|
+
| boolean;
|
|
263
|
+
/**
|
|
264
|
+
* Ask for permission before loading anything from external services
|
|
265
|
+
* (media embeds, map tiles, external font CSS) — GDPR consent mode.
|
|
266
|
+
* Decisions are remembered per service in `localStorage` under
|
|
267
|
+
* `storymapjs-consent` with no expiry: clearing site data is what makes
|
|
268
|
+
* the viewer ask again.
|
|
269
|
+
*/
|
|
270
|
+
consent_required: boolean;
|
|
271
|
+
/** Slide text color override, sets --vco-color-text (issue #177) */
|
|
272
|
+
text_color: string;
|
|
273
|
+
/** Slide panel background color override (issue #177) */
|
|
274
|
+
text_background_color: string;
|
|
275
|
+
/** Show the great-circle route distance in the menubar (issue #341) */
|
|
276
|
+
show_distance: boolean;
|
|
277
|
+
/**
|
|
278
|
+
* Raw OpenLayers map configuration. `controls` replaces the StoryMapJS
|
|
279
|
+
* defaults, `interactions` are *added to* the viewer's own pan/zoom
|
|
280
|
+
* interactions, and `view` is merged over the computed default view
|
|
281
|
+
* and `element` (an HTMLElement or DOM id) replaces the auto-created map
|
|
282
|
+
* container div.
|
|
283
|
+
*/
|
|
284
|
+
map_options: StorymapMapOptions;
|
|
285
|
+
calculate_zoom: boolean;
|
|
286
|
+
line_follows_path: boolean;
|
|
287
|
+
line_color: string;
|
|
288
|
+
line_color_inactive: string;
|
|
289
|
+
line_join: string;
|
|
290
|
+
line_weight: number;
|
|
291
|
+
line_opacity: number;
|
|
292
|
+
line_dash: string;
|
|
293
|
+
show_lines: boolean;
|
|
294
|
+
show_history_line: boolean;
|
|
295
|
+
use_custom_markers: boolean;
|
|
296
|
+
iiif: { url: string; attribution: string };
|
|
297
|
+
tilejson?: StorymapTilejson;
|
|
298
|
+
/**
|
|
299
|
+
* The `seeAlso` targets a IIIF manifest points at, recorded but not
|
|
300
|
+
* fetched — see `loadSeeAlso()` (§5.2 of docs/plans/iiif-interop.md).
|
|
301
|
+
*/
|
|
302
|
+
see_also?: { id: string; type: string }[];
|
|
303
|
+
map_height: number;
|
|
304
|
+
storyslider_height: number;
|
|
305
|
+
slide_padding_lr: number;
|
|
306
|
+
slide_default_fade: string;
|
|
307
|
+
menubar_default_y: number;
|
|
308
|
+
script_path: string;
|
|
309
|
+
font_css: string;
|
|
310
|
+
language: string;
|
|
311
|
+
api_key_flickr: string;
|
|
312
|
+
[key: string]: unknown;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// ---------- animation ----------
|
|
316
|
+
|
|
317
|
+
export interface AnimateOptions extends Record<string, unknown> {
|
|
318
|
+
duration?: number;
|
|
319
|
+
easing?: unknown;
|
|
320
|
+
complete?: unknown;
|
|
321
|
+
left?: string | number;
|
|
322
|
+
top?: string | number;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export interface AnimationHandle {
|
|
326
|
+
stop: (jump?: boolean) => void;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// ---------- map ----------
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* TileJSON 2.1 tile source metadata, from a manifest's map configuration
|
|
333
|
+
* service (§2.9 of docs/plans/iiif-interop.md).
|
|
334
|
+
*
|
|
335
|
+
* This is how a manifest states a tile source: `tiles` is the URL template and
|
|
336
|
+
* the rest is the standard metadata around it, where a keyword basemap
|
|
337
|
+
* (`osm`, `stadia`, `iiif`, …) has no such thing to say. `minzoom`,
|
|
338
|
+
* `maxzoom`, `bounds` and `scheme` constrain the source; `center` and `zoom`
|
|
339
|
+
* set the initial view.
|
|
340
|
+
*/
|
|
341
|
+
export interface StorymapTilejson {
|
|
342
|
+
/** URL template, e.g. `https://tiles.example.org/{z}/{x}/{y}.png` */
|
|
343
|
+
tiles: string | string[];
|
|
344
|
+
/** Lowest zoom level the source has tiles for */
|
|
345
|
+
minzoom?: number;
|
|
346
|
+
/** Highest zoom level the source has tiles for */
|
|
347
|
+
maxzoom?: number;
|
|
348
|
+
/** `[west, south, east, north]`, WGS84 lon/lat, of the covered area */
|
|
349
|
+
bounds?: [number, number, number, number];
|
|
350
|
+
/** `xyz` (default) or `tms`, which flips the tile row order */
|
|
351
|
+
scheme?: "xyz" | "tms";
|
|
352
|
+
/** `[lon, lat, zoom]` of the map's default view */
|
|
353
|
+
center?: [number, number, number];
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* A stacked raster overlay above the base map (StorymapOptions.overlays).
|
|
358
|
+
* Presentation is declarative: hosts no longer need to reach into the
|
|
359
|
+
* layer objects for blend modes, clips or stacking tweaks.
|
|
360
|
+
*/
|
|
361
|
+
export interface StorymapOverlayLayer {
|
|
362
|
+
/**
|
|
363
|
+
* Any `map_type` value the tile layer factory accepts. Required unless
|
|
364
|
+
* the entry carries a `georeference` (a placed IIIF image instead of
|
|
365
|
+
* a tile source).
|
|
366
|
+
*/
|
|
367
|
+
map_type?: string;
|
|
368
|
+
/** Layer opacity 0..1 (default 1) */
|
|
369
|
+
opacity?: number;
|
|
370
|
+
/** Initial visibility (default true) */
|
|
371
|
+
visible?: boolean;
|
|
372
|
+
/** Extra attribution fragment, listed while the overlay is visible */
|
|
373
|
+
attribution?: string;
|
|
374
|
+
/**
|
|
375
|
+
* CSS class for the layer container. OpenLayers paints every layer
|
|
376
|
+
* with the same class into one shared div/canvas, so a distinct
|
|
377
|
+
* class isolates this layer (e.g. for blend modes). The class
|
|
378
|
+
* replaces the default wholesale, so keep the `ol-layer` token
|
|
379
|
+
* (e.g. `"ol-layer historic-sheet"`) unless you know why not.
|
|
380
|
+
*/
|
|
381
|
+
className?: string;
|
|
382
|
+
/** CSS mix-blend-mode for the layer container (needs className) */
|
|
383
|
+
blendMode?: string;
|
|
384
|
+
/** Clip box `[west, south, east, north]` in lon/lat (mercator maps) */
|
|
385
|
+
extent?: [number, number, number, number];
|
|
386
|
+
/**
|
|
387
|
+
* IIIF Georeference Extension placement instead of a tile source. The
|
|
388
|
+
* ground control points are fitted affinely and the image is placed on
|
|
389
|
+
* the geographic map, so this is the manifest-side equivalent of a
|
|
390
|
+
* georeferenced raster overlay.
|
|
391
|
+
*/
|
|
392
|
+
georeference?: StorymapGeoreference;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* A IIIF Georeference Extension annotation body plus the image it places
|
|
397
|
+
* (`overlays[].georeference`). The `body` is the annotation payload of
|
|
398
|
+
* `iiif.io/api/extension/georef` verbatim: a GeoJSON FeatureCollection of
|
|
399
|
+
* ground control points pairing `properties.resourceCoords` (image pixels)
|
|
400
|
+
* with `geometry.coordinates` (WGS84 lon/lat), optionally carrying a
|
|
401
|
+
* `transformation` hint.
|
|
402
|
+
*
|
|
403
|
+
* The viewer fits the affine (first-order polynomial) case and places the
|
|
404
|
+
* image with OpenLayers' reprojection, which requires an axis-aligned
|
|
405
|
+
* placement; rotated or skewed sheets, higher-order polynomials and thin
|
|
406
|
+
* plate splines are reported and skipped — see the "Geo-referenced layers"
|
|
407
|
+
* section of docs/storymap-as-iiif-manifest.md.
|
|
408
|
+
*/
|
|
409
|
+
export interface StorymapGeoreference {
|
|
410
|
+
/** IIIF Image API service base (or a full-size image URL) to place */
|
|
411
|
+
url: string;
|
|
412
|
+
/** Image width in pixels (the resourceCoords space) */
|
|
413
|
+
width: number;
|
|
414
|
+
/** Image height in pixels */
|
|
415
|
+
height: number;
|
|
416
|
+
/** Georeference annotation body: the GCP FeatureCollection */
|
|
417
|
+
body: StorymapGeoreferenceBody;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
export interface StorymapGeoreferenceBody {
|
|
421
|
+
type?: string;
|
|
422
|
+
/** `polynomial` with `order: 1`, or absent; other values are skipped */
|
|
423
|
+
transformation?: { type?: string; options?: { order?: number } };
|
|
424
|
+
features: StorymapGroundControlPoint[];
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/** One ground control point: an image pixel paired with a WGS84 position */
|
|
428
|
+
export interface StorymapGroundControlPoint {
|
|
429
|
+
type?: string;
|
|
430
|
+
properties?: { resourceCoords?: [number, number] };
|
|
431
|
+
geometry?: { type?: string; coordinates?: number[] };
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/** OpenLayers passthrough options (see StorymapOptions.map_options) */
|
|
435
|
+
export interface StorymapMapOptions {
|
|
436
|
+
/** HTMLElement or DOM id that becomes the real map container */
|
|
437
|
+
element?: HTMLElement | string;
|
|
438
|
+
/** Merged over the default view configuration */
|
|
439
|
+
view?: Record<string, unknown>;
|
|
440
|
+
/** Replaces the default (empty) controls list */
|
|
441
|
+
controls?: unknown[];
|
|
442
|
+
/**
|
|
443
|
+
* Added to the viewer's own pan/zoom interactions (not a replacement:
|
|
444
|
+
* the viewer's defaults are always added). `controls` *is* a
|
|
445
|
+
* replacement, since the viewer adds none of its own.
|
|
446
|
+
*/
|
|
447
|
+
interactions?: unknown[];
|
|
448
|
+
/** Any other ol/Map constructor option (layers, pixelRatio, ...) */
|
|
449
|
+
[key: string]: unknown;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* A resolved geographic coordinate.
|
|
454
|
+
*
|
|
455
|
+
* `lat`/`lon` are required: this type is for points the map can actually
|
|
456
|
+
* focus on. A *slide* may carry a `location` without coordinates (an image
|
|
457
|
+
* region, an icon only) — that is `StorymapSlideLocation`, which keeps them
|
|
458
|
+
* optional. `lng` is accepted as a legacy alias on input only.
|
|
459
|
+
*/
|
|
460
|
+
export interface LatLngLiteral {
|
|
461
|
+
lat: number;
|
|
462
|
+
lon: number;
|
|
463
|
+
lng?: number;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* A marker's data: the slide it was created from, plus the `real_marker` flag
|
|
468
|
+
* the marker sets once it has confirmed numeric lat/lon. A separate interface
|
|
469
|
+
* used to drift from `StorymapSlide` (narrower `text`, its own `location`),
|
|
470
|
+
* which then made `Map._createMarker(slide)` unassignable.
|
|
471
|
+
*/
|
|
472
|
+
export type MapMarkerData = StorymapSlide & {
|
|
473
|
+
real_marker?: boolean;
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
export type IconSpec = {
|
|
477
|
+
url: string;
|
|
478
|
+
size: number[];
|
|
479
|
+
anchor: number[];
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
// ---------- media ----------
|
|
483
|
+
|
|
484
|
+
export interface MediaState {
|
|
485
|
+
loaded: boolean;
|
|
486
|
+
[key: string]: unknown;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
export interface LanguageStrings {
|
|
490
|
+
[key: string]: unknown;
|
|
491
|
+
loading: string;
|
|
492
|
+
wikipedia: string;
|
|
493
|
+
start: string;
|
|
494
|
+
}
|