@projektemacher/storymapjs 0.10.7 → 0.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/CHANGELOG +350 -19
  2. package/README.md +43 -9
  3. package/dist/assets/demo-DBpeF31K.js +1 -0
  4. package/dist/assets/harness-Cr0rYpvt.js +1 -0
  5. package/dist/assets/harness-multi-CYHgI0a9.js +1 -0
  6. package/dist/assets/harness-support-Do7sIp2j.js +1 -0
  7. package/dist/assets/index-wHPqGrBS.js +1 -0
  8. package/dist/assets/main-DXalctuR.js +17 -0
  9. package/dist/context.json +12 -9
  10. package/dist/css/fonts/files/amatic-sc-cyrillic-400-normal.woff2 +0 -0
  11. package/dist/css/fonts/files/amatic-sc-cyrillic-700-normal.woff2 +0 -0
  12. package/dist/css/fonts/files/amatic-sc-hebrew-400-normal.woff2 +0 -0
  13. package/dist/css/fonts/files/amatic-sc-hebrew-700-normal.woff2 +0 -0
  14. package/dist/css/fonts/files/amatic-sc-vietnamese-400-normal.woff2 +0 -0
  15. package/dist/css/fonts/files/amatic-sc-vietnamese-700-normal.woff2 +0 -0
  16. package/dist/css/fonts/files/bitter-cyrillic-100-italic.woff2 +0 -0
  17. package/dist/css/fonts/files/bitter-cyrillic-100-normal.woff2 +0 -0
  18. package/dist/css/fonts/files/bitter-cyrillic-200-italic.woff2 +0 -0
  19. package/dist/css/fonts/files/bitter-cyrillic-200-normal.woff2 +0 -0
  20. package/dist/css/fonts/files/bitter-cyrillic-300-italic.woff2 +0 -0
  21. package/dist/css/fonts/files/bitter-cyrillic-300-normal.woff2 +0 -0
  22. package/dist/css/fonts/files/bitter-cyrillic-400-italic.woff2 +0 -0
  23. package/dist/css/fonts/files/bitter-cyrillic-400-normal.woff2 +0 -0
  24. package/dist/css/fonts/files/bitter-cyrillic-500-italic.woff2 +0 -0
  25. package/dist/css/fonts/files/bitter-cyrillic-500-normal.woff2 +0 -0
  26. package/dist/css/fonts/files/bitter-cyrillic-600-italic.woff2 +0 -0
  27. package/dist/css/fonts/files/bitter-cyrillic-600-normal.woff2 +0 -0
  28. package/dist/css/fonts/files/bitter-cyrillic-700-italic.woff2 +0 -0
  29. package/dist/css/fonts/files/bitter-cyrillic-700-normal.woff2 +0 -0
  30. package/dist/css/fonts/files/bitter-cyrillic-800-italic.woff2 +0 -0
  31. package/dist/css/fonts/files/bitter-cyrillic-800-normal.woff2 +0 -0
  32. package/dist/css/fonts/files/bitter-cyrillic-900-italic.woff2 +0 -0
  33. package/dist/css/fonts/files/bitter-cyrillic-900-normal.woff2 +0 -0
  34. package/dist/css/fonts/files/bitter-cyrillic-ext-100-italic.woff2 +0 -0
  35. package/dist/css/fonts/files/bitter-cyrillic-ext-100-normal.woff2 +0 -0
  36. package/dist/css/fonts/files/bitter-cyrillic-ext-200-italic.woff2 +0 -0
  37. package/dist/css/fonts/files/bitter-cyrillic-ext-200-normal.woff2 +0 -0
  38. package/dist/css/fonts/files/bitter-cyrillic-ext-300-italic.woff2 +0 -0
  39. package/dist/css/fonts/files/bitter-cyrillic-ext-300-normal.woff2 +0 -0
  40. package/dist/css/fonts/files/bitter-cyrillic-ext-400-italic.woff2 +0 -0
  41. package/dist/css/fonts/files/bitter-cyrillic-ext-400-normal.woff2 +0 -0
  42. package/dist/css/fonts/files/bitter-cyrillic-ext-500-italic.woff2 +0 -0
  43. package/dist/css/fonts/files/bitter-cyrillic-ext-500-normal.woff2 +0 -0
  44. package/dist/css/fonts/files/bitter-cyrillic-ext-600-italic.woff2 +0 -0
  45. package/dist/css/fonts/files/bitter-cyrillic-ext-600-normal.woff2 +0 -0
  46. package/dist/css/fonts/files/bitter-cyrillic-ext-700-italic.woff2 +0 -0
  47. package/dist/css/fonts/files/bitter-cyrillic-ext-700-normal.woff2 +0 -0
  48. package/dist/css/fonts/files/bitter-cyrillic-ext-800-italic.woff2 +0 -0
  49. package/dist/css/fonts/files/bitter-cyrillic-ext-800-normal.woff2 +0 -0
  50. package/dist/css/fonts/files/bitter-cyrillic-ext-900-italic.woff2 +0 -0
  51. package/dist/css/fonts/files/bitter-cyrillic-ext-900-normal.woff2 +0 -0
  52. package/dist/css/fonts/files/bitter-cyrillic-ext-wght-italic.woff2 +0 -0
  53. package/dist/css/fonts/files/bitter-cyrillic-ext-wght-normal.woff2 +0 -0
  54. package/dist/css/fonts/files/bitter-cyrillic-wght-italic.woff2 +0 -0
  55. package/dist/css/fonts/files/bitter-cyrillic-wght-normal.woff2 +0 -0
  56. package/dist/css/fonts/files/bitter-vietnamese-100-italic.woff2 +0 -0
  57. package/dist/css/fonts/files/bitter-vietnamese-100-normal.woff2 +0 -0
  58. package/dist/css/fonts/files/bitter-vietnamese-200-italic.woff2 +0 -0
  59. package/dist/css/fonts/files/bitter-vietnamese-200-normal.woff2 +0 -0
  60. package/dist/css/fonts/files/bitter-vietnamese-300-italic.woff2 +0 -0
  61. package/dist/css/fonts/files/bitter-vietnamese-300-normal.woff2 +0 -0
  62. package/dist/css/fonts/files/bitter-vietnamese-400-italic.woff2 +0 -0
  63. package/dist/css/fonts/files/bitter-vietnamese-400-normal.woff2 +0 -0
  64. package/dist/css/fonts/files/bitter-vietnamese-500-italic.woff2 +0 -0
  65. package/dist/css/fonts/files/bitter-vietnamese-500-normal.woff2 +0 -0
  66. package/dist/css/fonts/files/bitter-vietnamese-600-italic.woff2 +0 -0
  67. package/dist/css/fonts/files/bitter-vietnamese-600-normal.woff2 +0 -0
  68. package/dist/css/fonts/files/bitter-vietnamese-700-italic.woff2 +0 -0
  69. package/dist/css/fonts/files/bitter-vietnamese-700-normal.woff2 +0 -0
  70. package/dist/css/fonts/files/bitter-vietnamese-800-italic.woff2 +0 -0
  71. package/dist/css/fonts/files/bitter-vietnamese-800-normal.woff2 +0 -0
  72. package/dist/css/fonts/files/bitter-vietnamese-900-italic.woff2 +0 -0
  73. package/dist/css/fonts/files/bitter-vietnamese-900-normal.woff2 +0 -0
  74. package/dist/css/fonts/files/bitter-vietnamese-wght-italic.woff2 +0 -0
  75. package/dist/css/fonts/files/bitter-vietnamese-wght-normal.woff2 +0 -0
  76. package/dist/css/fonts/files/cairo-arabic-200-normal.woff2 +0 -0
  77. package/dist/css/fonts/files/cairo-arabic-300-normal.woff2 +0 -0
  78. package/dist/css/fonts/files/cairo-arabic-400-normal.woff2 +0 -0
  79. package/dist/css/fonts/files/cairo-arabic-500-normal.woff2 +0 -0
  80. package/dist/css/fonts/files/cairo-arabic-600-normal.woff2 +0 -0
  81. package/dist/css/fonts/files/cairo-arabic-700-normal.woff2 +0 -0
  82. package/dist/css/fonts/files/cairo-arabic-800-normal.woff2 +0 -0
  83. package/dist/css/fonts/files/cairo-arabic-900-normal.woff2 +0 -0
  84. package/dist/css/fonts/files/cairo-latin-200-normal.woff2 +0 -0
  85. package/dist/css/fonts/files/cairo-latin-300-normal.woff2 +0 -0
  86. package/dist/css/fonts/files/cairo-latin-400-normal.woff2 +0 -0
  87. package/dist/css/fonts/files/cairo-latin-500-normal.woff2 +0 -0
  88. package/dist/css/fonts/files/cairo-latin-600-normal.woff2 +0 -0
  89. package/dist/css/fonts/files/cairo-latin-700-normal.woff2 +0 -0
  90. package/dist/css/fonts/files/cairo-latin-800-normal.woff2 +0 -0
  91. package/dist/css/fonts/files/cairo-latin-900-normal.woff2 +0 -0
  92. package/dist/css/fonts/files/cairo-latin-ext-200-normal.woff2 +0 -0
  93. package/dist/css/fonts/files/cairo-latin-ext-300-normal.woff2 +0 -0
  94. package/dist/css/fonts/files/cairo-latin-ext-400-normal.woff2 +0 -0
  95. package/dist/css/fonts/files/cairo-latin-ext-500-normal.woff2 +0 -0
  96. package/dist/css/fonts/files/cairo-latin-ext-600-normal.woff2 +0 -0
  97. package/dist/css/fonts/files/cairo-latin-ext-700-normal.woff2 +0 -0
  98. package/dist/css/fonts/files/cairo-latin-ext-800-normal.woff2 +0 -0
  99. package/dist/css/fonts/files/cairo-latin-ext-900-normal.woff2 +0 -0
  100. package/dist/css/fonts/files/dancing-script-vietnamese-wght-normal.woff2 +0 -0
  101. package/dist/css/fonts/files/eb-garamond-cyrillic-ext-wght-italic.woff2 +0 -0
  102. package/dist/css/fonts/files/eb-garamond-cyrillic-ext-wght-normal.woff2 +0 -0
  103. package/dist/css/fonts/files/eb-garamond-cyrillic-wght-italic.woff2 +0 -0
  104. package/dist/css/fonts/files/eb-garamond-cyrillic-wght-normal.woff2 +0 -0
  105. package/dist/css/fonts/files/eb-garamond-greek-ext-wght-italic.woff2 +0 -0
  106. package/dist/css/fonts/files/eb-garamond-greek-ext-wght-normal.woff2 +0 -0
  107. package/dist/css/fonts/files/eb-garamond-greek-wght-italic.woff2 +0 -0
  108. package/dist/css/fonts/files/eb-garamond-greek-wght-normal.woff2 +0 -0
  109. package/dist/css/fonts/files/eb-garamond-vietnamese-wght-italic.woff2 +0 -0
  110. package/dist/css/fonts/files/eb-garamond-vietnamese-wght-normal.woff2 +0 -0
  111. package/dist/css/fonts/files/gentium-book-plus-cyrillic-400-italic.woff2 +0 -0
  112. package/dist/css/fonts/files/gentium-book-plus-cyrillic-400-normal.woff2 +0 -0
  113. package/dist/css/fonts/files/gentium-book-plus-cyrillic-700-italic.woff2 +0 -0
  114. package/dist/css/fonts/files/gentium-book-plus-cyrillic-700-normal.woff2 +0 -0
  115. package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-400-italic.woff2 +0 -0
  116. package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-400-normal.woff2 +0 -0
  117. package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-700-italic.woff2 +0 -0
  118. package/dist/css/fonts/files/gentium-book-plus-cyrillic-ext-700-normal.woff2 +0 -0
  119. package/dist/css/fonts/files/gentium-book-plus-greek-400-italic.woff2 +0 -0
  120. package/dist/css/fonts/files/gentium-book-plus-greek-400-normal.woff2 +0 -0
  121. package/dist/css/fonts/files/gentium-book-plus-greek-700-italic.woff2 +0 -0
  122. package/dist/css/fonts/files/gentium-book-plus-greek-700-normal.woff2 +0 -0
  123. package/dist/css/fonts/files/gentium-book-plus-greek-ext-400-italic.woff2 +0 -0
  124. package/dist/css/fonts/files/gentium-book-plus-greek-ext-400-normal.woff2 +0 -0
  125. package/dist/css/fonts/files/gentium-book-plus-greek-ext-700-italic.woff2 +0 -0
  126. package/dist/css/fonts/files/gentium-book-plus-greek-ext-700-normal.woff2 +0 -0
  127. package/dist/css/fonts/files/gentium-book-plus-vietnamese-400-italic.woff2 +0 -0
  128. package/dist/css/fonts/files/gentium-book-plus-vietnamese-400-normal.woff2 +0 -0
  129. package/dist/css/fonts/files/gentium-book-plus-vietnamese-700-italic.woff2 +0 -0
  130. package/dist/css/fonts/files/gentium-book-plus-vietnamese-700-normal.woff2 +0 -0
  131. package/dist/css/fonts/files/old-standard-tt-cyrillic-400-italic.woff2 +0 -0
  132. package/dist/css/fonts/files/old-standard-tt-cyrillic-400-normal.woff2 +0 -0
  133. package/dist/css/fonts/files/old-standard-tt-cyrillic-700-normal.woff2 +0 -0
  134. package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-400-italic.woff2 +0 -0
  135. package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-400-normal.woff2 +0 -0
  136. package/dist/css/fonts/files/old-standard-tt-cyrillic-ext-700-normal.woff2 +0 -0
  137. package/dist/css/fonts/files/old-standard-tt-vietnamese-400-italic.woff2 +0 -0
  138. package/dist/css/fonts/files/old-standard-tt-vietnamese-400-normal.woff2 +0 -0
  139. package/dist/css/fonts/files/old-standard-tt-vietnamese-700-normal.woff2 +0 -0
  140. package/dist/css/fonts/files/open-sans-cyrillic-ext-wght-italic.woff2 +0 -0
  141. package/dist/css/fonts/files/open-sans-cyrillic-ext-wght-normal.woff2 +0 -0
  142. package/dist/css/fonts/files/open-sans-cyrillic-wght-italic.woff2 +0 -0
  143. package/dist/css/fonts/files/open-sans-cyrillic-wght-normal.woff2 +0 -0
  144. package/dist/css/fonts/files/open-sans-greek-ext-wght-italic.woff2 +0 -0
  145. package/dist/css/fonts/files/open-sans-greek-ext-wght-normal.woff2 +0 -0
  146. package/dist/css/fonts/files/open-sans-greek-wght-italic.woff2 +0 -0
  147. package/dist/css/fonts/files/open-sans-greek-wght-normal.woff2 +0 -0
  148. package/dist/css/fonts/files/open-sans-hebrew-wght-italic.woff2 +0 -0
  149. package/dist/css/fonts/files/open-sans-hebrew-wght-normal.woff2 +0 -0
  150. package/dist/css/fonts/files/open-sans-vietnamese-wght-italic.woff2 +0 -0
  151. package/dist/css/fonts/files/open-sans-vietnamese-wght-normal.woff2 +0 -0
  152. package/dist/css/fonts/files/playfair-display-cyrillic-wght-italic.woff2 +0 -0
  153. package/dist/css/fonts/files/playfair-display-cyrillic-wght-normal.woff2 +0 -0
  154. package/dist/css/fonts/files/playfair-display-sc-cyrillic-400-italic.woff2 +0 -0
  155. package/dist/css/fonts/files/playfair-display-sc-cyrillic-400-normal.woff2 +0 -0
  156. package/dist/css/fonts/files/playfair-display-sc-cyrillic-700-italic.woff2 +0 -0
  157. package/dist/css/fonts/files/playfair-display-sc-cyrillic-700-normal.woff2 +0 -0
  158. package/dist/css/fonts/files/playfair-display-sc-cyrillic-900-italic.woff2 +0 -0
  159. package/dist/css/fonts/files/playfair-display-sc-cyrillic-900-normal.woff2 +0 -0
  160. package/dist/css/fonts/files/playfair-display-sc-vietnamese-400-italic.woff2 +0 -0
  161. package/dist/css/fonts/files/playfair-display-sc-vietnamese-400-normal.woff2 +0 -0
  162. package/dist/css/fonts/files/playfair-display-sc-vietnamese-700-italic.woff2 +0 -0
  163. package/dist/css/fonts/files/playfair-display-sc-vietnamese-700-normal.woff2 +0 -0
  164. package/dist/css/fonts/files/playfair-display-sc-vietnamese-900-italic.woff2 +0 -0
  165. package/dist/css/fonts/files/playfair-display-sc-vietnamese-900-normal.woff2 +0 -0
  166. package/dist/css/fonts/files/playfair-display-vietnamese-wght-italic.woff2 +0 -0
  167. package/dist/css/fonts/files/playfair-display-vietnamese-wght-normal.woff2 +0 -0
  168. package/dist/css/fonts/files/pt-sans-cyrillic-400-italic.woff2 +0 -0
  169. package/dist/css/fonts/files/pt-sans-cyrillic-400-normal.woff2 +0 -0
  170. package/dist/css/fonts/files/pt-sans-cyrillic-700-italic.woff2 +0 -0
  171. package/dist/css/fonts/files/pt-sans-cyrillic-700-normal.woff2 +0 -0
  172. package/dist/css/fonts/files/pt-sans-cyrillic-ext-400-italic.woff2 +0 -0
  173. package/dist/css/fonts/files/pt-sans-cyrillic-ext-400-normal.woff2 +0 -0
  174. package/dist/css/fonts/files/pt-sans-cyrillic-ext-700-italic.woff2 +0 -0
  175. package/dist/css/fonts/files/pt-sans-cyrillic-ext-700-normal.woff2 +0 -0
  176. package/dist/css/fonts/files/pt-sans-narrow-cyrillic-400-normal.woff2 +0 -0
  177. package/dist/css/fonts/files/pt-sans-narrow-cyrillic-700-normal.woff2 +0 -0
  178. package/dist/css/fonts/files/pt-sans-narrow-cyrillic-ext-400-normal.woff2 +0 -0
  179. package/dist/css/fonts/files/pt-sans-narrow-cyrillic-ext-700-normal.woff2 +0 -0
  180. package/dist/css/fonts/files/pt-serif-cyrillic-400-italic.woff2 +0 -0
  181. package/dist/css/fonts/files/pt-serif-cyrillic-400-normal.woff2 +0 -0
  182. package/dist/css/fonts/files/pt-serif-cyrillic-700-italic.woff2 +0 -0
  183. package/dist/css/fonts/files/pt-serif-cyrillic-700-normal.woff2 +0 -0
  184. package/dist/css/fonts/files/pt-serif-cyrillic-ext-400-italic.woff2 +0 -0
  185. package/dist/css/fonts/files/pt-serif-cyrillic-ext-400-normal.woff2 +0 -0
  186. package/dist/css/fonts/files/pt-serif-cyrillic-ext-700-italic.woff2 +0 -0
  187. package/dist/css/fonts/files/pt-serif-cyrillic-ext-700-normal.woff2 +0 -0
  188. package/dist/css/fonts/files/raleway-cyrillic-ext-wght-italic.woff2 +0 -0
  189. package/dist/css/fonts/files/raleway-cyrillic-ext-wght-normal.woff2 +0 -0
  190. package/dist/css/fonts/files/raleway-cyrillic-wght-italic.woff2 +0 -0
  191. package/dist/css/fonts/files/raleway-cyrillic-wght-normal.woff2 +0 -0
  192. package/dist/css/fonts/files/raleway-vietnamese-wght-italic.woff2 +0 -0
  193. package/dist/css/fonts/files/raleway-vietnamese-wght-normal.woff2 +0 -0
  194. package/dist/css/fonts/files/roboto-slab-cyrillic-ext-wght-normal.woff2 +0 -0
  195. package/dist/css/fonts/files/roboto-slab-cyrillic-wght-normal.woff2 +0 -0
  196. package/dist/css/fonts/files/roboto-slab-greek-ext-wght-normal.woff2 +0 -0
  197. package/dist/css/fonts/files/roboto-slab-greek-wght-normal.woff2 +0 -0
  198. package/dist/css/fonts/files/roboto-slab-vietnamese-wght-normal.woff2 +0 -0
  199. package/dist/css/fonts/files/ubuntu-cyrillic-300-italic.woff2 +0 -0
  200. package/dist/css/fonts/files/ubuntu-cyrillic-300-normal.woff2 +0 -0
  201. package/dist/css/fonts/files/ubuntu-cyrillic-400-italic.woff2 +0 -0
  202. package/dist/css/fonts/files/ubuntu-cyrillic-400-normal.woff2 +0 -0
  203. package/dist/css/fonts/files/ubuntu-cyrillic-500-italic.woff2 +0 -0
  204. package/dist/css/fonts/files/ubuntu-cyrillic-500-normal.woff2 +0 -0
  205. package/dist/css/fonts/files/ubuntu-cyrillic-700-italic.woff2 +0 -0
  206. package/dist/css/fonts/files/ubuntu-cyrillic-700-normal.woff2 +0 -0
  207. package/dist/css/fonts/files/ubuntu-cyrillic-ext-300-italic.woff2 +0 -0
  208. package/dist/css/fonts/files/ubuntu-cyrillic-ext-300-normal.woff2 +0 -0
  209. package/dist/css/fonts/files/ubuntu-cyrillic-ext-400-italic.woff2 +0 -0
  210. package/dist/css/fonts/files/ubuntu-cyrillic-ext-400-normal.woff2 +0 -0
  211. package/dist/css/fonts/files/ubuntu-cyrillic-ext-500-italic.woff2 +0 -0
  212. package/dist/css/fonts/files/ubuntu-cyrillic-ext-500-normal.woff2 +0 -0
  213. package/dist/css/fonts/files/ubuntu-cyrillic-ext-700-italic.woff2 +0 -0
  214. package/dist/css/fonts/files/ubuntu-cyrillic-ext-700-normal.woff2 +0 -0
  215. package/dist/css/fonts/files/ubuntu-greek-300-italic.woff2 +0 -0
  216. package/dist/css/fonts/files/ubuntu-greek-300-normal.woff2 +0 -0
  217. package/dist/css/fonts/files/ubuntu-greek-400-italic.woff2 +0 -0
  218. package/dist/css/fonts/files/ubuntu-greek-400-normal.woff2 +0 -0
  219. package/dist/css/fonts/files/ubuntu-greek-500-italic.woff2 +0 -0
  220. package/dist/css/fonts/files/ubuntu-greek-500-normal.woff2 +0 -0
  221. package/dist/css/fonts/files/ubuntu-greek-700-italic.woff2 +0 -0
  222. package/dist/css/fonts/files/ubuntu-greek-700-normal.woff2 +0 -0
  223. package/dist/css/fonts/files/ubuntu-greek-ext-300-italic.woff2 +0 -0
  224. package/dist/css/fonts/files/ubuntu-greek-ext-300-normal.woff2 +0 -0
  225. package/dist/css/fonts/files/ubuntu-greek-ext-400-italic.woff2 +0 -0
  226. package/dist/css/fonts/files/ubuntu-greek-ext-400-normal.woff2 +0 -0
  227. package/dist/css/fonts/files/ubuntu-greek-ext-500-italic.woff2 +0 -0
  228. package/dist/css/fonts/files/ubuntu-greek-ext-500-normal.woff2 +0 -0
  229. package/dist/css/fonts/files/ubuntu-greek-ext-700-italic.woff2 +0 -0
  230. package/dist/css/fonts/files/ubuntu-greek-ext-700-normal.woff2 +0 -0
  231. package/dist/css/fonts/files/unica-one-vietnamese-400-normal.woff2 +0 -0
  232. package/dist/css/fonts/files/vollkorn-cyrillic-ext-wght-italic.woff2 +0 -0
  233. package/dist/css/fonts/files/vollkorn-cyrillic-ext-wght-normal.woff2 +0 -0
  234. package/dist/css/fonts/files/vollkorn-cyrillic-wght-italic.woff2 +0 -0
  235. package/dist/css/fonts/files/vollkorn-cyrillic-wght-normal.woff2 +0 -0
  236. package/dist/css/fonts/files/vollkorn-greek-wght-italic.woff2 +0 -0
  237. package/dist/css/fonts/files/vollkorn-greek-wght-normal.woff2 +0 -0
  238. package/dist/css/fonts/files/vollkorn-vietnamese-wght-italic.woff2 +0 -0
  239. package/dist/css/fonts/files/vollkorn-vietnamese-wght-normal.woff2 +0 -0
  240. package/dist/css/fonts/font.abril-droidsans.css +3 -0
  241. package/dist/css/fonts/font.amatic-andika.css +57 -0
  242. package/dist/css/fonts/font.bitter-raleway.css +111 -0
  243. package/dist/css/fonts/font.cairo.css +312 -0
  244. package/dist/css/fonts/font.clicker-garamond.css +93 -0
  245. package/dist/css/fonts/font.dancing-ledger.css +12 -0
  246. package/dist/css/fonts/font.default.css +183 -0
  247. package/dist/css/fonts/font.fjalla-average.css +3 -0
  248. package/dist/css/fonts/font.georgia-helvetica.css +3 -0
  249. package/dist/css/fonts/font.knightlab.css +642 -0
  250. package/dist/css/fonts/font.lustria-lato.css +3 -0
  251. package/dist/css/fonts/font.medula-lato.css +3 -0
  252. package/dist/css/fonts/font.oldstandard.css +84 -0
  253. package/dist/css/fonts/font.opensans-gentiumbook.css +183 -0
  254. package/dist/css/fonts/font.playfair-faunaone.css +39 -0
  255. package/dist/css/fonts/font.playfair.css +147 -0
  256. package/dist/css/fonts/font.pt.css +183 -0
  257. package/dist/css/fonts/font.roboto-megrim.css +3 -0
  258. package/dist/css/fonts/font.rufina-sintony.css +3 -0
  259. package/dist/css/fonts/font.ubuntu.css +291 -0
  260. package/dist/css/fonts/font.unicaone-vollkorn.css +84 -0
  261. package/dist/css/storymap.css +1 -1
  262. package/dist/demo.html +2 -2
  263. package/dist/docs/api/.nojekyll +1 -0
  264. package/dist/docs/api/assets/custom.css +47 -0
  265. package/dist/docs/api/assets/hierarchy.js +1 -0
  266. package/dist/docs/api/assets/highlight.css +57 -0
  267. package/dist/docs/api/assets/icons.js +18 -0
  268. package/dist/docs/api/assets/icons.svg +1 -0
  269. package/dist/docs/api/assets/main.js +60 -0
  270. package/dist/docs/api/assets/navigation.js +1 -0
  271. package/dist/docs/api/assets/search.js +1 -0
  272. package/dist/docs/api/assets/style.css +1648 -0
  273. package/dist/docs/api/classes/StoryMap.html +1604 -0
  274. package/dist/docs/api/functions/MediaType.html +51 -0
  275. package/dist/docs/api/functions/isPresentation3Collection.html +47 -0
  276. package/dist/docs/api/functions/isPresentation3Manifest.html +53 -0
  277. package/dist/docs/api/functions/loadCSS.html +63 -0
  278. package/dist/docs/api/functions/manifestToStorymapData.html +49 -0
  279. package/dist/docs/api/functions/setLanguage.html +54 -0
  280. package/dist/docs/api/functions/storymapToManifest.html +57 -0
  281. package/dist/docs/api/functions/validateStorymap.html +53 -0
  282. package/dist/docs/api/functions/validateStorymapAndReport.html +54 -0
  283. package/dist/docs/api/hierarchy.html +28 -0
  284. package/dist/docs/api/index.html +197 -0
  285. package/dist/docs/api/interfaces/AnimationHandle.html +60 -0
  286. package/dist/docs/api/interfaces/ImagereadyPayload.html +71 -0
  287. package/dist/docs/api/interfaces/LanguageEntry.html +102 -0
  288. package/dist/docs/api/interfaces/LatLngLiteral.html +73 -0
  289. package/dist/docs/api/interfaces/LoadOptions.html +59 -0
  290. package/dist/docs/api/interfaces/OlLayer.html +1400 -0
  291. package/dist/docs/api/interfaces/OlMap.html +1656 -0
  292. package/dist/docs/api/interfaces/OlProjection.html +332 -0
  293. package/dist/docs/api/interfaces/OlSource.html +784 -0
  294. package/dist/docs/api/interfaces/OlTileLayer.html +1497 -0
  295. package/dist/docs/api/interfaces/OlVectorLayer.html +1559 -0
  296. package/dist/docs/api/interfaces/OlView.html +1958 -0
  297. package/dist/docs/api/interfaces/StorymapData.html +71 -0
  298. package/dist/docs/api/interfaces/StorymapDataWrapper.html +60 -0
  299. package/dist/docs/api/interfaces/StorymapDocument.html +68 -0
  300. package/dist/docs/api/interfaces/StorymapError.html +63 -0
  301. package/dist/docs/api/interfaces/StorymapGeoreference.html +93 -0
  302. package/dist/docs/api/interfaces/StorymapGeoreferenceBody.html +74 -0
  303. package/dist/docs/api/interfaces/StorymapGroundControlPoint.html +69 -0
  304. package/dist/docs/api/interfaces/StorymapLanguageMap.html +57 -0
  305. package/dist/docs/api/interfaces/StorymapManifest.html +118 -0
  306. package/dist/docs/api/interfaces/StorymapManifestAnnotation.html +105 -0
  307. package/dist/docs/api/interfaces/StorymapManifestBackground.html +81 -0
  308. package/dist/docs/api/interfaces/StorymapManifestCanvas.html +140 -0
  309. package/dist/docs/api/interfaces/StorymapManifestContentResource.html +97 -0
  310. package/dist/docs/api/interfaces/StorymapManifestFeatureCollection.html +82 -0
  311. package/dist/docs/api/interfaces/StorymapManifestGeoreferencing.html +87 -0
  312. package/dist/docs/api/interfaces/StorymapManifestImageService.html +69 -0
  313. package/dist/docs/api/interfaces/StorymapManifestRange.html +75 -0
  314. package/dist/docs/api/interfaces/StorymapManifestService.html +77 -0
  315. package/dist/docs/api/interfaces/StorymapManifestSpecificResource.html +69 -0
  316. package/dist/docs/api/interfaces/StorymapManifestStatement.html +63 -0
  317. package/dist/docs/api/interfaces/StorymapMapOptions.html +92 -0
  318. package/dist/docs/api/interfaces/StorymapOptions.html +532 -0
  319. package/dist/docs/api/interfaces/StorymapOverlayLayer.html +126 -0
  320. package/dist/docs/api/interfaces/StorymapSlide.html +132 -0
  321. package/dist/docs/api/interfaces/StorymapSlideBackground.html +72 -0
  322. package/dist/docs/api/interfaces/StorymapSlideLocation.html +117 -0
  323. package/dist/docs/api/interfaces/StorymapSlideMarker.html +104 -0
  324. package/dist/docs/api/interfaces/StorymapSlideMedia.html +110 -0
  325. package/dist/docs/api/interfaces/StorymapSlideNarration.html +65 -0
  326. package/dist/docs/api/interfaces/StorymapSlideText.html +72 -0
  327. package/dist/docs/api/interfaces/StorymapTilejson.html +105 -0
  328. package/dist/docs/api/media/es.json +31 -0
  329. package/dist/docs/api/media/migration-from-knightlab.md +359 -0
  330. package/dist/docs/api/modules.html +50 -0
  331. package/dist/docs/api/types/ContentState.html +70 -0
  332. package/dist/docs/api/types/ImagereadyKind.html +34 -0
  333. package/dist/docs/api/types/MediaTypeMatch.html +78 -0
  334. package/dist/docs/api/types/TileSourceFactory.html +53 -0
  335. package/dist/docs/authoring.html +293 -0
  336. package/dist/docs/iiif.html +617 -62
  337. package/dist/docs/migration.html +313 -11
  338. package/dist/docs/readme.html +40 -9
  339. package/dist/embed/index.html +1 -1
  340. package/dist/examples/issue-242-nonlatin.json +55 -0
  341. package/dist/examples/issue-305-start-at-slide-data.json +96 -0
  342. package/dist/examples/issue-358-iframe.json +57 -0
  343. package/dist/examples/issue-iiif-geo.json +32 -0
  344. package/dist/examples/issue-image-alt.json +23 -0
  345. package/dist/examples/issue-image-region.json +42 -0
  346. package/dist/examples/issue-image-srcset.json +24 -0
  347. package/dist/examples/map-area-overlays.json +68 -0
  348. package/dist/examples/no-map.json +44 -0
  349. package/dist/examples-iiif/annotated-image.json +188 -0
  350. package/dist/examples-iiif/bob-boilen.json +11 -5
  351. package/dist/examples-iiif/courbet.json +9 -6
  352. package/dist/examples-iiif/empty.json +8 -4
  353. package/dist/examples-iiif/flickr-drewvigal.json +248 -24
  354. package/dist/examples-iiif/flickr-zach.wise.json +8 -4
  355. package/dist/examples-iiif/georeferenced-layer-unsupported.json +153 -0
  356. package/dist/examples-iiif/georeferenced-layer.json +318 -0
  357. package/dist/examples-iiif/iiif-wellcome.json +9 -6
  358. package/dist/examples-iiif/instagram-chenpamela.json +381 -36
  359. package/dist/examples-iiif/instagram_brentfoster.json +429 -40
  360. package/dist/examples-iiif/instagram_couch.json +261 -26
  361. package/dist/examples-iiif/instagram_joegermuska.json +441 -41
  362. package/dist/examples-iiif/instagram_matteich.json +261 -26
  363. package/dist/examples-iiif/instagram_mirandamulligan.json +261 -26
  364. package/dist/examples-iiif/instagram_raymondmccrea.json +261 -26
  365. package/dist/examples-iiif/instagram_test.json +261 -26
  366. package/dist/examples-iiif/issue-134-no-lines.json +9 -5
  367. package/dist/examples-iiif/issue-177-color-vars.json +9 -5
  368. package/dist/examples-iiif/issue-211-rtl.json +9 -5
  369. package/dist/examples-iiif/issue-242-nonlatin.json +239 -0
  370. package/dist/examples-iiif/issue-272-facebook.json +9 -5
  371. package/dist/examples-iiif/issue-305-start-at-slide-data.json +305 -0
  372. package/dist/examples-iiif/issue-305-start-at-slide.json +9 -5
  373. package/dist/examples-iiif/issue-341-distance.json +9 -5
  374. package/dist/examples-iiif/issue-358-iframe.json +190 -0
  375. package/dist/examples-iiif/issue-360-juxtapose.json +22 -7
  376. package/dist/examples-iiif/issue-368-null-fields.json +9 -5
  377. package/dist/examples-iiif/issue-375-code-lists.json +9 -5
  378. package/dist/examples-iiif/issue-381-dateline.json +9 -5
  379. package/dist/examples-iiif/issue-405-custom-icon.json +203 -0
  380. package/dist/examples-iiif/issue-425-many-slides.json +9 -5
  381. package/dist/examples-iiif/issue-428-background.json +20 -8
  382. package/dist/examples-iiif/issue-435-googlemaps.json +9 -5
  383. package/dist/examples-iiif/issue-437-documentcloud.json +22 -7
  384. package/dist/examples-iiif/issue-451-webp.json +9 -5
  385. package/dist/examples-iiif/issue-455-audio.json +9 -5
  386. package/dist/examples-iiif/issue-480-shorts.json +9 -5
  387. package/dist/examples-iiif/issue-506-marker-sync.json +9 -5
  388. package/dist/examples-iiif/issue-iiif-geo.json +200 -0
  389. package/dist/examples-iiif/issue-image-alt.json +90 -0
  390. package/dist/examples-iiif/issue-image-region.json +203 -0
  391. package/dist/examples-iiif/issue-image-srcset.json +87 -0
  392. package/dist/examples-iiif/jansteen.json +9 -6
  393. package/dist/examples-iiif/katrina.json +197 -41
  394. package/dist/examples-iiif/map-area-overlays.json +289 -0
  395. package/dist/examples-iiif/marktwain.json +255 -58
  396. package/dist/examples-iiif/no-map.json +148 -0
  397. package/dist/examples-iiif/population.json +440 -76
  398. package/dist/examples-iiif/president.json +456 -83
  399. package/dist/examples-iiif/scroll-hint.json +190 -0
  400. package/dist/examples-iiif/seurat.json +113 -22
  401. package/dist/examples-iiif/zoomify-clamp.json +153 -0
  402. package/dist/harness-multi.html +17 -0
  403. package/dist/harness.html +3 -2
  404. package/dist/index.html +16 -10
  405. package/dist/js/storymap.d.ts +1439 -114
  406. package/dist/js/storymap.js +24654 -21936
  407. package/dist/js/storymap.js.map +1 -1
  408. package/dist/navplace-properties.json +40 -0
  409. package/docs/migration-from-knightlab.md +229 -9
  410. package/docs/storymap-as-iiif-manifest.md +559 -135
  411. package/package.json +11 -8
  412. package/schema/storymap.schema.json +431 -78
  413. package/src/animation/easings.ts +8 -1
  414. package/src/animation/tween.ts +186 -0
  415. package/src/core/Browser.ts +6 -5
  416. package/src/core/Load.ts +54 -2
  417. package/src/core/Util.ts +255 -193
  418. package/src/core/mixins.ts +24 -7
  419. package/src/core/viewers.ts +94 -0
  420. package/src/dom/DomEvent.ts +27 -8
  421. package/src/globals.d.ts +8 -0
  422. package/src/language/Language.ts +199 -25
  423. package/src/language/locale/.expected-gaps.json +86 -0
  424. package/src/language/locale/be.json +15 -2
  425. package/src/language/locale/bg.json +15 -2
  426. package/src/language/locale/cs.json +15 -2
  427. package/src/language/locale/de.json +12 -1
  428. package/src/language/locale/el.json +15 -2
  429. package/src/language/locale/en.json +6 -2
  430. package/src/language/locale/es.json +15 -2
  431. package/src/language/locale/et.json +5 -1
  432. package/src/language/locale/fr.json +15 -2
  433. package/src/language/locale/he.json +16 -3
  434. package/src/language/locale/hu.json +15 -2
  435. package/src/language/locale/is.json +5 -1
  436. package/src/language/locale/it.json +15 -2
  437. package/src/language/locale/jp.json +15 -2
  438. package/src/language/locale/ko.json +15 -2
  439. package/src/language/locale/nl.json +15 -2
  440. package/src/language/locale/nn.json +5 -1
  441. package/src/language/locale/no.json +15 -2
  442. package/src/language/locale/pl.json +15 -2
  443. package/src/language/locale/pt.json +15 -2
  444. package/src/language/locale/ru.json +15 -2
  445. package/src/language/locale/sk.json +15 -2
  446. package/src/language/locale/sr.json +5 -1
  447. package/src/language/locale/sv.json +15 -2
  448. package/src/language/locale/tr.json +15 -2
  449. package/src/language/locale/uk.json +15 -2
  450. package/src/language/locale/ur.json +5 -1
  451. package/src/language/locale/zh-cn.json +15 -2
  452. package/src/language/locale/zh-tw.json +15 -2
  453. package/src/main.ts +92 -0
  454. package/src/map/Map.ts +183 -106
  455. package/src/map/MapMarker.ts +28 -5
  456. package/src/map/georeference.ts +325 -0
  457. package/src/map/openlayers/Map.OpenLayers.ts +850 -237
  458. package/src/map/openlayers/MapMarker.OpenLayers.ts +248 -24
  459. package/src/map/openlayers/zoomifyTiles.ts +1 -4
  460. package/src/media/EmbedUtil.ts +308 -24
  461. package/src/media/Media.ts +243 -55
  462. package/src/media/embedId.ts +104 -0
  463. package/src/media/types/Audio.ts +9 -82
  464. package/src/media/types/Blockquote.ts +2 -3
  465. package/src/media/types/DailyMotion.ts +5 -10
  466. package/src/media/types/DocumentCloud.ts +6 -35
  467. package/src/media/types/Facebook.ts +3 -4
  468. package/src/media/types/Flickr.ts +9 -9
  469. package/src/media/types/GoogleDoc.ts +3 -4
  470. package/src/media/types/HtmlMedia.ts +167 -0
  471. package/src/media/types/IFrame.ts +3 -4
  472. package/src/media/types/Image.ts +72 -6
  473. package/src/media/types/Juxtapose.ts +14 -5
  474. package/src/media/types/SoundCloud.ts +28 -6
  475. package/src/media/types/Text.ts +19 -13
  476. package/src/media/types/Twitter.ts +27 -14
  477. package/src/media/types/Video.ts +9 -79
  478. package/src/media/types/Vimeo.ts +10 -10
  479. package/src/media/types/Website.ts +23 -13
  480. package/src/media/types/Wikipedia.ts +18 -8
  481. package/src/media/types/YouTube.ts +71 -39
  482. package/src/scss/Typography.scss +1 -3
  483. package/src/scss/VCO.StoryMap.Dark.scss +18 -6
  484. package/src/scss/VCO.StoryMap.scss +37 -6
  485. package/src/scss/Variables.Dark.scss +3 -2
  486. package/src/scss/Variables.scss +3 -2
  487. package/src/scss/core/Mixins.scss +5 -63
  488. package/src/scss/fonts/font.amatic-andika.scss +3 -0
  489. package/src/scss/fonts/font.bitter-raleway.scss +6 -0
  490. package/src/scss/fonts/font.cairo.scss +79 -0
  491. package/src/scss/fonts/font.clicker-garamond.scss +5 -0
  492. package/src/scss/fonts/font.dancing-ledger.scss +1 -0
  493. package/src/scss/fonts/font.knightlab.scss +14 -0
  494. package/src/scss/fonts/font.oldstandard.scss +6 -0
  495. package/src/scss/fonts/font.opensans-gentiumbook.scss +5 -0
  496. package/src/scss/fonts/font.playfair-faunaone.scss +2 -0
  497. package/src/scss/fonts/font.playfair.scss +4 -0
  498. package/src/scss/fonts/font.pt.scss +6 -0
  499. package/src/scss/fonts/font.ubuntu.scss +4 -0
  500. package/src/scss/fonts/font.unicaone-vollkorn.scss +5 -0
  501. package/src/scss/map/VCO.MapMarker.scss +98 -3
  502. package/src/scss/media/VCO.Media.scss +7 -10
  503. package/src/scss/media/types/VCO.Media.Text.scss +8 -0
  504. package/src/scss/media/types/VCO.Media.Wikipedia.scss +2 -1
  505. package/src/scss/slider/VCO.Slide.scss +13 -3
  506. package/src/scss/slider/VCO.SlideNav.scss +11 -17
  507. package/src/scss/slider/VCO.StorySlider.scss +4 -2
  508. package/src/scss/ui/VCO.Consent.scss +44 -0
  509. package/src/scss/ui/VCO.MenuBar.Button.scss +8 -0
  510. package/src/scss/ui/VCO.Message.scss +2 -5
  511. package/src/site/site.ts +2 -1
  512. package/src/slider/Slide.ts +121 -27
  513. package/src/slider/SlideNav.ts +39 -5
  514. package/src/slider/StorySlider.ts +153 -42
  515. package/src/storymap/Consent.ts +407 -82
  516. package/src/storymap/StoryMap.ts +1192 -182
  517. package/src/storymap/content-state.ts +185 -0
  518. package/src/storymap/iiif.ts +1526 -68
  519. package/src/storymap/to-iiif.ts +921 -0
  520. package/src/storymap/validate.ts +80 -7
  521. package/src/types.ts +223 -26
  522. package/src/ui/MenuBar.ts +98 -45
  523. package/src/ui/Message.ts +9 -0
  524. package/src/ui/Swipable.ts +145 -78
  525. package/dist/assets/demo-D6cTmzn6.js +0 -1
  526. package/dist/assets/harness-BPFlzutp.js +0 -1
  527. package/dist/assets/index-DDsPBPZA.js +0 -1
  528. package/dist/assets/main-Y-MYUSJ4.js +0 -17
  529. package/src/animation/morpheus.d.ts +0 -41
  530. package/src/scss/media/types/VCO.Media.Instagram.scss +0 -7
  531. package/src/scss/media/types/VCO.Media.Profile.scss +0 -5
  532. package/src/ui/Draggable.ts +0 -374
