@projektemacher/storymapjs 0.10.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 +121 -0
- package/LICENSE +365 -0
- package/README.md +128 -0
- package/dist/assets/demo-DYodj6d7.js +1 -0
- package/dist/assets/harness-UkbbPmC4.js +1 -0
- package/dist/assets/index-DDsPBPZA.js +1 -0
- package/dist/assets/main-BDSRsIiB.js +17 -0
- package/dist/assets/main-Bzm6THVj.css +1 -0
- package/dist/assets/modulepreload-polyfill-P2Xu9kJm.js +1 -0
- package/dist/context.json +35 -0
- package/dist/css/fonts/files/abril-fatface-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/abril-fatface-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/amatic-sc-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/average-sans-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/average-sans-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-200-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-600-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-800-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-200-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-200-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-600-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-600-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-800-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-800-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/bitter-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/clicker-script-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/clicker-script-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/dancing-script-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/dancing-script-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/eb-garamond-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/fauna-one-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/fauna-one-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/gentium-book-plus-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-100-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-100-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/lato-latin-ext-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/megrim-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/megrim-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/old-standard-tt-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/open-sans-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-900-italic.woff2 +0 -0
- package/dist/css/fonts/files/playfair-display-sc-latin-ext-900-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-sans-narrow-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/pt-serif-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/raleway-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/raleway-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/raleway-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/raleway-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/roboto-slab-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/rufina-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/rufina-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/rufina-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/rufina-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-300-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-300-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-400-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-500-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-500-normal.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-700-italic.woff2 +0 -0
- package/dist/css/fonts/files/ubuntu-latin-ext-700-normal.woff2 +0 -0
- package/dist/css/fonts/files/unica-one-latin-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/unica-one-latin-ext-400-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-latin-ext-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-latin-ext-wght-normal.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-latin-wght-italic.woff2 +0 -0
- package/dist/css/fonts/files/vollkorn-latin-wght-normal.woff2 +0 -0
- package/dist/css/fonts/font.abril-droidsans.css +108 -0
- package/dist/css/fonts/font.amatic-andika.css +126 -0
- package/dist/css/fonts/font.bitter-raleway.css +162 -0
- package/dist/css/fonts/font.clicker-garamond.css +149 -0
- package/dist/css/fonts/font.dancing-ledger.css +108 -0
- package/dist/css/fonts/font.default.css +278 -0
- package/dist/css/fonts/font.fjalla-average.css +113 -0
- package/dist/css/fonts/font.georgia-helvetica.css +88 -0
- package/dist/css/fonts/font.knightlab.css +467 -0
- package/dist/css/fonts/font.lustria-lato.css +275 -0
- package/dist/css/fonts/font.medula-lato.css +270 -0
- package/dist/css/fonts/font.oldstandard.css +160 -0
- package/dist/css/fonts/font.opensans-gentiumbook.css +167 -0
- package/dist/css/fonts/font.playfair-faunaone.css +145 -0
- package/dist/css/fonts/font.playfair.css +234 -0
- package/dist/css/fonts/font.pt.css +271 -0
- package/dist/css/fonts/font.roboto-megrim.css +108 -0
- package/dist/css/fonts/font.rufina-sintony.css +126 -0
- package/dist/css/fonts/font.ubuntu.css +237 -0
- package/dist/css/fonts/font.unicaone-vollkorn.css +144 -0
- package/dist/css/icons/README.md +4 -0
- package/dist/css/icons/emoji.png +0 -0
- package/dist/css/icons/emoji@2x.png +0 -0
- package/dist/css/icons/vco-icons.eot +0 -0
- package/dist/css/icons/vco-icons.svg +63 -0
- package/dist/css/icons/vco-icons.ttf +0 -0
- package/dist/css/icons/vco-icons.woff +0 -0
- package/dist/css/icons/vco-icons.woff2 +0 -0
- package/dist/css/storymap.css +2 -0
- package/dist/demo.html +17 -0
- package/dist/demo.json +479 -0
- 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 +22 -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 +799 -0
- package/dist/docs/api/functions/MediaType.html +51 -0
- package/dist/docs/api/functions/loadCSS.html +64 -0
- package/dist/docs/api/functions/setLanguage.html +53 -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 +127 -0
- package/dist/docs/api/modules.html +42 -0
- package/dist/docs/iiif.html +912 -0
- package/dist/docs/migration.html +264 -0
- package/dist/docs/readme.html +178 -0
- package/dist/embed/index.html +95 -0
- package/dist/examples/assets/placeholder-city.jpg +0 -0
- package/dist/examples/assets/placeholder-landscape.jpg +0 -0
- package/dist/examples/assets/placeholder-portrait.jpg +0 -0
- package/dist/examples/assets/tone.mp3 +0 -0
- package/dist/examples/bob-boilen.json +123 -0
- package/dist/examples/courbet.json +32 -0
- package/dist/examples/empty.json +5 -0
- package/dist/examples/flickr-drewvigal.json +341 -0
- package/dist/examples/flickr-zach.wise.json +341 -0
- package/dist/examples/iiif-wellcome.json +28 -0
- package/dist/examples/instagram-chenpamela.json +592 -0
- package/dist/examples/instagram_brentfoster.json +565 -0
- package/dist/examples/instagram_couch.json +402 -0
- package/dist/examples/instagram_joegermuska.json +687 -0
- package/dist/examples/instagram_matteich.json +341 -0
- package/dist/examples/instagram_mirandamulligan.json +402 -0
- package/dist/examples/instagram_raymondmccrea.json +341 -0
- package/dist/examples/instagram_test.json +341 -0
- package/dist/examples/issue-134-no-lines.json +78 -0
- package/dist/examples/issue-177-color-vars.json +44 -0
- package/dist/examples/issue-211-rtl.json +44 -0
- package/dist/examples/issue-272-facebook.json +47 -0
- package/dist/examples/issue-305-start-at-slide.json +95 -0
- package/dist/examples/issue-341-distance.json +44 -0
- package/dist/examples/issue-360-juxtapose.json +35 -0
- package/dist/examples/issue-368-null-fields.json +60 -0
- package/dist/examples/issue-375-code-lists.json +35 -0
- package/dist/examples/issue-381-dateline.json +77 -0
- package/dist/examples/issue-425-many-slides.json +2723 -0
- package/dist/examples/issue-428-background.json +62 -0
- package/dist/examples/issue-435-googlemaps.json +35 -0
- package/dist/examples/issue-437-documentcloud.json +35 -0
- package/dist/examples/issue-451-webp.json +35 -0
- package/dist/examples/issue-455-audio.json +35 -0
- package/dist/examples/issue-480-shorts.json +35 -0
- package/dist/examples/issue-506-marker-sync.json +77 -0
- package/dist/examples/jansteen.json +1 -0
- package/dist/examples/katrina.json +161 -0
- package/dist/examples/marktwain.json +341 -0
- package/dist/examples/population.json +463 -0
- package/dist/examples/president.json +454 -0
- package/dist/examples/seurat.json +248 -0
- package/dist/examples-iiif/bob-boilen.json +341 -0
- package/dist/examples-iiif/courbet.json +80 -0
- package/dist/examples-iiif/empty.json +29 -0
- package/dist/examples-iiif/flickr-drewvigal.json +1189 -0
- package/dist/examples-iiif/flickr-zach.wise.json +1074 -0
- package/dist/examples-iiif/iiif-wellcome.json +97 -0
- package/dist/examples-iiif/instagram-chenpamela.json +1716 -0
- package/dist/examples-iiif/instagram_brentfoster.json +1804 -0
- package/dist/examples-iiif/instagram_couch.json +1166 -0
- package/dist/examples-iiif/instagram_joegermuska.json +1946 -0
- package/dist/examples-iiif/instagram_matteich.json +1190 -0
- package/dist/examples-iiif/instagram_mirandamulligan.json +1171 -0
- package/dist/examples-iiif/instagram_raymondmccrea.json +1165 -0
- package/dist/examples-iiif/instagram_test.json +1185 -0
- package/dist/examples-iiif/issue-134-no-lines.json +245 -0
- package/dist/examples-iiif/issue-177-color-vars.json +182 -0
- package/dist/examples-iiif/issue-211-rtl.json +182 -0
- package/dist/examples-iiif/issue-272-facebook.json +146 -0
- package/dist/examples-iiif/issue-305-start-at-slide.json +300 -0
- package/dist/examples-iiif/issue-341-distance.json +182 -0
- package/dist/examples-iiif/issue-360-juxtapose.json +112 -0
- package/dist/examples-iiif/issue-368-null-fields.json +202 -0
- package/dist/examples-iiif/issue-375-code-lists.json +111 -0
- package/dist/examples-iiif/issue-381-dateline.json +244 -0
- package/dist/examples-iiif/issue-425-many-slides.json +8476 -0
- package/dist/examples-iiif/issue-428-background.json +191 -0
- package/dist/examples-iiif/issue-435-googlemaps.json +111 -0
- package/dist/examples-iiif/issue-437-documentcloud.json +112 -0
- package/dist/examples-iiif/issue-451-webp.json +111 -0
- package/dist/examples-iiif/issue-455-audio.json +111 -0
- package/dist/examples-iiif/issue-480-shorts.json +110 -0
- package/dist/examples-iiif/issue-506-marker-sync.json +244 -0
- package/dist/examples-iiif/jansteen.json +509 -0
- package/dist/examples-iiif/katrina.json +499 -0
- package/dist/examples-iiif/marktwain.json +929 -0
- package/dist/examples-iiif/population.json +1464 -0
- package/dist/examples-iiif/president.json +1351 -0
- package/dist/examples-iiif/seurat.json +870 -0
- package/dist/football.json +344 -0
- package/dist/harness.html +15 -0
- package/dist/index.html +410 -0
- package/dist/js/storymap.js +25787 -0
- package/dist/js/storymap.js.map +1 -0
- package/dist/site.css +592 -0
- package/dist/thumbs/bosch-garden.jpg +0 -0
- package/dist/thumbs/iiif-wellcome.jpg +0 -0
- package/dist/thumbs/katrina.jpg +0 -0
- package/dist/thumbs/marktwain.jpg +0 -0
- package/dist/thumbs/population.jpg +0 -0
- package/dist/thumbs/president.jpg +0 -0
- package/dist/thumbs/seurat.jpg +0 -0
- package/dist/thumbs/southern-literary-trail.jpg +0 -0
- package/package.json +105 -0
- package/schema/storymap.schema.json +192 -0
package/CHANGELOG
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
1.0.0 (unreleased)
|
|
2
|
+
------------------------
|
|
3
|
+
Viewer-only restructure of the repository:
|
|
4
|
+
- Removed the editor Flask backend, CDN staging and all legacy build artifacts
|
|
5
|
+
- Replaced webpack with Vite (dev/build/preview), default Vite project layout
|
|
6
|
+
- Converted the source to strict TypeScript (target ES2022, noImplicitAny, no explicit any)
|
|
7
|
+
- Replaced Leaflet with OpenLayers; IIIF Image API replaces Zoomify (breaking: map_type "zoomify" is gone, use "iiif")
|
|
8
|
+
- Converted Less to SASS with zero deprecation warnings (@use only, no @import, no vendor prefixes, no postcss-scss)
|
|
9
|
+
- Fonts bundled via @fontsource + @fontsource-utils/scss mixins (woff2, latin subsets); no runtime font CDN requests
|
|
10
|
+
- New exchange format: IIIF Presentation API 3.0 manifests (docs/storymap-as-iiif-manifest.md) with navPlace geo +
|
|
11
|
+
a storymap: extension; all example fixtures converted and validated against the official IIIF validator;
|
|
12
|
+
StoryMap reads both legacy JSON and Presentation 3 manifests
|
|
13
|
+
- JSON Schema for storymap data: runtime validation with console error reporting + CLI validator
|
|
14
|
+
- ESLint (all rules enabled, TS mixins per the handbook replace runtime classMixin), Stylelint (zero disabled
|
|
15
|
+
rules), Prettier, GitHub Actions for CI (lint/typecheck/validate/tests/build/e2e) and release packaging
|
|
16
|
+
- Dropped code for pre-2022 browsers: XHR -> fetch, removed vendor detection, engine workarounds, pollers,
|
|
17
|
+
minEmoji sprite polyfill and Knight Lab tracking
|
|
18
|
+
- Bug fixes: null-offset crashes, IIIF source races, unique-id generation, swipe direction check, empty-block cleanup
|
|
19
|
+
|
|
20
|
+
0.9.5 (2025-11-05)
|
|
21
|
+
* Implement basic Audio and Video media types
|
|
22
|
+
|
|
23
|
+
0.9.4 (2023-12-08)
|
|
24
|
+
* Forcibly change `stamen:` map_types to `osm:standard` or `ch-watercolor`
|
|
25
|
+
* #491 set script path in code
|
|
26
|
+
|
|
27
|
+
0.9.3 (2023-11-02)
|
|
28
|
+
* Use osm:standard as default since stamen:toner-lite no longer free
|
|
29
|
+
|
|
30
|
+
0.9.2 (2023-10-06)
|
|
31
|
+
* Minor bug-fixes in advance of launching authoring tool update.
|
|
32
|
+
|
|
33
|
+
0.9.1 (2023-10-02)
|
|
34
|
+
* Hard-code preserving undefined map type as toner-lite, temporarily.
|
|
35
|
+
|
|
36
|
+
0.9.0 (2023-10-02)
|
|
37
|
+
* Changes in map types as Stamen basemaps move to Stadia.
|
|
38
|
+
|
|
39
|
+
0.8.4 (2021-04-01)
|
|
40
|
+
* Fixes regression of retina device handling
|
|
41
|
+
|
|
42
|
+
0.8.3 (2021-03-31)
|
|
43
|
+
* Fixes regression of touch handling on mobile
|
|
44
|
+
|
|
45
|
+
0.8.2 (2021-03-29)
|
|
46
|
+
* Reinstate dynamic minimap
|
|
47
|
+
* Allow user to revert from Gigapixel to standard map types
|
|
48
|
+
* Autoextract width and height info from zoomify ImageProperties
|
|
49
|
+
* Better error handling for invalid edit links
|
|
50
|
+
|
|
51
|
+
0.8.1 (2021-03-25)
|
|
52
|
+
* Re-organizes code and build to use webpack
|
|
53
|
+
|
|
54
|
+
0.7.6 (2020-11-03)
|
|
55
|
+
* Improve Portuguese translation (thanks Marcio Costa Strumiello)
|
|
56
|
+
|
|
57
|
+
0.7.5 (2020-06-18)
|
|
58
|
+
* Completely fix regression added in 0.7.3 ugh
|
|
59
|
+
|
|
60
|
+
0.7.4 (2020-06-18)
|
|
61
|
+
* Fix regression added in 0.7.3
|
|
62
|
+
|
|
63
|
+
0.7.3 (2020-06-18)
|
|
64
|
+
* Improve handling for markers on Null Island (fixes #444)
|
|
65
|
+
|
|
66
|
+
0.7.2 (2020-03-11)
|
|
67
|
+
* Update Flickr API key
|
|
68
|
+
|
|
69
|
+
0.7.1 (2019-11-01)
|
|
70
|
+
* Implement support for lat/lon coordinate specification
|
|
71
|
+
* Fix to editor copy function
|
|
72
|
+
* Add Slovak translation (thanks @martin-havala)
|
|
73
|
+
* Improve Spanish translation (thanks @doxrealm)
|
|
74
|
+
|
|
75
|
+
0.7.0 (2019-07-19)
|
|
76
|
+
* PR #416 adds woff2 font to fix nav arrows on MS Edge
|
|
77
|
+
* Update Mapbox wordmark in attribution
|
|
78
|
+
|
|
79
|
+
0.6.9 (2018-09-14)
|
|
80
|
+
* Implement support for new-style mapbox style URLs (should have gone with #400)
|
|
81
|
+
|
|
82
|
+
0.6.8 (2018-07-20)
|
|
83
|
+
* PR #394 Fixes anchor button in editor for Chrome
|
|
84
|
+
* PR #395 Adds localized mock S3 storage for development
|
|
85
|
+
* PR #399 Fixes null slide entries
|
|
86
|
+
* PR #400 Updates for changes to mapbox
|
|
87
|
+
* PR #401 Fixes content link button for Chrome
|
|
88
|
+
* PR #384 Updates zh-tw translation
|
|
89
|
+
* PR #340 Fixes null locations in data
|
|
90
|
+
* PR #402 Fixes image distortion in editor preview
|
|
91
|
+
|
|
92
|
+
0.6.7 (2017-12-21)
|
|
93
|
+
* PR #361/366 Adds Turkish translation
|
|
94
|
+
|
|
95
|
+
0.6.6 (2017-09-08)
|
|
96
|
+
* PR #377 Adds Turkish translation
|
|
97
|
+
|
|
98
|
+
0.6.4 (207-04-06)
|
|
99
|
+
* PR #357 Fixes #351 YouTube link obscured by nav button
|
|
100
|
+
|
|
101
|
+
0.6.2 (2016-12-13)
|
|
102
|
+
* PR #333 Adds zoomify analytics
|
|
103
|
+
|
|
104
|
+
0.6.1 (2016-10-14)
|
|
105
|
+
------------------------
|
|
106
|
+
* PR #302 Media fixes including pause of video types when navigating away from slide
|
|
107
|
+
* PR #303 Adds custom map marker upload in editor
|
|
108
|
+
* PR #312 Adds Greek translation to StoryMap editor
|
|
109
|
+
|
|
110
|
+
## 1.0.0 (unreleased)
|
|
111
|
+
|
|
112
|
+
Viewer-only restructure of the repository:
|
|
113
|
+
- Removed the editor Flask backend, staging and legacy build artifacts
|
|
114
|
+
- Replaced webpack with Vite (dev/build/preview), default project layout
|
|
115
|
+
- Converted the source to strict TypeScript (target ES2022)
|
|
116
|
+
- Replaced Leaflet with OpenLayers; IIIF Image API replaces Zoomify (breaking)
|
|
117
|
+
- Converted Less to SASS; fonts bundled from npm (@fontsource) instead of runtime CDN requests
|
|
118
|
+
- Added a JSON Schema for storymap data, runtime validation with console reporting, and a CLI validator
|
|
119
|
+
- Added ESLint + Stylelint and GitHub Actions for linting/tests and release packaging
|
|
120
|
+
- Playwright e2e suite over all examples, Vitest for units
|
|
121
|
+
- Dropped code paths for pre-2022 browsers (legacy vendor prefixes, IE/old-engine fallbacks)
|
package/LICENSE
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
|
+
|
|
5
|
+
Mozilla Public License Version 2.0
|
|
6
|
+
==================================
|
|
7
|
+
|
|
8
|
+
1. Definitions
|
|
9
|
+
--------------
|
|
10
|
+
|
|
11
|
+
1.1. "Contributor"
|
|
12
|
+
means each individual or legal entity that creates, contributes to
|
|
13
|
+
the creation of, or owns Covered Software.
|
|
14
|
+
|
|
15
|
+
1.2. "Contributor Version"
|
|
16
|
+
means the combination of the Contributions of others (if any) used
|
|
17
|
+
by a Contributor and that particular Contributor's Contribution.
|
|
18
|
+
|
|
19
|
+
1.3. "Contribution"
|
|
20
|
+
means Covered Software of a particular Contributor.
|
|
21
|
+
|
|
22
|
+
1.4. "Covered Software"
|
|
23
|
+
means Source Code Form to which the initial Contributor has attached
|
|
24
|
+
the notice in Exhibit A, the Executable Form of such Source Code
|
|
25
|
+
Form, and Modifications of such Source Code Form, in each case
|
|
26
|
+
including portions thereof.
|
|
27
|
+
|
|
28
|
+
1.5. "Incompatible With Secondary Licenses"
|
|
29
|
+
means
|
|
30
|
+
|
|
31
|
+
(a) that the initial Contributor has attached the notice described
|
|
32
|
+
in Exhibit B to the Covered Software; or
|
|
33
|
+
|
|
34
|
+
(b) that the Covered Software was made available under the terms of
|
|
35
|
+
version 1.1 or earlier of the License, but not also under the
|
|
36
|
+
terms of a Secondary License.
|
|
37
|
+
|
|
38
|
+
1.6. "Executable Form"
|
|
39
|
+
means any form of the work other than Source Code Form.
|
|
40
|
+
|
|
41
|
+
1.7. "Larger Work"
|
|
42
|
+
means a work that combines Covered Software with other material, in
|
|
43
|
+
a separate file or files, that is not Covered Software.
|
|
44
|
+
|
|
45
|
+
1.8. "License"
|
|
46
|
+
means this document.
|
|
47
|
+
|
|
48
|
+
1.9. "Licensable"
|
|
49
|
+
means having the right to grant, to the maximum extent possible,
|
|
50
|
+
whether at the time of the initial grant or subsequently, any and
|
|
51
|
+
all of the rights conveyed by this License.
|
|
52
|
+
|
|
53
|
+
1.10. "Modifications"
|
|
54
|
+
means any of the following:
|
|
55
|
+
|
|
56
|
+
(a) any file in Source Code Form that results from an addition to,
|
|
57
|
+
deletion from, or modification of the contents of Covered
|
|
58
|
+
Software; or
|
|
59
|
+
|
|
60
|
+
(b) any new file in Source Code Form that contains any Covered
|
|
61
|
+
Software.
|
|
62
|
+
|
|
63
|
+
1.11. "Patent Claims" of a Contributor
|
|
64
|
+
means any patent claim(s), including without limitation, method,
|
|
65
|
+
process, and apparatus claims, in any patent Licensable by such
|
|
66
|
+
Contributor that would be infringed, but for the grant of the
|
|
67
|
+
License, by the making, using, selling, offering for sale, having
|
|
68
|
+
made, import, or transfer of either its Contributions or its
|
|
69
|
+
Contributor Version.
|
|
70
|
+
|
|
71
|
+
1.12. "Secondary License"
|
|
72
|
+
means either the GNU General Public License, Version 2.0, the GNU
|
|
73
|
+
Lesser General Public License, Version 2.1, the GNU Affero General
|
|
74
|
+
Public License, Version 3.0, or any later versions of those
|
|
75
|
+
licenses.
|
|
76
|
+
|
|
77
|
+
1.13. "Source Code Form"
|
|
78
|
+
means the form of the work preferred for making modifications.
|
|
79
|
+
|
|
80
|
+
1.14. "You" (or "Your")
|
|
81
|
+
means an individual or a legal entity exercising rights under this
|
|
82
|
+
License. For legal entities, "You" includes any entity that
|
|
83
|
+
controls, is controlled by, or is under common control with You. For
|
|
84
|
+
purposes of this definition, "control" means (a) the power, direct
|
|
85
|
+
or indirect, to cause the direction or management of such entity,
|
|
86
|
+
whether by contract or otherwise, or (b) ownership of more than
|
|
87
|
+
fifty percent (50%) of the outstanding shares or beneficial
|
|
88
|
+
ownership of such entity.
|
|
89
|
+
|
|
90
|
+
2. License Grants and Conditions
|
|
91
|
+
--------------------------------
|
|
92
|
+
|
|
93
|
+
2.1. Grants
|
|
94
|
+
|
|
95
|
+
Each Contributor hereby grants You a world-wide, royalty-free,
|
|
96
|
+
non-exclusive license:
|
|
97
|
+
|
|
98
|
+
(a) under intellectual property rights (other than patent or trademark)
|
|
99
|
+
Licensable by such Contributor to use, reproduce, make available,
|
|
100
|
+
modify, display, perform, distribute, and otherwise exploit its
|
|
101
|
+
Contributions, either on an unmodified basis, with Modifications, or
|
|
102
|
+
as part of a Larger Work; and
|
|
103
|
+
|
|
104
|
+
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
|
105
|
+
for sale, have made, import, and otherwise transfer either its
|
|
106
|
+
Contributions or its Contributor Version.
|
|
107
|
+
|
|
108
|
+
2.2. Effective Date
|
|
109
|
+
|
|
110
|
+
The licenses granted in Section 2.1 with respect to any Contribution
|
|
111
|
+
become effective for each Contribution on the date the Contributor first
|
|
112
|
+
distributes such Contribution.
|
|
113
|
+
|
|
114
|
+
2.3. Limitations on Grant Scope
|
|
115
|
+
|
|
116
|
+
The licenses granted in this Section 2 are the only rights granted under
|
|
117
|
+
this License. No additional rights or licenses will be implied from the
|
|
118
|
+
distribution or licensing of Covered Software under this License.
|
|
119
|
+
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
|
120
|
+
Contributor:
|
|
121
|
+
|
|
122
|
+
(a) for any code that a Contributor has removed from Covered Software;
|
|
123
|
+
or
|
|
124
|
+
|
|
125
|
+
(b) for infringements caused by: (i) Your and any other third party's
|
|
126
|
+
modifications of Covered Software, or (ii) the combination of its
|
|
127
|
+
Contributions with other software (except as part of its Contributor
|
|
128
|
+
Version); or
|
|
129
|
+
|
|
130
|
+
(c) under Patent Claims infringed by Covered Software in the absence of
|
|
131
|
+
its Contributions.
|
|
132
|
+
|
|
133
|
+
This License does not grant any rights in the trademarks, service marks,
|
|
134
|
+
or logos of any Contributor (except as may be necessary to comply with
|
|
135
|
+
the notice requirements in Section 3.4).
|
|
136
|
+
|
|
137
|
+
2.4. Subsequent Licenses
|
|
138
|
+
|
|
139
|
+
No Contributor makes additional grants as a result of Your choice to
|
|
140
|
+
distribute the Covered Software under a subsequent version of this
|
|
141
|
+
License (see Section 10.2) or under the terms of a Secondary License (if
|
|
142
|
+
permitted under the terms of Section 3.3).
|
|
143
|
+
|
|
144
|
+
2.5. Representation
|
|
145
|
+
|
|
146
|
+
Each Contributor represents that the Contributor believes its
|
|
147
|
+
Contributions are its original creation(s) or it has sufficient rights
|
|
148
|
+
to grant the rights to its Contributions conveyed by this License.
|
|
149
|
+
|
|
150
|
+
2.6. Fair Use
|
|
151
|
+
|
|
152
|
+
This License is not intended to limit any rights You have under
|
|
153
|
+
applicable copyright doctrines of fair use, fair dealing, or other
|
|
154
|
+
equivalents.
|
|
155
|
+
|
|
156
|
+
2.7. Conditions
|
|
157
|
+
|
|
158
|
+
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
|
159
|
+
in Section 2.1.
|
|
160
|
+
|
|
161
|
+
3. Responsibilities
|
|
162
|
+
-------------------
|
|
163
|
+
|
|
164
|
+
3.1. Distribution of Source Form
|
|
165
|
+
|
|
166
|
+
All distribution of Covered Software in Source Code Form, including any
|
|
167
|
+
Modifications that You create or to which You contribute, must be under
|
|
168
|
+
the terms of this License. You must inform recipients that the Source
|
|
169
|
+
Code Form of the Covered Software is governed by the terms of this
|
|
170
|
+
License, and how they can obtain a copy of this License. You may not
|
|
171
|
+
attempt to alter or restrict the recipients' rights in the Source Code
|
|
172
|
+
Form.
|
|
173
|
+
|
|
174
|
+
3.2. Distribution of Executable Form
|
|
175
|
+
|
|
176
|
+
If You distribute Covered Software in Executable Form then:
|
|
177
|
+
|
|
178
|
+
(a) such Covered Software must also be made available in Source Code
|
|
179
|
+
Form, as described in Section 3.1, and You must inform recipients of
|
|
180
|
+
the Executable Form how they can obtain a copy of such Source Code
|
|
181
|
+
Form by reasonable means in a timely manner, at a charge no more
|
|
182
|
+
than the cost of distribution to the recipient; and
|
|
183
|
+
|
|
184
|
+
(b) You may distribute such Executable Form under the terms of this
|
|
185
|
+
License, or sublicense it under different terms, provided that the
|
|
186
|
+
license for the Executable Form does not attempt to limit or alter
|
|
187
|
+
the recipients' rights in the Source Code Form under this License.
|
|
188
|
+
|
|
189
|
+
3.3. Distribution of a Larger Work
|
|
190
|
+
|
|
191
|
+
You may create and distribute a Larger Work under terms of Your choice,
|
|
192
|
+
provided that You also comply with the requirements of this License for
|
|
193
|
+
the Covered Software. If the Larger Work is a combination of Covered
|
|
194
|
+
Software with a work governed by one or more Secondary Licenses, and the
|
|
195
|
+
Covered Software is not Incompatible With Secondary Licenses, this
|
|
196
|
+
License permits You to additionally distribute such Covered Software
|
|
197
|
+
under the terms of such Secondary License(s), so that the recipient of
|
|
198
|
+
the Larger Work may, at their option, further distribute the Covered
|
|
199
|
+
Software under the terms of either this License or such Secondary
|
|
200
|
+
License(s).
|
|
201
|
+
|
|
202
|
+
3.4. Notices
|
|
203
|
+
|
|
204
|
+
You may not remove or alter the substance of any license notices
|
|
205
|
+
(including copyright notices, patent notices, disclaimers of warranty,
|
|
206
|
+
or limitations of liability) contained within the Source Code Form of
|
|
207
|
+
the Covered Software, except that You may alter any license notices to
|
|
208
|
+
the extent required to remedy known factual inaccuracies.
|
|
209
|
+
|
|
210
|
+
3.5. Application of Additional Terms
|
|
211
|
+
|
|
212
|
+
You may choose to offer, and to charge a fee for, warranty, support,
|
|
213
|
+
indemnity or liability obligations to one or more recipients of Covered
|
|
214
|
+
Software. However, You may do so only on Your own behalf, and not on
|
|
215
|
+
behalf of any Contributor. You must make it absolutely clear that any
|
|
216
|
+
such warranty, support, indemnity, or liability obligation is offered by
|
|
217
|
+
You alone, and You hereby agree to indemnify every Contributor for any
|
|
218
|
+
liability incurred by such Contributor as a result of warranty, support,
|
|
219
|
+
indemnity or liability terms You offer. You may include additional
|
|
220
|
+
disclaimers of warranty and limitations of liability specific to any
|
|
221
|
+
jurisdiction.
|
|
222
|
+
|
|
223
|
+
4. Inability to Comply Due to Statute or Regulation
|
|
224
|
+
---------------------------------------------------
|
|
225
|
+
|
|
226
|
+
If it is impossible for You to comply with any of the terms of this
|
|
227
|
+
License with respect to some or all of the Covered Software due to
|
|
228
|
+
statute, judicial order, or regulation then You must: (a) comply with
|
|
229
|
+
the terms of this License to the maximum extent possible; and (b)
|
|
230
|
+
describe the limitations and the code they affect. Such description must
|
|
231
|
+
be placed in a text file included with all distributions of the Covered
|
|
232
|
+
Software under this License. Except to the extent prohibited by statute
|
|
233
|
+
or regulation, such description must be sufficiently detailed for a
|
|
234
|
+
recipient of ordinary skill to be able to understand it.
|
|
235
|
+
|
|
236
|
+
5. Termination
|
|
237
|
+
--------------
|
|
238
|
+
|
|
239
|
+
5.1. The rights granted under this License will terminate automatically
|
|
240
|
+
if You fail to comply with any of its terms. However, if You become
|
|
241
|
+
compliant, then the rights granted under this License from a particular
|
|
242
|
+
Contributor are reinstated (a) provisionally, unless and until such
|
|
243
|
+
Contributor explicitly and finally terminates Your grants, and (b) on an
|
|
244
|
+
ongoing basis, if such Contributor fails to notify You of the
|
|
245
|
+
non-compliance by some reasonable means prior to 60 days after You have
|
|
246
|
+
come back into compliance. Moreover, Your grants from a particular
|
|
247
|
+
Contributor are reinstated on an ongoing basis if such Contributor
|
|
248
|
+
notifies You of the non-compliance by some reasonable means, this is the
|
|
249
|
+
first time You have received notice of non-compliance with this License
|
|
250
|
+
from such Contributor, and You become compliant prior to 30 days after
|
|
251
|
+
Your receipt of the notice.
|
|
252
|
+
|
|
253
|
+
5.2. If You initiate litigation against any entity by asserting a patent
|
|
254
|
+
infringement claim (excluding declaratory judgment actions,
|
|
255
|
+
counter-claims, and cross-claims) alleging that a Contributor Version
|
|
256
|
+
directly or indirectly infringes any patent, then the rights granted to
|
|
257
|
+
You by any and all Contributors for the Covered Software under Section
|
|
258
|
+
2.1 of this License shall terminate.
|
|
259
|
+
|
|
260
|
+
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
|
261
|
+
end user license agreements (excluding distributors and resellers) which
|
|
262
|
+
have been validly granted by You or Your distributors under this License
|
|
263
|
+
prior to termination shall survive termination.
|
|
264
|
+
|
|
265
|
+
************************************************************************
|
|
266
|
+
* *
|
|
267
|
+
* 6. Disclaimer of Warranty *
|
|
268
|
+
* ------------------------- *
|
|
269
|
+
* *
|
|
270
|
+
* Covered Software is provided under this License on an "as is" *
|
|
271
|
+
* basis, without warranty of any kind, either expressed, implied, or *
|
|
272
|
+
* statutory, including, without limitation, warranties that the *
|
|
273
|
+
* Covered Software is free of defects, merchantable, fit for a *
|
|
274
|
+
* particular purpose or non-infringing. The entire risk as to the *
|
|
275
|
+
* quality and performance of the Covered Software is with You. *
|
|
276
|
+
* Should any Covered Software prove defective in any respect, You *
|
|
277
|
+
* (not any Contributor) assume the cost of any necessary servicing, *
|
|
278
|
+
* repair, or correction. This disclaimer of warranty constitutes an *
|
|
279
|
+
* essential part of this License. No use of any Covered Software is *
|
|
280
|
+
* authorized under this License except under this disclaimer. *
|
|
281
|
+
* *
|
|
282
|
+
************************************************************************
|
|
283
|
+
|
|
284
|
+
************************************************************************
|
|
285
|
+
* *
|
|
286
|
+
* 7. Limitation of Liability *
|
|
287
|
+
* -------------------------- *
|
|
288
|
+
* *
|
|
289
|
+
* Under no circumstances and under no legal theory, whether tort *
|
|
290
|
+
* (including negligence), contract, or otherwise, shall any *
|
|
291
|
+
* Contributor, or anyone who distributes Covered Software as *
|
|
292
|
+
* permitted above, be liable to You for any direct, indirect, *
|
|
293
|
+
* special, incidental, or consequential damages of any character *
|
|
294
|
+
* including, without limitation, damages for lost profits, loss of *
|
|
295
|
+
* goodwill, work stoppage, computer failure or malfunction, or any *
|
|
296
|
+
* and all other commercial damages or losses, even if such party *
|
|
297
|
+
* shall have been informed of the possibility of such damages. This *
|
|
298
|
+
* limitation of liability shall not apply to liability for death or *
|
|
299
|
+
* personal injury resulting from such party's negligence to the *
|
|
300
|
+
* extent applicable law prohibits such limitation. Some *
|
|
301
|
+
* jurisdictions do not allow the exclusion or limitation of *
|
|
302
|
+
* incidental or consequential damages, so this exclusion and *
|
|
303
|
+
* limitation may not apply to You. *
|
|
304
|
+
* *
|
|
305
|
+
************************************************************************
|
|
306
|
+
|
|
307
|
+
8. Litigation
|
|
308
|
+
-------------
|
|
309
|
+
|
|
310
|
+
Any litigation relating to this License may be brought only in the
|
|
311
|
+
courts of a jurisdiction where the defendant maintains its principal
|
|
312
|
+
place of business and such litigation shall be governed by laws of that
|
|
313
|
+
jurisdiction, without reference to its conflict-of-law provisions.
|
|
314
|
+
Nothing in this Section shall prevent a party's ability to bring
|
|
315
|
+
cross-claims or counter-claims.
|
|
316
|
+
|
|
317
|
+
9. Miscellaneous
|
|
318
|
+
----------------
|
|
319
|
+
|
|
320
|
+
This License represents the complete agreement concerning the subject
|
|
321
|
+
matter hereof. If any provision of this License is held to be
|
|
322
|
+
unenforceable, such provision shall be reformed only to the extent
|
|
323
|
+
necessary to make it enforceable. Any law or regulation which provides
|
|
324
|
+
that the language of a contract shall be construed against the drafter
|
|
325
|
+
shall not be used to construe this License against a Contributor.
|
|
326
|
+
|
|
327
|
+
10. Versions of the License
|
|
328
|
+
---------------------------
|
|
329
|
+
|
|
330
|
+
10.1. New Versions
|
|
331
|
+
|
|
332
|
+
Mozilla Foundation is the license steward. Except as provided in Section
|
|
333
|
+
10.3, no one other than the license steward has the right to modify or
|
|
334
|
+
publish new versions of this License. Each version will be given a
|
|
335
|
+
distinguishing version number.
|
|
336
|
+
|
|
337
|
+
10.2. Effect of New Versions
|
|
338
|
+
|
|
339
|
+
You may distribute the Covered Software under the terms of the version
|
|
340
|
+
of the License under which You originally received the Covered Software,
|
|
341
|
+
or under the terms of any subsequent version published by the license
|
|
342
|
+
steward.
|
|
343
|
+
|
|
344
|
+
10.3. Modified Versions
|
|
345
|
+
|
|
346
|
+
If you create software not governed by this License, and you want to
|
|
347
|
+
create a new license for such software, you may create and use a
|
|
348
|
+
modified version of this License if you rename the license and remove
|
|
349
|
+
any references to the name of the license steward (except to note that
|
|
350
|
+
such modified license differs from this License).
|
|
351
|
+
|
|
352
|
+
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
|
353
|
+
Licenses
|
|
354
|
+
|
|
355
|
+
If You choose to distribute Source Code Form that is Incompatible With
|
|
356
|
+
Secondary Licenses under the terms of this version of the License, the
|
|
357
|
+
notice described in Exhibit B of this License must be attached.
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
-------------------------------------------
|
|
361
|
+
|
|
362
|
+
Map tiles by [Stamen Design](http://stamen.com "Stamen Design"), under
|
|
363
|
+
[CC BY 3.0](http://creativecommons.org/licenses/by/3.0 "CC BY 3.0").
|
|
364
|
+
Data by [OpenStreetMap](http://openstreetmap.org "OpenStreetMap"),
|
|
365
|
+
under [CC BY SA](http://creativecommons.org/licenses/by-sa/3.0 "CC BY SA").
|
package/README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# StoryMapJS: Maps that tell stories.
|
|
2
|
+
|
|
3
|
+
> **Important:** this is an **unofficial, unapproved fork** of the original
|
|
4
|
+
> [NUKnightLab/StoryMapJS](https://github.com/NUKnightLab/StoryMapJS)
|
|
5
|
+
> repository. It is a proof of concept for an AI-based renovation of the
|
|
6
|
+
> codebase, built using the model **GLM 5.3 Flash**. It is not endorsed by,
|
|
7
|
+
> affiliated with, or supported by Northwestern University Knight Lab.
|
|
8
|
+
|
|
9
|
+
This fork is a **viewer-only library**: it renders existing StoryMap JSON
|
|
10
|
+
files (or IIIF Presentation manifests) with TypeScript + Vite + OpenLayers.
|
|
11
|
+
There is no authoring tool — create your storymap JSON by hand or with your
|
|
12
|
+
own code, and see `docs/` for the migration notes from the original
|
|
13
|
+
Knight Lab release.
|
|
14
|
+
|
|
15
|
+
## Development
|
|
16
|
+
|
|
17
|
+
See docs/DEVELOPMENT.md to get setup for local development of StoryMapJS. This
|
|
18
|
+
repository is the viewer library only (TypeScript + Vite + OpenLayers);
|
|
19
|
+
StoryMap JSON is validated against the schema in `schema/` on load and via
|
|
20
|
+
`npm run validate`.
|
|
21
|
+
|
|
22
|
+
## Contributing language translations
|
|
23
|
+
|
|
24
|
+
StoryMap ships locale files for dozens of languages under
|
|
25
|
+
`src/language/locale/` (for example
|
|
26
|
+
[`es.json`](src/language/locale/es.json)). To add or improve a translation,
|
|
27
|
+
copy an existing file and edit the quoted strings — please _don't_ change the
|
|
28
|
+
"keys" (the unquoted strings). The file name is the language code, e.g.
|
|
29
|
+
`es.json` (codes like `zh-cn.json` and `zh-tw.json` are also supported — the
|
|
30
|
+
value of the storymap's `language` option must match the file name).
|
|
31
|
+
|
|
32
|
+
## IIIF images
|
|
33
|
+
|
|
34
|
+
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.
|
|
35
|
+
|
|
36
|
+
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.
|
|
37
|
+
|
|
38
|
+
## Map Options
|
|
39
|
+
|
|
40
|
+
To disable connecting lines on maps set `map_as_image: true` in the storymap
|
|
41
|
+
options (the default `false` renders cartography).
|
|
42
|
+
|
|
43
|
+
The menubar buttons can be disabled individually:
|
|
44
|
+
|
|
45
|
+
show_overview: false, // map overview button
|
|
46
|
+
show_back_to_start: false, // back to the beginning button
|
|
47
|
+
fullscreen: false, // fullscreen toggle
|
|
48
|
+
|
|
49
|
+
(true is the default; setting the option to false hides the button.)
|
|
50
|
+
|
|
51
|
+
More config options available to do what you want with the line:
|
|
52
|
+
|
|
53
|
+
line_follows_path: true, // Map history path follows default line, if false it will connect previous and current only
|
|
54
|
+
line_color: "#c34528",
|
|
55
|
+
line_color_inactive: "#CCC",
|
|
56
|
+
line_join: "miter",
|
|
57
|
+
line_weight: 3,
|
|
58
|
+
line_opacity: 0.80,
|
|
59
|
+
line_dash: "5,5",
|
|
60
|
+
show_lines: true,
|
|
61
|
+
show_history_line: true,
|
|
62
|
+
|
|
63
|
+
To disable zoom calculation/edit zoom level set calculate_zoom to false in the config options.
|
|
64
|
+
|
|
65
|
+
Images can now be used in place of map pins.
|
|
66
|
+
Use `image` inside the location object and include a url to use, together with
|
|
67
|
+
`use_custom_marker: true` in the location object (or set `use_custom_markers:
|
|
68
|
+
true` globally in the storymap options). Same goes for custom icons except you
|
|
69
|
+
need `icon` inside the location object.
|
|
70
|
+
|
|
71
|
+
### Limit the map to a bounding box
|
|
72
|
+
|
|
73
|
+
Set `map_bbox` to `[west, south, east, north]` (lon/lat) to constrain the map —
|
|
74
|
+
nothing outside of the box can be visible:
|
|
75
|
+
|
|
76
|
+
map_bbox: [-11, 34, 32, 71], // or null (the default) to leave the map unconstrained
|
|
77
|
+
|
|
78
|
+
For image-space (IIIF) maps the coordinates are raw image pixels. When the
|
|
79
|
+
slide content panel is opaque (a solid background that hides the map behind it),
|
|
80
|
+
the initial fit accounts for the covered area so the story stays inside the
|
|
81
|
+
visible region.
|
|
82
|
+
|
|
83
|
+
## Custom HTML in slide content
|
|
84
|
+
|
|
85
|
+
Slide text is rendered as HTML: the `text` (and `headline`) fields accept
|
|
86
|
+
arbitrary markup. If the text contains no `<p>` tag, it is wrapped in one
|
|
87
|
+
automatically; otherwise it is used as-is. This means you can use links,
|
|
88
|
+
images, lists, emphasis and spans in your slides, e.g.:
|
|
89
|
+
|
|
90
|
+
{
|
|
91
|
+
"headline": "1920: An American in the Making",
|
|
92
|
+
"text": "Immigrants arriving at <a href=\"https://example.org\">Ellis Island</a>.<br><span class='vco-note'>Photograph: Library of Congress.</span>"
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
The `vco-note` span renders as a small grey note, like the built-in credits.
|
|
96
|
+
|
|
97
|
+
**Caution:** the text is rendered raw — it is not sanitized. Only load
|
|
98
|
+
storymaps from sources you trust.
|
|
99
|
+
|
|
100
|
+
## GDPR consent for external services
|
|
101
|
+
|
|
102
|
+
Set the `consent_required` option to `true` to ask for permission before
|
|
103
|
+
anything is loaded from external services (media embeds such as YouTube,
|
|
104
|
+
Twitter or SoundCloud, map tiles, and external font CSS):
|
|
105
|
+
|
|
106
|
+
{
|
|
107
|
+
"consent_required": true,
|
|
108
|
+
...
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
Each service asks with an Allow/Deny panel; answering one panel resolves every
|
|
112
|
+
pending panel of the same service. If a decision was already stored in the
|
|
113
|
+
cookie, the panel is skipped entirely. Denied services show a placeholder
|
|
114
|
+
instead of the media, and the map renders without tiles until they are
|
|
115
|
+
allowed. Decisions are stored in a cookie (`storymapjs-consent`) for 90
|
|
116
|
+
days — clearing cookies asks again.
|
|
117
|
+
|
|
118
|
+
## Troubleshooting
|
|
119
|
+
|
|
120
|
+
If a storymap fails to render, open the browser console: the viewer logs
|
|
121
|
+
fetch and validation errors (e.g. "could not load storymap data from ...").
|
|
122
|
+
The `error` event also fires for programmatic consumers.
|
|
123
|
+
|
|
124
|
+
## Bundled credentials
|
|
125
|
+
|
|
126
|
+
The viewer ships no credentials. Mapbox/Stadia tiles need a token passed via
|
|
127
|
+
`map_access_token`, and `flickr.com/photos` API URLs need `api_key_flickr`
|
|
128
|
+
(both settable in the storymap options).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./main-BDSRsIiB.js";import"./modulepreload-polyfill-P2Xu9kJm.js";function t(e){document.title=`StoryMapJS: `+e.title}window.storymap=new e(`storymap-embed`,`./demo.json`,{},{title:t});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./main-BDSRsIiB.js";import"./modulepreload-polyfill-P2Xu9kJm.js";window.__smErrors=[],window.__smReady=!1,window.addEventListener(`error`,e=>{window.__smErrors.push(String(e.message||e))});var t=new URLSearchParams(window.location.search),n=t.get(`manifest`),r=t.get(`url`),i=n===null?t.get(`example`):n,a=n===null?`/examples/`:`/examples-iiif/`,o={};if(t.get(`options`))try{o=JSON.parse(t.get(`options`))}catch(e){window.__smErrors.push(`harness: bad options param: `+e)}var s=r??a+i+`.json`;fetch(s).then(e=>e.json()).then(t=>{window.__sm=new e(`storymap-embed`,t,o,{}),window.__smReady=!0}).catch(e=>{window.__smErrors.push(`harness: `+(e&&e.message?e.message:String(e))),window.__smReady=!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./modulepreload-polyfill-P2Xu9kJm.js";var e=[{id:`katrina`,title:`Hurricane Katrina`,kind:`Map`},{id:`population`,title:`US Population Shifts`,kind:`Map`},{id:`marktwain`,title:`Mark Twain's Travels`,kind:`Map`},{id:`seurat`,title:`A Sunday on La Grande Jatte`,kind:`Gigapixel`},{id:`iiif-wellcome`,title:`Wellcome Collection (IIIF)`,kind:`IIIF`},{id:`president`,title:`A Month in the Life of President Obama`,kind:`Map`},{url:`https://s3.amazonaws.com/uploads.knightlab.com/storymapjs/a1a349b51799ee49e96bed10cc235e7f/garden-of-earthly-delights/published.json`,thumb:`bosch-garden`,title:`The Garden of Earthly Delights – Hieronymus Bosch`,kind:`Knight Lab example`},{url:`https://uploads.knightlab.com/storymapjs/3df56e350378e51781746bfb2a2ea428/test/published.json`,thumb:`southern-literary-trail`,title:`Southern Literary Trail`,kind:`Georgia Humanities`}];function t(e){let t=e.url??`examples/`+e.id+`.json`,n=e.thumb??e.id??``,r=document.createElement(`a`);r.className=`card`,r.href=`./embed/index.html?url=${encodeURIComponent(t)}`;let i=document.createElement(`span`);i.className=`header-image`;let a=document.createElement(`span`);a.className=`header-image-background bw`,a.style.backgroundImage=`url('./thumbs/${n}.jpg'), linear-gradient(135deg, #b8b8b8, #646464)`,a.setAttribute(`role`,`img`),a.setAttribute(`aria-label`,e.title),i.append(a);let o=document.createElement(`article`);o.className=`card-content`;let s=document.createElement(`h3`);s.textContent=e.title,o.append(s);let c=document.createElement(`footer`);return c.textContent=e.kind,r.append(i,o,c),r}var n=document.getElementById(`examples-cards`);if(n){n.classList.add(`cards-link`);for(let r of e)n.append(t(r))}var r=document.getElementById(`demo-frame`);if(r){let e=()=>{r.style.height=window.innerHeight-20+`px`};e(),window.addEventListener(`resize`,e)}
|