@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/dist/docs/readme.html
CHANGED
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
<li><a class="button" href="./readme.html">README</a></li>
|
|
37
37
|
<li><a class="button" href="./migration.html">Migration guide</a></li>
|
|
38
38
|
<li><a class="button" href="./iiif.html">IIIF docs</a></li>
|
|
39
|
+
<li><a class="button" href="./authoring.html">Authoring</a></li>
|
|
40
|
+
<li><a class="button" href="./events.html">Events</a></li>
|
|
39
41
|
<li><a class="button" href="./api/index.html">API docs</a></li>
|
|
40
42
|
<li><a class="button" href="../index.html#help">Help</a></li>
|
|
41
43
|
</ul>
|
|
@@ -54,7 +56,9 @@ affiliated with, or supported by Northwestern University Knight Lab.</p>
|
|
|
54
56
|
files (or IIIF Presentation manifests) with TypeScript + Vite + OpenLayers.
|
|
55
57
|
There is no authoring tool — create your storymap JSON by hand or with your
|
|
56
58
|
own code, and see <code>docs/</code> for the migration notes from the original
|
|
57
|
-
Knight Lab release
|
|
59
|
+
Knight Lab release. The library also exports <code>storymapToManifest()</code>, which
|
|
60
|
+
produces a IIIF manifest from a storymap document (<code>npm run convert:iiif</code>
|
|
61
|
+
does the same from the command line; see <code>docs/storymap-as-iiif-manifest.md</code>).</p>
|
|
58
62
|
<h2>Development</h2>
|
|
59
63
|
<p>See docs/DEVELOPMENT.md to get setup for local development of StoryMapJS. This
|
|
60
64
|
repository is the viewer library only (TypeScript + Vite + OpenLayers);
|
|
@@ -72,8 +76,17 @@ value of the storymap's <code>language</code> option must match the file nam
|
|
|
72
76
|
<p>Large images served over the IIIF Image API are rendered so when set to be map_as_image the entire image is shown. When set as cartography the zoom will set so that all the markers fit.</p>
|
|
73
77
|
<p>Points are set to only display on mouseover in image mode, but you can set map_as_image to false in the config options to always show the points. The points are hidden when the intent is an image so that nothing obstructs the image the viewer is looking at. Looking at a painting is hard with a bunch of points on it.</p>
|
|
74
78
|
<h2>Map Options</h2>
|
|
75
|
-
<p>To disable connecting lines on maps set <code>
|
|
76
|
-
options (the default <code>
|
|
79
|
+
<p>To disable connecting lines on maps set <code>show_lines: false</code> in the storymap
|
|
80
|
+
options (the default <code>true</code> renders cartography with <code>show_history_line</code>).
|
|
81
|
+
<code>map_as_image: true</code> is something else: image-map mode, only meaningful with
|
|
82
|
+
<code>map_type: "iiif"</code> (the image itself becomes the map).</p>
|
|
83
|
+
<p><code>storymap.map</code> is the raw OpenLayers map, typed with the re-exported <code>ol</code>
|
|
84
|
+
types, and <code>getBaseLayer()</code>, <code>getOverlayLayers()</code>, <code>getMinimap()</code>,
|
|
85
|
+
<code>getMarkers()</code> and friends hand out the layers the viewer built. Listen for
|
|
86
|
+
<code>imageready</code> to run code against the real imagery, and call
|
|
87
|
+
<code>storymap.dispose()</code> when the embedding view goes away — see
|
|
88
|
+
<a href="./migration.html#reaching-the-map-layers-and-markers">docs/migration-from-knightlab.md</a>
|
|
89
|
+
for the full surface.</p>
|
|
77
90
|
<p>The menubar buttons can be disabled individually:</p>
|
|
78
91
|
<pre><code>show_overview: false, // map overview button
|
|
79
92
|
show_back_to_start: false, // back to the beginning button
|
|
@@ -92,6 +105,72 @@ show_lines: true,
|
|
|
92
105
|
show_history_line: true,
|
|
93
106
|
</code></pre>
|
|
94
107
|
<p>To disable zoom calculation/edit zoom level set calculate_zoom to false in the config options.</p>
|
|
108
|
+
<h3>More data options</h3>
|
|
109
|
+
<p>Beyond the map options above, the storymap data takes <code>overlays[]</code>
|
|
110
|
+
(stacked raster layers over the basemap), <code>tilejson</code> (a TileJSON source for
|
|
111
|
+
the base layer), <code>overview_extent</code> (the overview slide's bounds),
|
|
112
|
+
<code>keyboard</code> (page-wide arrow-key navigation for multi-viewer pages),
|
|
113
|
+
per-slide <code>marker: { popup, audioBadge }</code> (the active marker's card, openable
|
|
114
|
+
via <code>storymap.openMarkerPopup(n)</code>, and the narration/audio dot) and
|
|
115
|
+
<code>narration: { url }</code> per slide. <code>autoplay_media</code> is global (wait for slide
|
|
116
|
+
media to end while autoplaying); the per-slide dwell is <code>slidetimeout</code>.
|
|
117
|
+
All are validated
|
|
118
|
+
against <code>schema/storymap.schema.json</code> — read it (or <code>src/types.ts</code>) for the
|
|
119
|
+
full list with defaults.</p>
|
|
120
|
+
<p><code>show_layers_control: true</code> adds a menubar disclosure button listing the
|
|
121
|
+
<code>overlays[]</code> as checkboxes and <code>basemaps[]</code> as basemap radios, so the
|
|
122
|
+
visitor can switch layers without touching code.</p>
|
|
123
|
+
<p><code>theme: "dark"</code> forces the dark palette, <code>"light"</code> pins the light one;
|
|
124
|
+
unset, the widget follows <code>prefers-color-scheme</code>.</p>
|
|
125
|
+
<h3>Slideshow-style tours</h3>
|
|
126
|
+
<p>Slides can carry per-slide presentation for image tours (a stop can restyle
|
|
127
|
+
the view while it is active; everything is optional and validated against
|
|
128
|
+
<code>schema/storymap.schema.json</code>):</p>
|
|
129
|
+
<pre><code>location: {
|
|
130
|
+
region: [x, y, w, h], // image-pixel stop (IIIF xywh); negative origins clamp to the canvas
|
|
131
|
+
rotation: 45, // view rotation in degrees clockwise
|
|
132
|
+
filter: { sepia: 40 }, // brightness/contrast/saturate 0-200 (%), hueRotate -180-180 (°), sepia 0-100 (%), blur 0-20 (px)
|
|
133
|
+
mask: { x: 0.1, y: 0.1, w: 0.8, h: 0.8, opacity: 0.5 }, // spotlight mask (fractions) + color/invert
|
|
134
|
+
basemap: "osm:bright", // per-slide basemap (any map_type, IIIF info.json URL or image file)
|
|
135
|
+
},
|
|
136
|
+
narration: { url, loop, offset, play: "auto"|"click", stopOnExit, stopAllPrevious },
|
|
137
|
+
slidetimeout: 9000, // per-slide autoplay dwell in ms (0 holds); default is the global autoplay
|
|
138
|
+
imgoverlay: { url, size, extent, opacity }, // image overlay while the slide is active
|
|
139
|
+
</code></pre>
|
|
140
|
+
<p>Audio/video media take the same <code>offset</code>/<code>loop</code>/<code>play</code>/<code>stopOnExit</code> flags
|
|
141
|
+
on the slide's <code>media</code> object (<code>stopAllPrevious</code> is narration-only).</p>
|
|
142
|
+
<p>When a slide's IIIF <code>info.json</code> cannot be loaded, <code>iiif: { width, height, fallbackUrl }</code> paints the static image instead of a blank basemap. Without
|
|
143
|
+
stated dimensions the viewer probes the fallback image's natural size first,
|
|
144
|
+
but only for slideshow tours (15s timeout); other documents keep the logged
|
|
145
|
+
error path. Per-slide static basemaps (<code>image_srv</code> pointing at a plain
|
|
146
|
+
image file, absolute or same-origin relative) probe the same way, and a
|
|
147
|
+
failed <code>info.json</code> fetch falls back to a probed static image in place.</p>
|
|
148
|
+
<p>The player chrome is opt-in storymap options (absent means the default
|
|
149
|
+
layout): <code>textmode: "left"|"right"|"bottom"</code> with <code>textsize</code> (10–80 %,
|
|
150
|
+
bottom dock only — the player drops side-dock sizes too),
|
|
151
|
+
<code>progressbar: "bar"|"dots"|"squares"|"block"|"thinblock"|"off"</code> (<code>true</code>
|
|
152
|
+
means <code>"bar"</code>, <code>false</code> means hidden),
|
|
153
|
+
<code>fxmode: "slide"|"fade"|"none"</code>, <code>mode: "static"</code> (stacked reading list with
|
|
154
|
+
scroll-spy map sync), <code>hudcolor</code>/<code>hudbgcolor</code>/<code>hudopacity</code>,
|
|
155
|
+
<code>shownav</code>/<code>show_headings</code>/<code>show_scrollbars</code>/<code>show_info</code> toggles and
|
|
156
|
+
<code>viewerheight: "400px"</code>.</p>
|
|
157
|
+
<p><strong>IIIF round-trip:</strong> the per-slide fields do survive — <code>rotation</code>,
|
|
158
|
+
<code>filter</code>, <code>mask</code>, <code>basemap</code>, <code>slidetimeout</code>, <code>imgoverlay</code>, <code>provenance</code>
|
|
159
|
+
and the playback bags travel as <code>storymap:</code> terms (see
|
|
160
|
+
<a href="./iiif.html">docs/storymap-as-iiif-manifest.md</a>).
|
|
161
|
+
The player chrome does <strong>not</strong>: it has no IIIF vocabulary and is
|
|
162
|
+
translator-only (a storymap→manifest→storymap cycle drops it).</p>
|
|
163
|
+
<p>These presentation fields render <strong>only for slideshow tours</strong> (documents
|
|
164
|
+
loaded from that format, which set the internal <code>slideshow_source</code> marker).
|
|
165
|
+
Hand-written storymap documents and IIIF manifests keep the long-standing
|
|
166
|
+
rendering even when they name the new keys — captions always show, the
|
|
167
|
+
autoplay interval stays global, the panel keeps its default dock. Hosts may
|
|
168
|
+
pass <code>slideshow_source: true</code> explicitly as an escape hatch (e.g. in tests).</p>
|
|
169
|
+
<p>Slideshow tours (W3C <code>AnnotationCollection</code> documents) load directly — by
|
|
170
|
+
object, file or URL, following <code>next</code> pages — or convert offline with
|
|
171
|
+
<code>npm run convert:slideshow -- [--settings settings.json] [--out out.json] <tour-url-or-file></code>
|
|
172
|
+
(see <a href="docs/slideshow.md">docs/slideshow.md</a> for the field mapping,
|
|
173
|
+
player-settings handling and loss table).</p>
|
|
95
174
|
<p>Images can now be used in place of map pins.
|
|
96
175
|
Use <code>image</code> inside the location object and include a url to use, together with
|
|
97
176
|
<code>use_custom_marker: true</code> in the location object (or set <code>use_custom_markers: true</code> globally in the storymap options). Same goes for custom icons except you
|
|
@@ -115,18 +194,28 @@ map_type: "https://tiles.openfreemap.org/styles/bright", // vector st
|
|
|
115
194
|
</code></pre>
|
|
116
195
|
<p>Any value containing <code>{z}</code> renders as a raster XYZ layer; a path without <code>{z}</code>
|
|
117
196
|
that looks like a URL/path renders as a vector style layer; anything else falls
|
|
118
|
-
back to classic OSM raster
|
|
197
|
+
back to classic OSM raster — except <code>"none"</code>, which builds no map at all and
|
|
198
|
+
runs the story as text and media only. A full template naming a known provider
|
|
199
|
+
(<code>https://tile.openstreetmap.org/{z}/{x}/{y}.png</code>) is credited to that
|
|
200
|
+
provider; anything else gets the generic "Map data" line (add your own via
|
|
201
|
+
<code>attribution</code>).</p>
|
|
119
202
|
<h3>Switching the basemap at runtime</h3>
|
|
120
203
|
<p><code>storymap.setMapOption("map_type", next)</code> / <code>setMapOptions({...})</code> rebuilds the
|
|
121
204
|
main tile layer <strong>and</strong> the minimap (<code>ol/control/OverviewMap</code>) layer, keeping
|
|
122
205
|
the overview fitted to the marker bounds (zoomify/IIIF extents preserved). The
|
|
123
206
|
current slide is re-fitted after the swap.</p>
|
|
124
207
|
<h3>Icons</h3>
|
|
125
|
-
<p>Default pins use the bundled <code>vco-icons</code> font (<code>dist/css/icons/</code
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
208
|
+
<p>Default pins use the bundled <code>vco-icons</code> font (<code>dist/css/icons/</code>). The SCSS
|
|
209
|
+
source uses the absolute public path (<code>/css/icons/...</code>) so <code>vite dev</code> serves
|
|
210
|
+
the fonts directly; <code>vite build</code> rewrites them to relative <code>./icons/...</code> in
|
|
211
|
+
<code>dist/css/storymap.css</code>, so pins render on subpath deploys, for bundler
|
|
212
|
+
consumers and on <code>file://</code>/Electron hosts without extra configuration.
|
|
213
|
+
Import the stylesheet once
|
|
214
|
+
(<code>import "@projektemacher/storymapjs/css/storymap.css"</code>).</p>
|
|
215
|
+
<p>Font themes (<code>font_css: "stock:<name>"</code>) resolve via <code>import.meta.url</code>, so
|
|
216
|
+
they only work script-tagged, unbundled. A bundler consumer imports the theme
|
|
217
|
+
instead (<code>import "@projektemacher/storymapjs/css/fonts/font.default.css"</code>)
|
|
218
|
+
and passes <code>font_css: false</code> for no injected <code><link></code>.</p>
|
|
130
219
|
<h2>Custom HTML in slide content</h2>
|
|
131
220
|
<p>Slide text is rendered as HTML: the <code>text</code> (and <code>headline</code>) fields accept
|
|
132
221
|
arbitrary markup. If the text contains no <code><p></code> tag, it is wrapped in one
|
|
@@ -138,27 +227,70 @@ images, lists, emphasis and spans in your slides, e.g.:</p>
|
|
|
138
227
|
}
|
|
139
228
|
</code></pre>
|
|
140
229
|
<p>The <code>vco-note</code> span renders as a small grey note, like the built-in credits.</p>
|
|
141
|
-
<p><strong>Caution:</strong> the text is
|
|
142
|
-
|
|
230
|
+
<p><strong>Caution:</strong> the text is sanitized, but sanitizing is a mitigation rather
|
|
231
|
+
than a guarantee. Prose and media formatting survive (<code>class</code>, <code>alt</code>, <code>width</code>,
|
|
232
|
+
table attributes, and so on), scripts and other executable tags are dropped
|
|
233
|
+
with their contents, event-handler attributes are stripped, every URL
|
|
234
|
+
attribute is checked to be <code>http(s)</code>, and <code><iframe></code> embeds are rebuilt into
|
|
235
|
+
a sandboxed, <code>no-referrer</code> element. <code>style</code>, <code>id</code> and <code>name</code> are <em>not</em> allowed,
|
|
236
|
+
and a link's <code>target</code> is always forced to <code>_blank</code>. The same sanitizer covers
|
|
237
|
+
media credit, media caption, the navigation headline and the map attribution
|
|
238
|
+
line. Still: only load storymaps from sources you trust.</p>
|
|
143
239
|
<h2>GDPR consent for external services</h2>
|
|
144
240
|
<p>Set the <code>consent_required</code> option to <code>true</code> to ask for permission before
|
|
145
241
|
anything is loaded from external services (media embeds such as YouTube,
|
|
146
|
-
Twitter or SoundCloud, map tiles, and external font
|
|
242
|
+
Twitter or SoundCloud, slide narration audio, map tiles, and external font
|
|
243
|
+
CSS):</p>
|
|
147
244
|
<pre><code>{
|
|
148
245
|
"consent_required": true,
|
|
149
246
|
...
|
|
150
247
|
}
|
|
151
248
|
</code></pre>
|
|
152
249
|
<p>Each service asks with an Allow/Deny panel; answering one panel resolves every
|
|
153
|
-
pending panel of the same service.
|
|
154
|
-
cookie, the panel is skipped entirely. Denied services show a placeholder
|
|
250
|
+
pending panel of the same service. Denied services show a placeholder
|
|
155
251
|
instead of the media, and the map renders without tiles until they are
|
|
156
|
-
allowed
|
|
157
|
-
|
|
252
|
+
allowed.</p>
|
|
253
|
+
<p>Before the story loads, one dialog lists every external service it uses (map
|
|
254
|
+
tiles, media services including slide narration, external fonts) with three
|
|
255
|
+
choices: <strong>Allow all</strong>, <strong>Decline all</strong>, or a decision per service. A story
|
|
256
|
+
with no map (<code>map_type: "none"</code>) has no tile row to answer. The dialog is
|
|
257
|
+
skipped once every service has a stored decision; per-service panels still
|
|
258
|
+
appear for services discovered later (e.g. a preloaded slide).</p>
|
|
259
|
+
<p>Decisions are stored in <code>localStorage</code> under <code>storymapjs-consent</code> and have no
|
|
260
|
+
expiry — clearing site data asks again.</p>
|
|
261
|
+
<p>The consent labels are <strong>not</strong> fully translated. <code>src/language/locale/en.json</code>
|
|
262
|
+
defines every string (34 keys across 29 locale files: English plus 28
|
|
263
|
+
translations). German is missing 1 key, most locales are missing 9 (the audio
|
|
264
|
+
badge, autoplay, layer-switcher, iframe-title and narration-consent strings),
|
|
265
|
+
and five locales (<code>et</code>, <code>is</code>, <code>nn</code>, <code>ur</code>, <code>sr</code>) are missing 18–19 (additionally
|
|
266
|
+
the fullscreen, consent-dialog, error and overview strings). Run
|
|
267
|
+
<code>npm run check:locales</code> to see the current state — it reports the gap per
|
|
268
|
+
locale and is expected to be runnable without failing.</p>
|
|
158
269
|
<h2>Troubleshooting</h2>
|
|
159
270
|
<p>If a storymap fails to render, open the browser console: the viewer logs
|
|
160
271
|
fetch and validation errors (e.g. "could not load storymap data from ...").
|
|
161
|
-
The <code>error</code> event also fires for programmatic consumers
|
|
272
|
+
The <code>error</code> event also fires for programmatic consumers. The full event
|
|
273
|
+
reference (payloads included) is <a href="./events.html">docs/events.md</a>.</p>
|
|
274
|
+
<h2>Accessibility</h2>
|
|
275
|
+
<p>Supported, and covered by tests: text alternatives on slide images
|
|
276
|
+
(decorative <code>alt=""</code> included); real <code><button></code> menubar actions and slide
|
|
277
|
+
navigation; polite live-region slide announcements; reduced-motion handling
|
|
278
|
+
of the slide glide and autoplay; an embed page that does not disable zoom;
|
|
279
|
+
sanitized author tables that keep their semantics; slides hidden from
|
|
280
|
+
assistive tech while inactive (<code>aria-hidden</code> + <code>inert</code>), with a layer
|
|
281
|
+
switcher built from native checkboxes, radios and fieldsets; keyboard
|
|
282
|
+
operable map pins and message dismissal; a skip link to the slide content;
|
|
283
|
+
an autoplay pause/resume toggle; slide text pronounced in its own language
|
|
284
|
+
(<code>lang</code>); consent dialogs exposed with labels and focus; media errors
|
|
285
|
+
announced as alerts; and a motion kill-switch that also honors an
|
|
286
|
+
OS reduced-motion toggle flipped mid-story.</p>
|
|
287
|
+
<p>Known limitations (not fixed here): map markers are pointer-only; audio and
|
|
288
|
+
video have no viewer-side captions or transcripts; narration ships without a
|
|
289
|
+
transcript; focus moves only when the layer panel closes with Escape; labels
|
|
290
|
+
and announcements are hardcoded English; several muted text colors fall
|
|
291
|
+
below 4.5:1; third-party embeds are the vendor's conformance. No VPAT or
|
|
292
|
+
ACR is claimed — §508 conformance is decided per deliverable by an
|
|
293
|
+
external audit.</p>
|
|
162
294
|
<h2>Bundled credentials</h2>
|
|
163
295
|
<p>The viewer ships no credentials. Mapbox/Stadia tiles need a token passed via
|
|
164
296
|
<code>map_access_token</code>, and <code>flickr.com/photos</code> API URLs need <code>api_key_flickr</code>
|
package/dist/embed/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
8
8
|
<meta name="mobile-web-app-capable" content="yes">
|
|
9
9
|
<meta name="apple-touch-fullscreen" content="yes">
|
|
10
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0
|
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
11
11
|
<link rel="stylesheet" href="../css/storymap.css">
|
|
12
12
|
<style>
|
|
13
13
|
html, body {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
}
|
|
64
64
|
.storymap-url-card button {
|
|
65
65
|
padding: 8px 16px;
|
|
66
|
+
min-height: 44px;
|
|
66
67
|
font-size: 1rem;
|
|
67
68
|
border: 1px solid #333;
|
|
68
69
|
border-radius: 4px;
|
|
@@ -128,6 +129,8 @@
|
|
|
128
129
|
const showEmbedError = (message) => {
|
|
129
130
|
const el = document.createElement("div");
|
|
130
131
|
el.className = "vco-consent-blocked";
|
|
132
|
+
// announce to AT (issue #385 wave)
|
|
133
|
+
el.setAttribute("role", "alert");
|
|
131
134
|
// inline fallback styles in case the widget CSS did not load
|
|
132
135
|
el.style.cssText =
|
|
133
136
|
"display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:20px;background-color:#fff;color:#333;font-family:sans-serif;text-align:center;";
|
|
@@ -173,6 +176,8 @@
|
|
|
173
176
|
error.id = "storymap-url-error";
|
|
174
177
|
error.className = "storymap-url-error";
|
|
175
178
|
error.hidden = true;
|
|
179
|
+
// the input describes its error slot (issue #385 wave)
|
|
180
|
+
input.setAttribute("aria-describedby", "storymap-url-error");
|
|
176
181
|
row.append(input, button);
|
|
177
182
|
form.append(label, row, error);
|
|
178
183
|
card.append(heading, hint, form);
|
|
@@ -191,6 +196,8 @@
|
|
|
191
196
|
} catch {
|
|
192
197
|
error.textContent = "Please enter a valid URL to a storymap.json file.";
|
|
193
198
|
error.hidden = false;
|
|
199
|
+
error.setAttribute("role", "alert");
|
|
200
|
+
input.setAttribute("aria-invalid", "true");
|
|
194
201
|
return;
|
|
195
202
|
}
|
|
196
203
|
urlParams.set("url", value);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"map_type": "osm",
|
|
4
|
+
"font_css": false,
|
|
5
|
+
"slides": [
|
|
6
|
+
{
|
|
7
|
+
"type": "overview",
|
|
8
|
+
"date": "",
|
|
9
|
+
"text": {
|
|
10
|
+
"headline": "A story with font loading disabled",
|
|
11
|
+
"text": "The host page bundles its own font theme."
|
|
12
|
+
},
|
|
13
|
+
"media": {
|
|
14
|
+
"url": "",
|
|
15
|
+
"caption": "",
|
|
16
|
+
"credit": ""
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "",
|
|
21
|
+
"text": {
|
|
22
|
+
"headline": "Second slide",
|
|
23
|
+
"text": "<p>No font stylesheet is appended by the viewer.</p>"
|
|
24
|
+
},
|
|
25
|
+
"media": {
|
|
26
|
+
"url": "",
|
|
27
|
+
"caption": "",
|
|
28
|
+
"credit": ""
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"map_as_image": false,
|
|
5
|
+
"map_type": "osm",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"date": "",
|
|
9
|
+
"type": "overview",
|
|
10
|
+
"text": {
|
|
11
|
+
"headline": "Карта мира",
|
|
12
|
+
"text": "Обзор на русском языке."
|
|
13
|
+
},
|
|
14
|
+
"media": {
|
|
15
|
+
"url": "",
|
|
16
|
+
"caption": "",
|
|
17
|
+
"credit": ""
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"date": "",
|
|
22
|
+
"text": {
|
|
23
|
+
"headline": "Αθήνα",
|
|
24
|
+
"text": "Ελληνικό κείμενο για την Αθήνα."
|
|
25
|
+
},
|
|
26
|
+
"location": {
|
|
27
|
+
"lat": 37.98,
|
|
28
|
+
"lon": 23.73
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"date": "",
|
|
33
|
+
"text": {
|
|
34
|
+
"headline": "ירושלים",
|
|
35
|
+
"text": "טקסט עברי לירושלים."
|
|
36
|
+
},
|
|
37
|
+
"location": {
|
|
38
|
+
"lat": 31.77,
|
|
39
|
+
"lon": 35.21
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"date": "",
|
|
44
|
+
"text": {
|
|
45
|
+
"headline": "القاهرة",
|
|
46
|
+
"text": "نص عربي عن القاهرة."
|
|
47
|
+
},
|
|
48
|
+
"location": {
|
|
49
|
+
"lat": 30.04,
|
|
50
|
+
"lon": 31.24
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"zoomify": false,
|
|
5
|
+
"map_as_image": false,
|
|
6
|
+
"map_type": "osm",
|
|
7
|
+
"slides": [
|
|
8
|
+
{
|
|
9
|
+
"date": "",
|
|
10
|
+
"type": "overview",
|
|
11
|
+
"text": {
|
|
12
|
+
"headline": "Start slide test",
|
|
13
|
+
"text": "Overview"
|
|
14
|
+
},
|
|
15
|
+
"media": {
|
|
16
|
+
"url": "",
|
|
17
|
+
"caption": "",
|
|
18
|
+
"credit": ""
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"date": "",
|
|
23
|
+
"text": {
|
|
24
|
+
"headline": "One",
|
|
25
|
+
"text": "First."
|
|
26
|
+
},
|
|
27
|
+
"media": {
|
|
28
|
+
"url": "",
|
|
29
|
+
"caption": "",
|
|
30
|
+
"credit": ""
|
|
31
|
+
},
|
|
32
|
+
"location": {
|
|
33
|
+
"lat": 48.85,
|
|
34
|
+
"lon": 2.35,
|
|
35
|
+
"zoom": 6,
|
|
36
|
+
"line": true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"date": "",
|
|
41
|
+
"text": {
|
|
42
|
+
"headline": "Two",
|
|
43
|
+
"text": "Second."
|
|
44
|
+
},
|
|
45
|
+
"media": {
|
|
46
|
+
"url": "",
|
|
47
|
+
"caption": "",
|
|
48
|
+
"credit": ""
|
|
49
|
+
},
|
|
50
|
+
"location": {
|
|
51
|
+
"lat": 52.52,
|
|
52
|
+
"lon": 13.4,
|
|
53
|
+
"zoom": 6,
|
|
54
|
+
"line": true
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"date": "",
|
|
59
|
+
"text": {
|
|
60
|
+
"headline": "Three",
|
|
61
|
+
"text": "Third."
|
|
62
|
+
},
|
|
63
|
+
"media": {
|
|
64
|
+
"url": "",
|
|
65
|
+
"caption": "",
|
|
66
|
+
"credit": ""
|
|
67
|
+
},
|
|
68
|
+
"location": {
|
|
69
|
+
"lat": 41.9,
|
|
70
|
+
"lon": 12.49,
|
|
71
|
+
"zoom": 6,
|
|
72
|
+
"line": true
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"date": "",
|
|
77
|
+
"text": {
|
|
78
|
+
"headline": "Four",
|
|
79
|
+
"text": "Fourth."
|
|
80
|
+
},
|
|
81
|
+
"media": {
|
|
82
|
+
"url": "",
|
|
83
|
+
"caption": "",
|
|
84
|
+
"credit": ""
|
|
85
|
+
},
|
|
86
|
+
"location": {
|
|
87
|
+
"lat": 45.46,
|
|
88
|
+
"lon": 9.19,
|
|
89
|
+
"zoom": 6,
|
|
90
|
+
"line": true
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"start_at_slide": 3
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"zoomify": false,
|
|
5
|
+
"map_as_image": false,
|
|
6
|
+
"map_type": "osm",
|
|
7
|
+
"slides": [
|
|
8
|
+
{
|
|
9
|
+
"date": "",
|
|
10
|
+
"type": "overview",
|
|
11
|
+
"text": {
|
|
12
|
+
"headline": "Extra iframe media in text",
|
|
13
|
+
"text": "Overview"
|
|
14
|
+
},
|
|
15
|
+
"media": {
|
|
16
|
+
"url": "",
|
|
17
|
+
"caption": "",
|
|
18
|
+
"credit": ""
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"date": "",
|
|
23
|
+
"text": {
|
|
24
|
+
"headline": "Iframe in text",
|
|
25
|
+
"text": "<p>An extra video below the primary media:</p><iframe src=\"https://example.com/embed/123\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen></iframe>"
|
|
26
|
+
},
|
|
27
|
+
"media": {
|
|
28
|
+
"url": "",
|
|
29
|
+
"caption": "",
|
|
30
|
+
"credit": ""
|
|
31
|
+
},
|
|
32
|
+
"location": {
|
|
33
|
+
"lat": 48.85,
|
|
34
|
+
"lon": 2.35,
|
|
35
|
+
"zoom": 6
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"date": "",
|
|
40
|
+
"text": {
|
|
41
|
+
"headline": "Unsafe markup is neutralized",
|
|
42
|
+
"text": "<p>Scripts and handlers never execute:</p><script>window.__smXss358 = true;</script><p><a href=\"javascript:alert(1)\">bad link</a></p><iframe src=\"javascript:alert(1)\"></iframe>"
|
|
43
|
+
},
|
|
44
|
+
"media": {
|
|
45
|
+
"url": "",
|
|
46
|
+
"caption": "",
|
|
47
|
+
"credit": ""
|
|
48
|
+
},
|
|
49
|
+
"location": {
|
|
50
|
+
"lat": 51.5,
|
|
51
|
+
"lon": -0.12,
|
|
52
|
+
"zoom": 6
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"map_type": "iiif",
|
|
4
|
+
"map_bbox": [2.29, 48.85, 2.38, 48.9],
|
|
5
|
+
"slides": [
|
|
6
|
+
{
|
|
7
|
+
"date": "",
|
|
8
|
+
"text": {
|
|
9
|
+
"headline": "Georeferenced IIIF",
|
|
10
|
+
"text": "<p>The same IIIF Image API service as <code>iiif-wellcome</code>, but georeferenced: <code>map_bbox</code> instead of <code>map_as_image</code>, so slide locations are real coordinates. This is the case <code>isImageSpace()</code> must report <code>false</code> for.</p>"
|
|
11
|
+
},
|
|
12
|
+
"type": "overview"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"date": "2026",
|
|
16
|
+
"location": {
|
|
17
|
+
"lat": 48.858,
|
|
18
|
+
"lon": 2.294,
|
|
19
|
+
"text": "<p>A real coordinate, not a pixel offset.</p>"
|
|
20
|
+
},
|
|
21
|
+
"text": {
|
|
22
|
+
"headline": "A located slide",
|
|
23
|
+
"text": "<p>Paris.</p>"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"iiif": {
|
|
28
|
+
"url": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/info.json",
|
|
29
|
+
"attribution": "IIIF fixture repository"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"map_as_image": false,
|
|
5
|
+
"map_type": "osm",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"date": "",
|
|
9
|
+
"type": "overview",
|
|
10
|
+
"text": {
|
|
11
|
+
"headline": "Accessible images",
|
|
12
|
+
"text": "Explicit alt text on the overview image."
|
|
13
|
+
},
|
|
14
|
+
"media": {
|
|
15
|
+
"url": "/examples/assets/placeholder-portrait.jpg",
|
|
16
|
+
"alt": "Portrait-oriented placeholder photograph",
|
|
17
|
+
"caption": "<p>The caption stays HTML.</p>",
|
|
18
|
+
"credit": ""
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"map_type": "iiif",
|
|
5
|
+
"map_as_image": true,
|
|
6
|
+
"iiif": {
|
|
7
|
+
"url": "https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon/info.json",
|
|
8
|
+
"attribution": "IIIF fixture repository"
|
|
9
|
+
},
|
|
10
|
+
"slides": [
|
|
11
|
+
{
|
|
12
|
+
"type": "overview",
|
|
13
|
+
"date": "",
|
|
14
|
+
"text": {
|
|
15
|
+
"headline": "Image region stops",
|
|
16
|
+
"text": "Each slide fits its xywh region on navigation."
|
|
17
|
+
},
|
|
18
|
+
"location": {}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"date": "",
|
|
22
|
+
"text": {
|
|
23
|
+
"headline": "Head region",
|
|
24
|
+
"text": "The view fits the [x, y, w, h] region in image pixels."
|
|
25
|
+
},
|
|
26
|
+
"location": {
|
|
27
|
+
"region": [800, 100, 700, 700]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"date": "",
|
|
32
|
+
"text": {
|
|
33
|
+
"headline": "Torso region",
|
|
34
|
+
"text": "Slideshow-style image stops via the IIIF xywh convention."
|
|
35
|
+
},
|
|
36
|
+
"location": {
|
|
37
|
+
"region": [700, 800, 900, 1100]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"storymap": {
|
|
3
|
+
"call_to_action": false,
|
|
4
|
+
"map_as_image": false,
|
|
5
|
+
"map_type": "osm",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"date": "",
|
|
9
|
+
"type": "overview",
|
|
10
|
+
"text": {
|
|
11
|
+
"headline": "Responsive images",
|
|
12
|
+
"text": "The srcset/sizes fields pass through to the img element."
|
|
13
|
+
},
|
|
14
|
+
"media": {
|
|
15
|
+
"url": "/examples/assets/placeholder-portrait.jpg",
|
|
16
|
+
"srcset": "/examples/assets/placeholder-portrait.jpg 480w, /examples/assets/placeholder-landscape.jpg 1024w",
|
|
17
|
+
"sizes": "50vw",
|
|
18
|
+
"caption": "srcset passthrough",
|
|
19
|
+
"credit": ""
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|