package/src/main.ts CHANGED
@@ -41,11 +41,103 @@ export { setLanguage } from "./language/Language";
41
41
  */
42
42
  export { validateStorymap, validateStorymapAndReport } from "./storymap/validate";
43
43
 
44
+ /** One problem `validateStorymap()` reports. */
45
+ export type { StorymapError } from "./storymap/validate";
46
+
47
+ /** `loadCSS()`'s options (currently the abort signal). */
48
+ export type { LoadOptions } from "./core/Load";
49
+
50
+ /** The shape of a bundled locale file, as `setLanguage()` reads it. */
51
+ export type { LanguageEntry } from "./language/Language";
52
+
53
+ /**
54
+ * A IIIF Content State 1.0 target: the canvas a deep link names, and the
55
+ * region within it when the link carries one.
56
+ */
57
+ export type { ContentState } from "./storymap/content-state";
58
+
44
59
  /**
45
60
  * Public data and options types for constructing a StoryMap.
61
+ *
62
+ * The data types are exported rather than only referenced: they are what a host
63
+ * actually types its document and options with, and TypeDoc warns about a
64
+ * documented member whose type it cannot link.
46
65
  */
47
66
  export type {
48
67
  StorymapSlide,
68
+ StorymapSlideText,
69
+ StorymapSlideMedia,
70
+ StorymapSlideMarker,
71
+ StorymapSlideNarration,
72
+ StorymapSlideBackground,
73
+ StorymapSlideLocation,
74
+ StorymapData,
49
75
  StorymapDataWrapper,
50
76
  StorymapOptions,
77
+ StorymapOverlayLayer,
78
+ StorymapTilejson,
79
+ StorymapGeoreference,
80
+ StorymapGeoreferenceBody,
81
+ StorymapGroundControlPoint,
82
+ StorymapMapOptions,
83
+ TileSourceFactory,
84
+ LatLngLiteral,
85
+ MediaTypeMatch,
86
+ AnimationHandle,
51
87
  } from "./types";
88
+
89
+ /**
90
+ * True when a fetched document is an IIIF Presentation 3 manifest (accepted
91
+ * directly as a StoryMap source).
92
+ */
93
+ export {
94
+ isPresentation3Manifest,
95
+ isPresentation3Collection,
96
+ manifestToStorymapData,
97
+ } from "./storymap/iiif";
98
+
99
+ /**
100
+ * Convert a legacy storymap document into a IIIF Presentation 3 manifest —
101
+ * the writer counterpart of `manifestToStorymapData()`. Pure, so the same
102
+ * document always produces the same manifest.
103
+ */
104
+ export { storymapToManifest } from "./storymap/to-iiif";
105
+
106
+ /**
107
+ * The manifest shape `storymapToManifest()` produces, for a host that wants to
108
+ * consume or further annotate the result.
109
+ */
110
+ export type {
111
+ StorymapDocument,
112
+ StorymapManifest,
113
+ StorymapManifestCanvas,
114
+ StorymapManifestService,
115
+ StorymapLanguageMap,
116
+ StorymapManifestAnnotation,
117
+ StorymapManifestBackground,
118
+ StorymapManifestContentResource,
119
+ StorymapManifestFeatureCollection,
120
+ StorymapManifestGeoreferencing,
121
+ StorymapManifestImageService,
122
+ StorymapManifestRange,
123
+ StorymapManifestSpecificResource,
124
+ StorymapManifestStatement,
125
+ } from "./storymap/to-iiif";
126
+
127
+ /**
128
+ * Re-exported OpenLayers types, so consumers can type the map reachable at
129
+ * `storymap.map` without depending on `ol` themselves.
130
+ */
131
+ export type { default as OlMap } from "ol/Map";
132
+ export type { default as OlView } from "ol/View";
133
+ export type { default as OlLayer } from "ol/layer/Layer";
134
+ export type { default as OlTileLayer } from "ol/layer/Tile";
135
+ export type { default as OlVectorLayer } from "ol/layer/Vector";
136
+ export type { default as OlSource } from "ol/source/Source";
137
+ export type { default as OlProjection } from "ol/proj/Projection";
138
+
139
+ /**
140
+ * Payload of the `imageready` event, fired when an image source is actually
141
+ * attached — the only outward signal that the imagery is really on the map.
142
+ */
143
+ export type { ImagereadyKind, ImagereadyPayload } from "./map/openlayers/Map.OpenLayers";
package/src/map/Map.ts CHANGED
@@ -4,6 +4,7 @@ import Dom from "../dom/Dom";
4
4
  import { Browser } from "../core/Browser";
5
5
  import type { Map as OlMap } from "ol";
6
6
  import type { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
7
+ import type Layer from "ol/layer/Layer";
7
8
  import type OverviewMap from "ol/control/OverviewMap";
8
9
  import type MapMarker from "./MapMarker";
9
10
  import type { LinePoint, ViewToOptions } from "./types";
@@ -38,13 +39,19 @@ class MapBase {
38
39
  declare "_map": OlMap | null;
39
40
  declare "_mini_map": OverviewMap | null;
40
41
  declare "_markers": MapMarker[];
42
+ /**
43
+ * Zooms computed by the engine's `_calculateMarkerZooms`, keyed by
44
+ * marker index. Kept off `marker.data` so navigating never mutates the
45
+ * author's storymap document (`StoryMap.data` is that same object graph).
46
+ */
47
+ declare "_marker_zooms": (number | undefined)[];
41
48
  declare "zoom_min_max": { min: number | null; max: number | null };
42
49
  declare "_line": VectorLayer | null;
43
50
  declare "_line_active": VectorLayer | null;
44
51
  declare "current_marker": number;
45
52
  declare "bounds_array": number[][] | null;
46
- declare "_tile_layer": TileLayer | null;
47
- declare "_tile_layer_mini": TileLayer | null;
53
+ declare "_tile_layer": Layer | null;
54
+ declare "_tile_layer_mini": Layer | null;
48
55
  declare "_image_layer": TileLayer | null;
49
56
  declare "data": StorymapData;
50
57
  declare "options": StorymapOptions;
@@ -69,7 +76,11 @@ class MapBase {
69
76
  if (typeof elem === "object") {
70
77
  this._el.container = elem;
71
78
  } else {
72
- this._el.container = Dom.get(elem);
79
+ const found = Dom.get(elem);
80
+ if (!found) {
81
+ throw new Error("StoryMapJS: no element with id " + elem);
82
+ }
83
+ this._el.container = found;
73
84
  }
74
85
 
75
86
  // LOADED
@@ -86,6 +97,7 @@ class MapBase {
86
97
 
87
98
  // Markers
88
99
  this._markers = [];
100
+ this._marker_zooms = [];
89
101
 
90
102
  // Marker Zoom Miniumum and Maximum
91
103
  this.zoom_min_max = {
@@ -118,13 +130,15 @@ class MapBase {
118
130
  slides: [{ test: "yes" }, { test: "yes" }, { test: "yes" }],
119
131
  };
120
132
 
121
- //Options
133
+ // Options — the map-owned subset only. StoryMap passes its own full
134
+ // options object in (see the constructor), so `this.options` is a
135
+ // complete StorymapOptions by the time anything reads it; these are
136
+ // just the fallbacks for a standalone Map.
122
137
  this.options = {
123
138
  map_type: "osm:standard",
124
139
  map_as_image: false,
125
140
  map_mini: false,
126
141
  map_background_color: "#d9d9d9",
127
- map_subdomains: "",
128
142
  map_access_token: "",
129
143
  overlays: [],
130
144
  overview_extent: null,
@@ -133,11 +147,7 @@ class MapBase {
133
147
  attribution: "",
134
148
  },
135
149
  skinny_size: 650,
136
- less_bounce: true,
137
- path_gfx: "gfx",
138
150
  start_at_slide: 0,
139
- map_popup: false,
140
- zoom_distance: 100,
141
151
  calculate_zoom: true, // Allow map to determine best zoom level between markers (recommended)
142
152
  line_follows_path: true, // Map history path follows default line, if false it will connect previous and current only
143
153
  line_color: "#333",
@@ -149,7 +159,7 @@ class MapBase {
149
159
  show_lines: true,
150
160
  show_history_line: true,
151
161
  map_center_offset: null, // takes object {top:0,left:0}
152
- } as StorymapOptions;
162
+ } as unknown as StorymapOptions;
153
163
 
154
164
  // Animation
155
165
  this.animator = null;
@@ -204,32 +214,30 @@ class MapBase {
204
214
  // Check to see if it's an overview
205
215
  if (marker.data.type && marker.data.type === "overview") {
206
216
  this._markerOverview();
207
- if (!change) {
208
- this._onMarkerChange();
209
- }
210
217
  } else {
211
218
  // Make marker active
212
219
  marker.active(true);
213
220
 
221
+ const target_location = marker.data.location ?? undefined;
214
222
  if (change) {
215
223
  // Set Map View
216
- if (marker.data.location) {
217
- this._viewTo(marker.data.location, {
224
+ if (target_location) {
225
+ this._viewTo(target_location, {
218
226
  duration: this._transition_duration,
219
227
  });
220
228
  } else {
221
229
  // nothing to show
222
230
  }
223
- } else {
224
- if (this._hasLocation(marker.data)) {
231
+ } else if (target_location) {
232
+ if (this._hasLocation(marker.data) || this._hasRegion(marker.data)) {
225
233
  // Calculate Zoom
226
- zoom = this._calculateZoomChange(
227
- this._getMapCenter(true),
228
- marker.location(),
229
- );
234
+ const here = marker.location();
235
+ zoom = here
236
+ ? this._calculateZoomChange(this._getMapCenter(true), here)
237
+ : undefined;
230
238
 
231
239
  // Set Map View
232
- this._viewTo(marker.data.location, {
240
+ this._viewTo(target_location, {
233
241
  calculate_zoom: this.options.calculate_zoom,
234
242
  zoom: zoom,
235
243
  duration: this._transition_duration,
@@ -252,32 +260,19 @@ class MapBase {
252
260
  // the already-traveled prefix 0..previous,
253
261
  // which stays drawn while [prev..current]
254
262
  // traces progressively (see _replaceLines).
255
- let line_num = 0,
256
- point;
263
+ let line_num = 0;
257
264
  let retract_path_source: LinePoint[] | null = null;
258
265
  let grow_path_source: LinePoint[] | null = null;
259
266
  if (previous_marker < this.current_marker) {
260
267
  while (line_num < this.current_marker) {
261
- if (this._hasLocation(this._markers[line_num].data)) {
262
- point = {
263
- lat: this._markers[line_num].data.location.lat,
264
- lon: this._markers[line_num].data.location.lon,
265
- };
266
- lines_array.push(point);
268
+ const loc = this._locationOf(this._markers[line_num].data);
269
+ if (loc) {
270
+ lines_array.push(loc);
267
271
  }
268
272
 
269
273
  line_num++;
270
274
  }
271
- const grow_path: LinePoint[] = [];
272
- for (let idx = 0; idx <= previous_marker; idx++) {
273
- if (this._hasLocation(this._markers[idx].data)) {
274
- grow_path.push({
275
- lat: this._markers[idx].data.location.lat,
276
- lon: this._markers[idx].data.location.lon,
277
- });
278
- }
279
- }
280
- grow_path_source = grow_path;
275
+ grow_path_source = this._locationsUpTo(previous_marker);
281
276
  } else if (previous_marker > this.current_marker) {
282
277
  // Backward navigation: the line retracts —
283
278
  // the end state is the traveled path from
@@ -285,33 +280,13 @@ class MapBase {
285
280
  // the far end pulls back from the old
286
281
  // marker to the new one (handled by the
287
282
  // map's retract animation).
288
- const traveled = [];
289
- for (let idx = 0; idx <= this.current_marker; idx++) {
290
- if (this._hasLocation(this._markers[idx].data)) {
291
- traveled.push({
292
- lat: this._markers[idx].data.location.lat,
293
- lon: this._markers[idx].data.location.lon,
294
- });
295
- }
296
- }
297
- const retract_path = [];
298
- for (let idx = 0; idx <= previous_marker; idx++) {
299
- if (this._hasLocation(this._markers[idx].data)) {
300
- retract_path.push({
301
- lat: this._markers[idx].data.location.lat,
302
- lon: this._markers[idx].data.location.lon,
303
- });
304
- }
305
- }
306
- lines_array = traveled;
307
- retract_path_source = retract_path;
283
+ lines_array = this._locationsUpTo(this.current_marker);
284
+ retract_path_source = this._locationsUpTo(previous_marker);
308
285
  }
309
286
 
310
- if (!retract_path_source) {
311
- lines_array.push({
312
- lat: marker.data.location.lat,
313
- lon: marker.data.location.lon,
314
- });
287
+ const marker_loc = this._locationOf(marker.data);
288
+ if (!retract_path_source && marker_loc) {
289
+ lines_array.push(marker_loc);
315
290
  }
316
291
 
317
292
  this._replaceLines(this._line_active, lines_array, {
@@ -321,66 +296,80 @@ class MapBase {
321
296
  });
322
297
  }
323
298
  } else {
324
- // Show Line
325
- if (
326
- this.options.show_history_line &&
327
- marker.data.real_marker &&
328
- this._markers[previous_marker].data.real_marker
329
- ) {
330
- this._replaceLines(
331
- this._line_active,
332
- [
333
- {
334
- lat: marker.data.location.lat,
335
- lon: marker.data.location.lon,
336
- },
337
- {
338
- lat: this._markers[previous_marker].data.location.lat,
339
- lon: this._markers[previous_marker].data.location.lon,
340
- },
341
- ],
342
- { duration: this._transition_duration },
343
- );
299
+ // Show Line — both endpoints need a real location.
300
+ // The path branch above guards every access with
301
+ // _hasLocation(); `real_marker` alone is not enough
302
+ // because a slide can carry a region only.
303
+ const from = this._locationOf(marker.data);
304
+ const to = this._locationOf(this._markers[previous_marker].data);
305
+ if (this.options.show_history_line && from && to) {
306
+ this._replaceLines(this._line_active, [from, to], {
307
+ duration: this._transition_duration,
308
+ });
344
309
  }
345
310
  }
346
311
  } else {
347
312
  this._markerOverview();
348
- if (!change) {
349
- this._onMarkerChange();
350
- }
351
313
  }
352
314
 
353
- // Fire Event
315
+ // Fire Event — once per goTo(), for every branch above
354
316
  this._onMarkerChange();
355
317
  }
356
318
  }
357
319
  }
358
320
  }
359
321
 
322
+ /**
323
+ * Alias over the OpenLayers view: `storymap.map.getView().animate({center})`
324
+ * (remember `ol/proj` does not apply in image mode — see `isImageSpace()`).
325
+ */
360
326
  panTo(loc: LatLngLiteral, animate?: boolean): void {
361
327
  this._panTo(loc, animate);
362
328
  }
363
329
 
330
+ /** Alias over the OpenLayers view: `storymap.map.getView().animate({zoom})`. */
364
331
  zoomTo(z: number, animate?: boolean): void {
365
332
  this._zoomTo(z, animate);
366
333
  }
367
334
 
335
+ /**
336
+ * Alias over the OpenLayers view: `storymap.map.getView().animate(...)`,
337
+ * or `.fit(extent, {size})` for a region stop (`location.region`).
338
+ */
368
339
  viewTo(loc: StorymapSlideLocation, opts?: ViewToOptions): void {
369
340
  this._viewTo(loc, opts);
370
341
  }
371
342
 
372
- getBoundsZoom(m1: LatLngLiteral, m2: LatLngLiteral, inside?: boolean, padding?: unknown): void {
373
- this._getBoundsZoom(m1, m2, inside, padding); // (LatLngBounds[, Boolean, Point]) -> Number
343
+ /** Alias over the OpenLayers view: `view.getZoomForResolution(resolution)`. */
344
+ getBoundsZoom(
345
+ m1: LatLngLiteral,
346
+ m2: LatLngLiteral,
347
+ inside?: boolean,
348
+ padding?: unknown,
349
+ ): number | undefined {
350
+ return this._getBoundsZoom(m1, m2, inside, padding);
374
351
  }
375
352
 
353
+ /**
354
+ * Alias over the OpenLayers view: `view.fit(extent, {size})` over all
355
+ * marker positions. Also reachable from the menubar's overview button.
356
+ */
376
357
  markerOverview(): void {
377
358
  this._markerOverview();
378
359
  }
379
360
 
361
+ /**
362
+ * The viewer's own marker zoom ladder — no OpenLayers equivalent (it also
363
+ * writes the computed zoom onto the current markers).
364
+ */
380
365
  calculateMarkerZooms(): void {
381
366
  this._calculateMarkerZooms();
382
367
  }
383
368
 
369
+ /**
370
+ * The minimap is built with the constructor; reach it with `getMinimap()`
371
+ * (an OpenLayers `OverviewMap` control) rather than re-creating it.
372
+ */
384
373
  createMiniMap(): void {
385
374
  this._createMiniMap();
386
375
  }
@@ -397,18 +386,32 @@ class MapBase {
397
386
 
398
387
  calculateMinMaxZoom(): void {
399
388
  for (let i = 0; i < this._markers.length; i++) {
400
- if (this._markers[i].data.location && this._markers[i].data.location.zoom) {
401
- this.updateMinMaxZoom(this._markers[i].data.location.zoom);
389
+ const zoom = this._markerZoom(i);
390
+ if (typeof zoom === "number") {
391
+ this.updateMinMaxZoom(zoom);
402
392
  }
403
393
  }
404
394
  }
405
395
 
396
+ /**
397
+ * The zoom to use for min/max bounds at marker `index`: the value
398
+ * computed by the engine when there is one, else the zoom authored on
399
+ * the slide. The engine overrides this to serve its computed-zoom store
400
+ * so `StoryMap.data` is never written to.
401
+ */
402
+ _markerZoom(index: number): number | undefined {
403
+ return this._markers[index]?.data.location?.zoom;
404
+ }
405
+
406
406
  updateMinMaxZoom(zoom: number): void {
407
- if (!this.zoom_min_max.max) {
407
+ // `!x` treated a legitimate zoom level of 0 as "not measured yet" and
408
+ // then re-ran the min/max comparison against null, which coerces to 0.
409
+ // Test for null explicitly so zoom 0 is a real bound.
410
+ if (this.zoom_min_max.max === null) {
408
411
  this.zoom_min_max.max = zoom;
409
412
  }
410
413
 
411
- if (!this.zoom_min_max.min) {
414
+ if (this.zoom_min_max.min === null) {
412
415
  this.zoom_min_max.min = zoom;
413
416
  }
414
417
 
@@ -432,8 +435,19 @@ class MapBase {
432
435
 
433
436
  /* Adding, Hiding, Showing etc
434
437
  ================================================== */
438
+
439
+ /**
440
+ * @deprecated No-op since 0.9.x upstream (the original Leaflet engine
441
+ * defined an empty body too) and shadowed by the `DomMixed` mixin. To
442
+ * hide the map, toggle the OpenLayers target:
443
+ * `storymap.map.getTargetElement().style.display = "none"`.
444
+ */
435
445
  show(): void {}
436
446
 
447
+ /**
448
+ * @deprecated See {@link show} — no-op since 0.9.x upstream. Use
449
+ * `storymap.map.getTargetElement().style.display = "none"`.
450
+ */
437
451
  hide(): void {}
438
452
 
439
453
  /* Adding and Removing Markers
@@ -448,10 +462,16 @@ class MapBase {
448
462
 
449
463
  _destroyMarker(marker: MapMarker): void {
450
464
  this._removeMarker(marker);
451
- for (let i = 0; i < this._markers.length; i++) {
452
- if (this._markers[i] === marker) {
453
- this._markers.splice(i, 1);
454
- }
465
+ const index = this._markers.indexOf(marker);
466
+ if (index === -1) {
467
+ return;
468
+ }
469
+ this._markers.splice(index, 1);
470
+ // `marker_number` is the marker's index into this array and is what
471
+ // _onMarkerClick hands to goTo(), so every marker after the removed
472
+ // one has to shift down or clicks navigate to the wrong slide
473
+ for (let i = index; i < this._markers.length; i++) {
474
+ this._markers[i].marker_number = i;
455
475
  }
456
476
  this.fire("markerRemoved", marker);
457
477
  }
@@ -470,9 +490,48 @@ class MapBase {
470
490
  * lon 0 are valid coordinates and must not be treated as missing.
471
491
  */
472
492
  _hasLocation(d: StorymapSlide): boolean {
473
- return (
474
- !!d.location && typeof d.location.lat == "number" && typeof d.location.lon == "number"
475
- );
493
+ return this._locationOf(d) !== null;
494
+ }
495
+
496
+ /**
497
+ * The {lat, lon} points of every marker from the first up to and
498
+ * including `n`, skipping the ones without a real location. This was four
499
+ * near-identical loops building the same thing.
500
+ */
501
+ private _locationsUpTo(n: number): LinePoint[] {
502
+ const points: LinePoint[] = [];
503
+ for (let idx = 0; idx <= n && idx < this._markers.length; idx++) {
504
+ const loc = this._locationOf(this._markers[idx].data);
505
+ if (loc) {
506
+ points.push(loc);
507
+ }
508
+ }
509
+ return points;
510
+ }
511
+
512
+ /**
513
+ * The slide's {lat, lon} point, or null when it has no real location.
514
+ *
515
+ * Preferred over testing `_hasLocation()` and then reading
516
+ * `data.location.lat`: a boolean guard does not narrow the property for
517
+ * the type checker, so the old form had to be trusted and re-checked by
518
+ * hand at every one of its dozen call sites.
519
+ */
520
+ _locationOf(d: StorymapSlide): LatLngLiteral | null {
521
+ const loc = d.location;
522
+ if (!loc || typeof loc.lat !== "number" || typeof loc.lon !== "number") {
523
+ return null;
524
+ }
525
+ return { lat: loc.lat, lon: loc.lon };
526
+ }
527
+
528
+ /**
529
+ * Image region stop: the slide carries an xywh region ([x, y, w, h]
530
+ * image pixels). Only the OpenLayers engine applies it (image mode);
531
+ * the region never contributes to route lines.
532
+ */
533
+ _hasRegion(d: StorymapSlide): boolean {
534
+ return !!d.location && Array.isArray(d.location.region) && d.location.region.length === 4;
476
535
  }
477
536
 
478
537
  /* Map Specific
@@ -520,7 +579,9 @@ class MapBase {
520
579
  return { data: d };
521
580
  }
522
581
 
523
- _addToLine(line: VectorLayer | null, d: LinePoint): void {}
582
+ /** Append a slide's location to a route line. Takes the *slide*, not a
583
+ * point — the engine reads `d.location`. */
584
+ _addToLine(line: VectorLayer | null, d: StorymapSlide): void {}
524
585
 
525
586
  _replaceLines(
526
587
  line: VectorLayer | null,
@@ -552,15 +613,31 @@ class MapBase {
552
613
  }
553
614
 
554
615
  _getMapCenter(correct_for_center?: boolean): LatLngLiteral {
555
- return { lat: 0, lng: 0 };
616
+ return { lat: 0, lon: 0 };
617
+ }
618
+
619
+ /**
620
+ * The `ease` option as an OpenLayers easing function.
621
+ *
622
+ * `ease` is documented as either a function or a name, so the cast to
623
+ * OpenLayers' expected shape was repeated at all ten `view.animate()` call
624
+ * sites.
625
+ */
626
+ protected get _easing(): ((t: number) => number) | undefined {
627
+ return this.options.ease as ((t: number) => number) | undefined;
556
628
  }
557
629
 
630
+ /**
631
+ * Zoom that fits the two given points, or `undefined` when the engine
632
+ * cannot compute one. Mirrors `getRouteDistance`: the base class is the
633
+ * no-op template, the OpenLayers subclass returns a real value.
634
+ */
558
635
  _getBoundsZoom(
559
636
  m1: LatLngLiteral,
560
637
  m2: LatLngLiteral,
561
638
  inside?: boolean,
562
639
  padding?: unknown,
563
- ): number {
640
+ ): number | undefined {
564
641
  return undefined;
565
642
  }
566
643
 
@@ -657,7 +734,7 @@ class MapBase {
657
734
  origin: LatLngLiteral,
658
735
  destination: LatLngLiteral,
659
736
  correct_for_center?: boolean,
660
- ): number {
737
+ ): number | undefined {
661
738
  return this._getBoundsZoom(origin, destination, correct_for_center);
662
739
  }
663
740
 
@@ -54,7 +54,7 @@ class MapMarkerBase {
54
54
  this.media_icon_class = "";
55
55
 
56
56
  // Timer
57
- this.timer = {} as ReturnType<typeof setTimeout>;
57
+ this.timer = null;
58
58
 
59
59
  // Data
60
60
  this.data = {};
@@ -66,7 +66,6 @@ class MapMarkerBase {
66
66
  ease: easeInSpline,
67
67
  width: 600,
68
68
  height: 600,
69
- map_popup: false,
70
69
  } as StorymapOptions;
71
70
 
72
71
  // Animation Object
@@ -81,10 +80,27 @@ class MapMarkerBase {
81
80
 
82
81
  /* Public
83
82
  ================================================== */
83
+
84
+ /**
85
+ * @deprecated No-op since 0.9.x upstream (the original marker defined an
86
+ * empty body too). Markers are never individually hidden; use CSS on
87
+ * `.vco-mapmarker`, or `active(false)` to dim one.
88
+ */
84
89
  show(): void {}
85
90
 
91
+ /** @deprecated See {@link show} — no-op since 0.9.x upstream. */
86
92
  hide(): void {}
87
93
 
94
+ /**
95
+ * @deprecated Never implemented, in the original viewer either: the base
96
+ * `MapMarker._createPopup` had an empty body and the Leaflet override's
97
+ * body was commented out, so the `map_popup` option that called it never
98
+ * had any effect. Kept as a no-op so pre-0.10 code that calls it keeps
99
+ * working. Render the slide text yourself, or use CSS on
100
+ * `.vco-mapmarker` to show a label.
101
+ */
102
+ createPopup(_d?: MapMarkerData, _o?: StorymapOptions): void {}
103
+
88
104
  addTo(m: unknown): void {
89
105
  this._addTo(m);
90
106
  }
@@ -105,7 +121,7 @@ class MapMarkerBase {
105
121
  this._active(a);
106
122
  }
107
123
 
108
- location(): LatLngLiteral {
124
+ location(): LatLngLiteral | null {
109
125
  return this._location();
110
126
  }
111
127
 
@@ -120,8 +136,15 @@ class MapMarkerBase {
120
136
 
121
137
  _active(a: boolean): void {}
122
138
 
123
- _location(): LatLngLiteral {
124
- return { lat: 0, lng: 0 };
139
+ /**
140
+ * The marker's coordinate, or null when it has none (an overview slide, or
141
+ * a slide carrying only an image region). Every caller treats null as
142
+ * "nothing to focus", so this is the honest shape — the previous
143
+ * `{ lat: 0, lng: 0 }` was a real point at Null Island, spelled with a
144
+ * longitude key nothing in the map read.
145
+ */
146
+ _location(): LatLngLiteral | null {
147
+ return null;
125
148
  }
126
149
 
127
150
  /* Events