@projektemacher/storymapjs 0.10.7 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/CHANGELOG +431 -19
  2. package/README.md +168 -17
  3. package/dist/assets/demo-bWnOyfUw.js +1 -0
  4. package/dist/assets/harness-C3JUv5Ii.js +1 -0
  5. package/dist/assets/harness-multi-XZNex3tb.js +1 -0
  6. package/dist/assets/harness-support-CjfZIVeb.js +1 -0
  7. package/dist/assets/index-wHPqGrBS.js +1 -0
  8. package/dist/assets/main-DQ32hWBM.js +17 -0
  9. package/dist/context.json +23 -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 +3 -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 +2112 -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/isSlideshowCollection.html +51 -0
  278. package/dist/docs/api/functions/loadCSS.html +63 -0
  279. package/dist/docs/api/functions/manifestToStorymapData.html +49 -0
  280. package/dist/docs/api/functions/setLanguage.html +54 -0
  281. package/dist/docs/api/functions/slideshowToStorymapData.html +51 -0
  282. package/dist/docs/api/functions/slideshowVersion.html +48 -0
  283. package/dist/docs/api/functions/storymapToManifest.html +57 -0
  284. package/dist/docs/api/functions/validateStorymap.html +53 -0
  285. package/dist/docs/api/functions/validateStorymapAndReport.html +54 -0
  286. package/dist/docs/api/hierarchy.html +28 -0
  287. package/dist/docs/api/index.html +300 -0
  288. package/dist/docs/api/interfaces/AnimationHandle.html +60 -0
  289. package/dist/docs/api/interfaces/ImagereadyPayload.html +71 -0
  290. package/dist/docs/api/interfaces/LanguageEntry.html +102 -0
  291. package/dist/docs/api/interfaces/LatLngLiteral.html +73 -0
  292. package/dist/docs/api/interfaces/LoadOptions.html +59 -0
  293. package/dist/docs/api/interfaces/MapEvents.html +116 -0
  294. package/dist/docs/api/interfaces/MapMarkerEvents.html +66 -0
  295. package/dist/docs/api/interfaces/MarkerEventPayload.html +57 -0
  296. package/dist/docs/api/interfaces/MediaEvents.html +78 -0
  297. package/dist/docs/api/interfaces/MenuBarEvents.html +114 -0
  298. package/dist/docs/api/interfaces/MessageEvents.html +72 -0
  299. package/dist/docs/api/interfaces/OlLayer.html +1400 -0
  300. package/dist/docs/api/interfaces/OlMap.html +1656 -0
  301. package/dist/docs/api/interfaces/OlProjection.html +332 -0
  302. package/dist/docs/api/interfaces/OlSource.html +784 -0
  303. package/dist/docs/api/interfaces/OlTileLayer.html +1497 -0
  304. package/dist/docs/api/interfaces/OlVectorLayer.html +1559 -0
  305. package/dist/docs/api/interfaces/OlView.html +1958 -0
  306. package/dist/docs/api/interfaces/SlideBackgroundState.html +66 -0
  307. package/dist/docs/api/interfaces/SlideEvents.html +78 -0
  308. package/dist/docs/api/interfaces/SlideNavEvents.html +72 -0
  309. package/dist/docs/api/interfaces/SlideshowPlayerSettings.html +182 -0
  310. package/dist/docs/api/interfaces/SlideshowToStorymapResult.html +60 -0
  311. package/dist/docs/api/interfaces/SlideshowTranslatorOptions.html +65 -0
  312. package/dist/docs/api/interfaces/SlideshowWarning.html +72 -0
  313. package/dist/docs/api/interfaces/StoryMapEvents.html +146 -0
  314. package/dist/docs/api/interfaces/StoryMapMarker.html +763 -0
  315. package/dist/docs/api/interfaces/StorySliderEvents.html +102 -0
  316. package/dist/docs/api/interfaces/StorymapBasemap.html +69 -0
  317. package/dist/docs/api/interfaces/StorymapData.html +77 -0
  318. package/dist/docs/api/interfaces/StorymapDataWrapper.html +60 -0
  319. package/dist/docs/api/interfaces/StorymapDocument.html +68 -0
  320. package/dist/docs/api/interfaces/StorymapError.html +63 -0
  321. package/dist/docs/api/interfaces/StorymapGeoreference.html +93 -0
  322. package/dist/docs/api/interfaces/StorymapGeoreferenceBody.html +74 -0
  323. package/dist/docs/api/interfaces/StorymapGroundControlPoint.html +69 -0
  324. package/dist/docs/api/interfaces/StorymapLanguageMap.html +57 -0
  325. package/dist/docs/api/interfaces/StorymapManifest.html +118 -0
  326. package/dist/docs/api/interfaces/StorymapManifestAnnotation.html +137 -0
  327. package/dist/docs/api/interfaces/StorymapManifestBackground.html +81 -0
  328. package/dist/docs/api/interfaces/StorymapManifestCanvas.html +188 -0
  329. package/dist/docs/api/interfaces/StorymapManifestContentResource.html +97 -0
  330. package/dist/docs/api/interfaces/StorymapManifestFeatureCollection.html +82 -0
  331. package/dist/docs/api/interfaces/StorymapManifestGeoreferencing.html +87 -0
  332. package/dist/docs/api/interfaces/StorymapManifestImageService.html +69 -0
  333. package/dist/docs/api/interfaces/StorymapManifestRange.html +75 -0
  334. package/dist/docs/api/interfaces/StorymapManifestService.html +77 -0
  335. package/dist/docs/api/interfaces/StorymapManifestSpecificResource.html +69 -0
  336. package/dist/docs/api/interfaces/StorymapManifestStatement.html +63 -0
  337. package/dist/docs/api/interfaces/StorymapMapOptions.html +92 -0
  338. package/dist/docs/api/interfaces/StorymapOptions.html +734 -0
  339. package/dist/docs/api/interfaces/StorymapOverlayLayer.html +157 -0
  340. package/dist/docs/api/interfaces/StorymapSlide.html +186 -0
  341. package/dist/docs/api/interfaces/StorymapSlideBackground.html +72 -0
  342. package/dist/docs/api/interfaces/StorymapSlideLocation.html +161 -0
  343. package/dist/docs/api/interfaces/StorymapSlideMarker.html +103 -0
  344. package/dist/docs/api/interfaces/StorymapSlideMedia.html +149 -0
  345. package/dist/docs/api/interfaces/StorymapSlideNarration.html +117 -0
  346. package/dist/docs/api/interfaces/StorymapSlideText.html +72 -0
  347. package/dist/docs/api/interfaces/StorymapTilejson.html +105 -0
  348. package/dist/docs/api/interfaces/SwipableEvents.html +102 -0
  349. package/dist/docs/api/interfaces/TextEvents.html +66 -0
  350. package/dist/docs/api/media/es.json +31 -0
  351. package/dist/docs/api/media/events.md +66 -0
  352. package/dist/docs/api/media/migration-from-knightlab.md +399 -0
  353. package/dist/docs/api/media/slideshow.md +109 -0
  354. package/dist/docs/api/media/storymap-as-iiif-manifest.md +1007 -0
  355. package/dist/docs/api/modules.html +50 -0
  356. package/dist/docs/api/types/ContentState.html +70 -0
  357. package/dist/docs/api/types/FiredEvent.html +43 -0
  358. package/dist/docs/api/types/ImagereadyKind.html +34 -0
  359. package/dist/docs/api/types/MediaTypeMatch.html +78 -0
  360. package/dist/docs/api/types/SwipeDirection.html +36 -0
  361. package/dist/docs/api/types/TileSourceFactory.html +53 -0
  362. package/dist/docs/authoring.html +306 -0
  363. package/dist/docs/events.html +263 -0
  364. package/dist/docs/iiif.html +738 -69
  365. package/dist/docs/migration.html +360 -11
  366. package/dist/docs/readme.html +149 -17
  367. package/dist/embed/index.html +8 -1
  368. package/dist/examples/font-css-false.json +33 -0
  369. package/dist/examples/issue-242-nonlatin.json +55 -0
  370. package/dist/examples/issue-305-start-at-slide-data.json +96 -0
  371. package/dist/examples/issue-358-iframe.json +57 -0
  372. package/dist/examples/issue-iiif-geo.json +32 -0
  373. package/dist/examples/issue-image-alt.json +23 -0
  374. package/dist/examples/issue-image-region.json +42 -0
  375. package/dist/examples/issue-image-srcset.json +24 -0
  376. package/dist/examples/layers-control.json +60 -0
  377. package/dist/examples/map-area-overlays.json +68 -0
  378. package/dist/examples/map-template-provider.json +36 -0
  379. package/dist/examples/multi-media.json +71 -0
  380. package/dist/examples/no-map.json +44 -0
  381. package/dist/examples-iiif/annotated-image.json +204 -0
  382. package/dist/examples-iiif/bob-boilen.json +11 -5
  383. package/dist/examples-iiif/courbet.json +9 -6
  384. package/dist/examples-iiif/empty.json +8 -4
  385. package/dist/examples-iiif/flickr-drewvigal.json +248 -24
  386. package/dist/examples-iiif/flickr-zach.wise.json +8 -4
  387. package/dist/examples-iiif/font-css-false.json +114 -0
  388. package/dist/examples-iiif/georeferenced-layer-unsupported.json +153 -0
  389. package/dist/examples-iiif/georeferenced-layer.json +318 -0
  390. package/dist/examples-iiif/iiif-wellcome.json +9 -6
  391. package/dist/examples-iiif/instagram-chenpamela.json +381 -36
  392. package/dist/examples-iiif/instagram_brentfoster.json +429 -40
  393. package/dist/examples-iiif/instagram_couch.json +261 -26
  394. package/dist/examples-iiif/instagram_joegermuska.json +441 -41
  395. package/dist/examples-iiif/instagram_matteich.json +261 -26
  396. package/dist/examples-iiif/instagram_mirandamulligan.json +261 -26
  397. package/dist/examples-iiif/instagram_raymondmccrea.json +261 -26
  398. package/dist/examples-iiif/instagram_test.json +261 -26
  399. package/dist/examples-iiif/issue-134-no-lines.json +9 -5
  400. package/dist/examples-iiif/issue-177-color-vars.json +9 -5
  401. package/dist/examples-iiif/issue-211-rtl.json +9 -5
  402. package/dist/examples-iiif/issue-242-nonlatin.json +239 -0
  403. package/dist/examples-iiif/issue-272-facebook.json +9 -5
  404. package/dist/examples-iiif/issue-305-start-at-slide-data.json +305 -0
  405. package/dist/examples-iiif/issue-305-start-at-slide.json +9 -5
  406. package/dist/examples-iiif/issue-341-distance.json +9 -5
  407. package/dist/examples-iiif/issue-358-iframe.json +190 -0
  408. package/dist/examples-iiif/issue-360-juxtapose.json +22 -7
  409. package/dist/examples-iiif/issue-368-null-fields.json +9 -5
  410. package/dist/examples-iiif/issue-375-code-lists.json +9 -5
  411. package/dist/examples-iiif/issue-381-dateline.json +9 -5
  412. package/dist/examples-iiif/issue-405-custom-icon.json +203 -0
  413. package/dist/examples-iiif/issue-425-many-slides.json +9 -5
  414. package/dist/examples-iiif/issue-428-background.json +20 -8
  415. package/dist/examples-iiif/issue-435-googlemaps.json +9 -5
  416. package/dist/examples-iiif/issue-437-documentcloud.json +22 -7
  417. package/dist/examples-iiif/issue-451-webp.json +9 -5
  418. package/dist/examples-iiif/issue-455-audio.json +9 -5
  419. package/dist/examples-iiif/issue-480-shorts.json +9 -5
  420. package/dist/examples-iiif/issue-506-marker-sync.json +9 -5
  421. package/dist/examples-iiif/issue-iiif-geo.json +200 -0
  422. package/dist/examples-iiif/issue-image-alt.json +90 -0
  423. package/dist/examples-iiif/issue-image-region.json +203 -0
  424. package/dist/examples-iiif/issue-image-srcset.json +87 -0
  425. package/dist/examples-iiif/jansteen.json +9 -6
  426. package/dist/examples-iiif/katrina.json +197 -41
  427. package/dist/examples-iiif/layers-control.json +226 -0
  428. package/dist/examples-iiif/map-area-overlays.json +289 -0
  429. package/dist/examples-iiif/map-template-provider.json +133 -0
  430. package/dist/examples-iiif/marktwain.json +255 -58
  431. package/dist/examples-iiif/multi-media.json +237 -0
  432. package/dist/examples-iiif/no-map.json +148 -0
  433. package/dist/examples-iiif/population.json +440 -76
  434. package/dist/examples-iiif/president.json +456 -83
  435. package/dist/examples-iiif/scroll-hint.json +190 -0
  436. package/dist/examples-iiif/seurat.json +113 -22
  437. package/dist/examples-iiif/zoomify-clamp.json +153 -0
  438. package/dist/examples-slideshow/single.json +79 -0
  439. package/dist/examples-slideshow/static/pixel.png +0 -0
  440. package/dist/examples-slideshow/static.json +44 -0
  441. package/dist/harness-multi.html +17 -0
  442. package/dist/harness.html +4 -2
  443. package/dist/index.html +19 -12
  444. package/dist/js/storymap.d.ts +2669 -307
  445. package/dist/js/storymap.js +10820 -6196
  446. package/dist/js/storymap.js.map +1 -1
  447. package/dist/navplace-properties.json +54 -0
  448. package/dist/site.css +54 -36
  449. package/docs/migration-from-knightlab.md +279 -19
  450. package/docs/storymap-as-iiif-manifest.md +633 -136
  451. package/package.json +12 -7
  452. package/schema/storymap.schema.json +733 -80
  453. package/src/animation/easings.ts +8 -1
  454. package/src/animation/tween.ts +186 -0
  455. package/src/core/Browser.ts +6 -5
  456. package/src/core/Load.ts +54 -2
  457. package/src/core/Util.ts +257 -193
  458. package/src/core/mixins.ts +66 -35
  459. package/src/core/viewers.ts +94 -0
  460. package/src/dom/DomEvent.ts +27 -8
  461. package/src/globals.d.ts +8 -0
  462. package/src/language/Language.ts +206 -25
  463. package/src/language/locale/.expected-gaps.json +346 -0
  464. package/src/language/locale/be.json +15 -2
  465. package/src/language/locale/bg.json +15 -2
  466. package/src/language/locale/cs.json +15 -2
  467. package/src/language/locale/de.json +23 -2
  468. package/src/language/locale/el.json +15 -2
  469. package/src/language/locale/en.json +17 -3
  470. package/src/language/locale/es.json +15 -2
  471. package/src/language/locale/et.json +5 -1
  472. package/src/language/locale/fr.json +15 -2
  473. package/src/language/locale/he.json +16 -3
  474. package/src/language/locale/hu.json +15 -2
  475. package/src/language/locale/is.json +5 -1
  476. package/src/language/locale/it.json +15 -2
  477. package/src/language/locale/jp.json +15 -2
  478. package/src/language/locale/ko.json +15 -2
  479. package/src/language/locale/nl.json +15 -2
  480. package/src/language/locale/nn.json +5 -1
  481. package/src/language/locale/no.json +15 -2
  482. package/src/language/locale/pl.json +15 -2
  483. package/src/language/locale/pt.json +15 -2
  484. package/src/language/locale/ru.json +15 -2
  485. package/src/language/locale/sk.json +15 -2
  486. package/src/language/locale/sr.json +5 -1
  487. package/src/language/locale/sv.json +15 -2
  488. package/src/language/locale/tr.json +15 -2
  489. package/src/language/locale/uk.json +15 -2
  490. package/src/language/locale/ur.json +5 -1
  491. package/src/language/locale/zh-cn.json +15 -2
  492. package/src/language/locale/zh-tw.json +15 -2
  493. package/src/main.ts +143 -0
  494. package/src/map/Map.ts +227 -112
  495. package/src/map/MapMarker.ts +44 -8
  496. package/src/map/georeference.ts +325 -0
  497. package/src/map/openlayers/Map.OpenLayers.ts +1601 -263
  498. package/src/map/openlayers/MapMarker.OpenLayers.ts +348 -24
  499. package/src/map/openlayers/zoomifyTiles.ts +1 -4
  500. package/src/map/slideView.ts +149 -0
  501. package/src/map/types.ts +2 -0
  502. package/src/media/EmbedUtil.ts +333 -24
  503. package/src/media/Media.ts +270 -59
  504. package/src/media/embedId.ts +110 -0
  505. package/src/media/types/Audio.ts +9 -82
  506. package/src/media/types/Blockquote.ts +2 -3
  507. package/src/media/types/DailyMotion.ts +5 -10
  508. package/src/media/types/DocumentCloud.ts +6 -35
  509. package/src/media/types/Facebook.ts +3 -4
  510. package/src/media/types/Flickr.ts +23 -12
  511. package/src/media/types/GoogleDoc.ts +3 -4
  512. package/src/media/types/HtmlMedia.ts +233 -0
  513. package/src/media/types/IFrame.ts +3 -4
  514. package/src/media/types/Image.ts +87 -9
  515. package/src/media/types/Juxtapose.ts +14 -5
  516. package/src/media/types/SoundCloud.ts +28 -6
  517. package/src/media/types/Text.ts +46 -21
  518. package/src/media/types/Twitter.ts +35 -20
  519. package/src/media/types/Video.ts +9 -79
  520. package/src/media/types/Vimeo.ts +11 -11
  521. package/src/media/types/Website.ts +23 -13
  522. package/src/media/types/Wikipedia.ts +18 -8
  523. package/src/media/types/YouTube.ts +72 -40
  524. package/src/scss/Typography.scss +16 -18
  525. package/src/scss/VCO.StoryMap.scss +208 -12
  526. package/src/scss/Variables.scss +3 -2
  527. package/src/scss/core/Mixins.scss +5 -63
  528. package/src/scss/core/Reset.scss +5 -18
  529. package/src/scss/fonts/font.amatic-andika.scss +3 -0
  530. package/src/scss/fonts/font.bitter-raleway.scss +6 -0
  531. package/src/scss/fonts/font.cairo.scss +79 -0
  532. package/src/scss/fonts/font.clicker-garamond.scss +5 -0
  533. package/src/scss/fonts/font.dancing-ledger.scss +1 -0
  534. package/src/scss/fonts/font.knightlab.scss +14 -0
  535. package/src/scss/fonts/font.oldstandard.scss +6 -0
  536. package/src/scss/fonts/font.opensans-gentiumbook.scss +5 -0
  537. package/src/scss/fonts/font.playfair-faunaone.scss +2 -0
  538. package/src/scss/fonts/font.playfair.scss +4 -0
  539. package/src/scss/fonts/font.pt.scss +6 -0
  540. package/src/scss/fonts/font.ubuntu.scss +4 -0
  541. package/src/scss/fonts/font.unicaone-vollkorn.scss +5 -0
  542. package/src/scss/map/VCO.Map.scss +1 -1
  543. package/src/scss/map/VCO.MapMarker.scss +114 -8
  544. package/src/scss/map/openlayers/VCO.Map.OpenLayers.scss +7 -4
  545. package/src/scss/media/VCO.Media.scss +14 -17
  546. package/src/scss/media/types/VCO.Media.Blockquote.scss +1 -1
  547. package/src/scss/media/types/VCO.Media.Text.scss +13 -5
  548. package/src/scss/media/types/VCO.Media.Twitter.scss +4 -4
  549. package/src/scss/media/types/VCO.Media.Wikipedia.scss +3 -19
  550. package/src/scss/site/site.scss +55 -36
  551. package/src/scss/slider/VCO.Slide.scss +61 -13
  552. package/src/scss/slider/VCO.SlideNav.scss +34 -24
  553. package/src/scss/slider/VCO.StorySlider.scss +53 -1
  554. package/src/scss/snapmap/VCO.SnapMap.scss +3 -3
  555. package/src/scss/ui/VCO.Consent.scss +63 -13
  556. package/src/scss/ui/VCO.Layers.scss +119 -0
  557. package/src/scss/ui/VCO.MenuBar.Button.scss +143 -14
  558. package/src/scss/ui/VCO.MenuBar.scss +9 -2
  559. package/src/scss/ui/VCO.Message.scss +16 -5
  560. package/src/site/site.ts +2 -1
  561. package/src/slider/Slide.ts +326 -74
  562. package/src/slider/SlideNav.ts +54 -9
  563. package/src/slider/StorySlider.ts +352 -60
  564. package/src/storymap/Consent.ts +429 -82
  565. package/src/storymap/StoryMap.ts +2163 -340
  566. package/src/storymap/content-state.ts +180 -0
  567. package/src/storymap/font-css.ts +72 -0
  568. package/src/storymap/from-slideshow.ts +785 -0
  569. package/src/storymap/iiif-shared.ts +228 -0
  570. package/src/storymap/iiif.ts +1742 -95
  571. package/src/storymap/to-iiif.ts +1008 -0
  572. package/src/storymap/validate.ts +80 -7
  573. package/src/types.ts +591 -29
  574. package/src/ui/LayersControl.ts +302 -0
  575. package/src/ui/MenuBar.ts +325 -61
  576. package/src/ui/Message.ts +44 -2
  577. package/src/ui/Swipable.ts +170 -85
  578. package/dist/assets/demo-D6cTmzn6.js +0 -1
  579. package/dist/assets/harness-BPFlzutp.js +0 -1
  580. package/dist/assets/index-DDsPBPZA.js +0 -1
  581. package/dist/assets/main-Y-MYUSJ4.js +0 -17
  582. package/src/animation/morpheus.d.ts +0 -41
  583. package/src/scss/VCO.StoryMap.Dark.scss +0 -138
  584. package/src/scss/Variables.Dark.scss +0 -56
  585. package/src/scss/media/types/VCO.Media.Instagram.scss +0 -7
  586. package/src/scss/media/types/VCO.Media.Profile.scss +0 -5
  587. package/src/ui/Draggable.ts +0 -374
package/src/map/Map.ts CHANGED
@@ -4,8 +4,11 @@ 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";
10
+ import type { MarkerEventPayload } from "./MapMarker";
11
+ import type { ImagereadyPayload } from "./openlayers/Map.OpenLayers";
9
12
  import type { LinePoint, ViewToOptions } from "./types";
10
13
  import type {
11
14
  AnimationHandle,
@@ -25,6 +28,21 @@ import type {
25
28
 
26
29
  ================================================ */
27
30
 
31
+ export interface MapEvents {
32
+ change: { current_marker: number };
33
+ loaded: StorymapData;
34
+ added: StorymapData;
35
+ removed: StorymapData;
36
+ markerAdded: MapMarker;
37
+ markerRemoved: MapMarker;
38
+ markerclick: MarkerEventPayload;
39
+ popupopen: MarkerEventPayload;
40
+ popupclose: MarkerEventPayload;
41
+ imageready: ImagereadyPayload;
42
+ /** Deferred tile layers attached after a tile consent grant. */
43
+ tilesallowed: undefined;
44
+ }
45
+
28
46
  /** Wheel/scroll zoom bookkeeping (handles cleared via clearTimeout). */
29
47
  interface ScrollState {
30
48
  start_time: number | null;
@@ -38,13 +56,21 @@ class MapBase {
38
56
  declare "_map": OlMap | null;
39
57
  declare "_mini_map": OverviewMap | null;
40
58
  declare "_markers": MapMarker[];
59
+ /**
60
+ * Zooms computed by the engine's `_calculateMarkerZooms`, keyed by
61
+ * marker index. Kept off `marker.data` so navigating never mutates the
62
+ * author's storymap document (`StoryMap.data` is that same object graph).
63
+ */
64
+ declare "_marker_zooms": (number | undefined)[];
41
65
  declare "zoom_min_max": { min: number | null; max: number | null };
42
66
  declare "_line": VectorLayer | null;
43
67
  declare "_line_active": VectorLayer | null;
44
68
  declare "current_marker": number;
69
+ /** The wheel handler on the map element, stored for dispose(). */
70
+ declare "_onWheelBound": ((e: WheelEvent) => void) | null;
45
71
  declare "bounds_array": number[][] | null;
46
- declare "_tile_layer": TileLayer | null;
47
- declare "_tile_layer_mini": TileLayer | null;
72
+ declare "_tile_layer": Layer | null;
73
+ declare "_tile_layer_mini": Layer | null;
48
74
  declare "_image_layer": TileLayer | null;
49
75
  declare "data": StorymapData;
50
76
  declare "options": StorymapOptions;
@@ -53,7 +79,7 @@ class MapBase {
53
79
  declare "timer": ReturnType<typeof setTimeout> | null;
54
80
  declare "touch_scale": number;
55
81
  declare "scroll": ScrollState;
56
- declare "fire": EventedInstance["fire"];
82
+ declare "fire": EventedInstance<MapEvents>["fire"];
57
83
  constructor(
58
84
  elem: string | HTMLElement,
59
85
  data?: Partial<StorymapData>,
@@ -69,7 +95,11 @@ class MapBase {
69
95
  if (typeof elem === "object") {
70
96
  this._el.container = elem;
71
97
  } else {
72
- this._el.container = Dom.get(elem);
98
+ const found = Dom.get(elem);
99
+ if (!found) {
100
+ throw new Error("StoryMapJS: no element with id " + elem);
101
+ }
102
+ this._el.container = found;
73
103
  }
74
104
 
75
105
  // LOADED
@@ -86,6 +116,7 @@ class MapBase {
86
116
 
87
117
  // Markers
88
118
  this._markers = [];
119
+ this._marker_zooms = [];
89
120
 
90
121
  // Marker Zoom Miniumum and Maximum
91
122
  this.zoom_min_max = {
@@ -118,13 +149,15 @@ class MapBase {
118
149
  slides: [{ test: "yes" }, { test: "yes" }, { test: "yes" }],
119
150
  };
120
151
 
121
- //Options
152
+ // Options — the map-owned subset only. StoryMap passes its own full
153
+ // options object in (see the constructor), so `this.options` is a
154
+ // complete StorymapOptions by the time anything reads it; these are
155
+ // just the fallbacks for a standalone Map.
122
156
  this.options = {
123
157
  map_type: "osm:standard",
124
158
  map_as_image: false,
125
159
  map_mini: false,
126
160
  map_background_color: "#d9d9d9",
127
- map_subdomains: "",
128
161
  map_access_token: "",
129
162
  overlays: [],
130
163
  overview_extent: null,
@@ -133,11 +166,7 @@ class MapBase {
133
166
  attribution: "",
134
167
  },
135
168
  skinny_size: 650,
136
- less_bounce: true,
137
- path_gfx: "gfx",
138
169
  start_at_slide: 0,
139
- map_popup: false,
140
- zoom_distance: 100,
141
170
  calculate_zoom: true, // Allow map to determine best zoom level between markers (recommended)
142
171
  line_follows_path: true, // Map history path follows default line, if false it will connect previous and current only
143
172
  line_color: "#333",
@@ -149,7 +178,7 @@ class MapBase {
149
178
  show_lines: true,
150
179
  show_history_line: true,
151
180
  map_center_offset: null, // takes object {top:0,left:0}
152
- } as StorymapOptions;
181
+ } as unknown as StorymapOptions;
153
182
 
154
183
  // Animation
155
184
  this.animator = null;
@@ -204,32 +233,34 @@ class MapBase {
204
233
  // Check to see if it's an overview
205
234
  if (marker.data.type && marker.data.type === "overview") {
206
235
  this._markerOverview();
207
- if (!change) {
208
- this._onMarkerChange();
209
- }
236
+ // overview stops are navigable like any other: report the
237
+ // change exactly as the branches below do, or a click on an
238
+ // overview pin moves the map without ever moving the story
239
+ this._onMarkerChange();
210
240
  } else {
211
241
  // Make marker active
212
242
  marker.active(true);
213
243
 
244
+ const target_location = marker.data.location ?? undefined;
214
245
  if (change) {
215
246
  // Set Map View
216
- if (marker.data.location) {
217
- this._viewTo(marker.data.location, {
247
+ if (target_location) {
248
+ this._viewTo(target_location, {
218
249
  duration: this._transition_duration,
219
250
  });
220
251
  } else {
221
252
  // nothing to show
222
253
  }
223
- } else {
224
- if (this._hasLocation(marker.data)) {
254
+ } else if (target_location) {
255
+ if (this._hasLocation(marker.data) || this._hasRegion(marker.data)) {
225
256
  // Calculate Zoom
226
- zoom = this._calculateZoomChange(
227
- this._getMapCenter(true),
228
- marker.location(),
229
- );
257
+ const here = marker.location();
258
+ zoom = here
259
+ ? this._calculateZoomChange(this._getMapCenter(true), here)
260
+ : undefined;
230
261
 
231
262
  // Set Map View
232
- this._viewTo(marker.data.location, {
263
+ this._viewTo(target_location, {
233
264
  calculate_zoom: this.options.calculate_zoom,
234
265
  zoom: zoom,
235
266
  duration: this._transition_duration,
@@ -252,32 +283,19 @@ class MapBase {
252
283
  // the already-traveled prefix 0..previous,
253
284
  // which stays drawn while [prev..current]
254
285
  // traces progressively (see _replaceLines).
255
- let line_num = 0,
256
- point;
286
+ let line_num = 0;
257
287
  let retract_path_source: LinePoint[] | null = null;
258
288
  let grow_path_source: LinePoint[] | null = null;
259
289
  if (previous_marker < this.current_marker) {
260
290
  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);
291
+ const loc = this._locationOf(this._markers[line_num].data);
292
+ if (loc) {
293
+ lines_array.push(loc);
267
294
  }
268
295
 
269
296
  line_num++;
270
297
  }
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;
298
+ grow_path_source = this._locationsUpTo(previous_marker);
281
299
  } else if (previous_marker > this.current_marker) {
282
300
  // Backward navigation: the line retracts —
283
301
  // the end state is the traveled path from
@@ -285,33 +303,13 @@ class MapBase {
285
303
  // the far end pulls back from the old
286
304
  // marker to the new one (handled by the
287
305
  // 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;
306
+ lines_array = this._locationsUpTo(this.current_marker);
307
+ retract_path_source = this._locationsUpTo(previous_marker);
308
308
  }
309
309
 
310
- if (!retract_path_source) {
311
- lines_array.push({
312
- lat: marker.data.location.lat,
313
- lon: marker.data.location.lon,
314
- });
310
+ const marker_loc = this._locationOf(marker.data);
311
+ if (!retract_path_source && marker_loc) {
312
+ lines_array.push(marker_loc);
315
313
  }
316
314
 
317
315
  this._replaceLines(this._line_active, lines_array, {
@@ -321,66 +319,80 @@ class MapBase {
321
319
  });
322
320
  }
323
321
  } 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
- );
322
+ // Show Line — both endpoints need a real location.
323
+ // The path branch above guards every access with
324
+ // _hasLocation(); `real_marker` alone is not enough
325
+ // because a slide can carry a region only.
326
+ const from = this._locationOf(marker.data);
327
+ const to = this._locationOf(this._markers[previous_marker].data);
328
+ if (this.options.show_history_line && from && to) {
329
+ this._replaceLines(this._line_active, [from, to], {
330
+ duration: this._transition_duration,
331
+ });
344
332
  }
345
333
  }
346
334
  } else {
347
335
  this._markerOverview();
348
- if (!change) {
349
- this._onMarkerChange();
350
- }
351
336
  }
352
337
 
353
- // Fire Event
338
+ // Fire Event — once per goTo(), for every branch above
354
339
  this._onMarkerChange();
355
340
  }
356
341
  }
357
342
  }
358
343
  }
359
344
 
345
+ /**
346
+ * Alias over the OpenLayers view: `storymap.map.getView().animate({center})`
347
+ * (remember `ol/proj` does not apply in image mode — see `isImageSpace()`).
348
+ */
360
349
  panTo(loc: LatLngLiteral, animate?: boolean): void {
361
350
  this._panTo(loc, animate);
362
351
  }
363
352
 
353
+ /** Alias over the OpenLayers view: `storymap.map.getView().animate({zoom})`. */
364
354
  zoomTo(z: number, animate?: boolean): void {
365
355
  this._zoomTo(z, animate);
366
356
  }
367
357
 
358
+ /**
359
+ * Alias over the OpenLayers view: `storymap.map.getView().animate(...)`,
360
+ * or `.fit(extent, {size})` for a region stop (`location.region`).
361
+ */
368
362
  viewTo(loc: StorymapSlideLocation, opts?: ViewToOptions): void {
369
363
  this._viewTo(loc, opts);
370
364
  }
371
365
 
372
- getBoundsZoom(m1: LatLngLiteral, m2: LatLngLiteral, inside?: boolean, padding?: unknown): void {
373
- this._getBoundsZoom(m1, m2, inside, padding); // (LatLngBounds[, Boolean, Point]) -> Number
366
+ /** Alias over the OpenLayers view: `view.getZoomForResolution(resolution)`. */
367
+ getBoundsZoom(
368
+ m1: LatLngLiteral,
369
+ m2: LatLngLiteral,
370
+ inside?: boolean,
371
+ padding?: unknown,
372
+ ): number | undefined {
373
+ return this._getBoundsZoom(m1, m2, inside, padding);
374
374
  }
375
375
 
376
+ /**
377
+ * Alias over the OpenLayers view: `view.fit(extent, {size})` over all
378
+ * marker positions. Also reachable from the menubar's overview button.
379
+ */
376
380
  markerOverview(): void {
377
381
  this._markerOverview();
378
382
  }
379
383
 
384
+ /**
385
+ * The viewer's own marker zoom ladder — no OpenLayers equivalent (it also
386
+ * writes the computed zoom onto the current markers).
387
+ */
380
388
  calculateMarkerZooms(): void {
381
389
  this._calculateMarkerZooms();
382
390
  }
383
391
 
392
+ /**
393
+ * The minimap is built with the constructor; reach it with `getMinimap()`
394
+ * (an OpenLayers `OverviewMap` control) rather than re-creating it.
395
+ */
384
396
  createMiniMap(): void {
385
397
  this._createMiniMap();
386
398
  }
@@ -397,18 +409,32 @@ class MapBase {
397
409
 
398
410
  calculateMinMaxZoom(): void {
399
411
  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);
412
+ const zoom = this._markerZoom(i);
413
+ if (typeof zoom === "number") {
414
+ this.updateMinMaxZoom(zoom);
402
415
  }
403
416
  }
404
417
  }
405
418
 
419
+ /**
420
+ * The zoom to use for min/max bounds at marker `index`: the value
421
+ * computed by the engine when there is one, else the zoom authored on
422
+ * the slide. The engine overrides this to serve its computed-zoom store
423
+ * so `StoryMap.data` is never written to.
424
+ */
425
+ _markerZoom(index: number): number | undefined {
426
+ return this._markers[index]?.data.location?.zoom;
427
+ }
428
+
406
429
  updateMinMaxZoom(zoom: number): void {
407
- if (!this.zoom_min_max.max) {
430
+ // `!x` treated a legitimate zoom level of 0 as "not measured yet" and
431
+ // then re-ran the min/max comparison against null, which coerces to 0.
432
+ // Test for null explicitly so zoom 0 is a real bound.
433
+ if (this.zoom_min_max.max === null) {
408
434
  this.zoom_min_max.max = zoom;
409
435
  }
410
436
 
411
- if (!this.zoom_min_max.min) {
437
+ if (this.zoom_min_max.min === null) {
412
438
  this.zoom_min_max.min = zoom;
413
439
  }
414
440
 
@@ -432,8 +458,19 @@ class MapBase {
432
458
 
433
459
  /* Adding, Hiding, Showing etc
434
460
  ================================================== */
461
+
462
+ /**
463
+ * @deprecated No-op since 0.9.x upstream (the original Leaflet engine
464
+ * defined an empty body too) and shadowed by the `DomMixed` mixin. To
465
+ * hide the map, toggle the OpenLayers target:
466
+ * `storymap.map.getTargetElement().style.display = "none"`.
467
+ */
435
468
  show(): void {}
436
469
 
470
+ /**
471
+ * @deprecated See {@link show} — no-op since 0.9.x upstream. Use
472
+ * `storymap.map.getTargetElement().style.display = "none"`.
473
+ */
437
474
  hide(): void {}
438
475
 
439
476
  /* Adding and Removing Markers
@@ -448,10 +485,16 @@ class MapBase {
448
485
 
449
486
  _destroyMarker(marker: MapMarker): void {
450
487
  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
- }
488
+ const index = this._markers.indexOf(marker);
489
+ if (index === -1) {
490
+ return;
491
+ }
492
+ this._markers.splice(index, 1);
493
+ // `marker_number` is the marker's index into this array and is what
494
+ // _onMarkerClick hands to goTo(), so every marker after the removed
495
+ // one has to shift down or clicks navigate to the wrong slide
496
+ for (let i = index; i < this._markers.length; i++) {
497
+ this._markers[i].marker_number = i;
455
498
  }
456
499
  this.fire("markerRemoved", marker);
457
500
  }
@@ -470,9 +513,48 @@ class MapBase {
470
513
  * lon 0 are valid coordinates and must not be treated as missing.
471
514
  */
472
515
  _hasLocation(d: StorymapSlide): boolean {
473
- return (
474
- !!d.location && typeof d.location.lat == "number" && typeof d.location.lon == "number"
475
- );
516
+ return this._locationOf(d) !== null;
517
+ }
518
+
519
+ /**
520
+ * The {lat, lon} points of every marker from the first up to and
521
+ * including `n`, skipping the ones without a real location. This was four
522
+ * near-identical loops building the same thing.
523
+ */
524
+ private _locationsUpTo(n: number): LinePoint[] {
525
+ const points: LinePoint[] = [];
526
+ for (let idx = 0; idx <= n && idx < this._markers.length; idx++) {
527
+ const loc = this._locationOf(this._markers[idx].data);
528
+ if (loc) {
529
+ points.push(loc);
530
+ }
531
+ }
532
+ return points;
533
+ }
534
+
535
+ /**
536
+ * The slide's {lat, lon} point, or null when it has no real location.
537
+ *
538
+ * Preferred over testing `_hasLocation()` and then reading
539
+ * `data.location.lat`: a boolean guard does not narrow the property for
540
+ * the type checker, so the old form had to be trusted and re-checked by
541
+ * hand at every one of its dozen call sites.
542
+ */
543
+ _locationOf(d: StorymapSlide): LatLngLiteral | null {
544
+ const loc = d.location;
545
+ if (!loc || typeof loc.lat !== "number" || typeof loc.lon !== "number") {
546
+ return null;
547
+ }
548
+ return { lat: loc.lat, lon: loc.lon };
549
+ }
550
+
551
+ /**
552
+ * Image region stop: the slide carries an xywh region ([x, y, w, h]
553
+ * image pixels). Only the OpenLayers engine applies it (image mode);
554
+ * the region never contributes to route lines.
555
+ */
556
+ _hasRegion(d: StorymapSlide): boolean {
557
+ return !!d.location && Array.isArray(d.location.region) && d.location.region.length === 4;
476
558
  }
477
559
 
478
560
  /* Map Specific
@@ -520,7 +602,9 @@ class MapBase {
520
602
  return { data: d };
521
603
  }
522
604
 
523
- _addToLine(line: VectorLayer | null, d: LinePoint): void {}
605
+ /** Append a slide's location to a route line. Takes the *slide*, not a
606
+ * point — the engine reads `d.location`. */
607
+ _addToLine(line: VectorLayer | null, d: StorymapSlide): void {}
524
608
 
525
609
  _replaceLines(
526
610
  line: VectorLayer | null,
@@ -552,15 +636,31 @@ class MapBase {
552
636
  }
553
637
 
554
638
  _getMapCenter(correct_for_center?: boolean): LatLngLiteral {
555
- return { lat: 0, lng: 0 };
639
+ return { lat: 0, lon: 0 };
640
+ }
641
+
642
+ /**
643
+ * The `ease` option as an OpenLayers easing function.
644
+ *
645
+ * `ease` is documented as either a function or a name, so the cast to
646
+ * OpenLayers' expected shape was repeated at all ten `view.animate()` call
647
+ * sites.
648
+ */
649
+ protected get _easing(): ((t: number) => number) | undefined {
650
+ return this.options.ease as ((t: number) => number) | undefined;
556
651
  }
557
652
 
653
+ /**
654
+ * Zoom that fits the two given points, or `undefined` when the engine
655
+ * cannot compute one. Mirrors `getRouteDistance`: the base class is the
656
+ * no-op template, the OpenLayers subclass returns a real value.
657
+ */
558
658
  _getBoundsZoom(
559
659
  m1: LatLngLiteral,
560
660
  m2: LatLngLiteral,
561
661
  inside?: boolean,
562
662
  padding?: unknown,
563
- ): number {
663
+ ): number | undefined {
564
664
  return undefined;
565
665
  }
566
666
 
@@ -585,6 +685,18 @@ class MapBase {
585
685
  if (this.current_marker !== e.marker_number) {
586
686
  this.goTo(e.marker_number, false);
587
687
  }
688
+ // Re-fired (after navigation) so hosts can tell a marker click
689
+ // apart from programmatic navigation: `change` alone does not say
690
+ // *how* the story moved.
691
+ this.fire("markerclick", { marker_number: e.marker_number });
692
+ }
693
+
694
+ _onMarkerPopupOpen(e: { marker_number: number }): void {
695
+ this.fire("popupopen", { marker_number: e.marker_number });
696
+ }
697
+
698
+ _onMarkerPopupClose(e: { marker_number: number }): void {
699
+ this.fire("popupclose", { marker_number: e.marker_number });
588
700
  }
589
701
 
590
702
  _onMapLoaded(e?: unknown): void {
@@ -657,7 +769,7 @@ class MapBase {
657
769
  origin: LatLngLiteral,
658
770
  destination: LatLngLiteral,
659
771
  correct_for_center?: boolean,
660
- ): number {
772
+ ): number | undefined {
661
773
  return this._getBoundsZoom(origin, destination, correct_for_center);
662
774
  }
663
775
 
@@ -700,15 +812,18 @@ class MapBase {
700
812
  _afterCreateMarkers(): void {}
701
813
 
702
814
  _initEvents(): void {
703
- this._el.map.addEventListener("wheel", (e) => {
815
+ // stored so the engine's dispose() can detach it (an inline arrow
816
+ // would have no other handle)
817
+ this._onWheelBound = (e: WheelEvent) => {
704
818
  this._onWheel(e);
705
- });
706
-
707
- //this.on("wheel", this._onWheel, this);
819
+ };
820
+ this._el.map.addEventListener("wheel", this._onWheelBound);
708
821
  }
709
822
  }
710
823
 
711
- export default class Map extends DomMixed(Evented(MapBase)) {
824
+ const EventedMapBase = Evented<MapEvents, typeof MapBase>(MapBase);
825
+
826
+ export default class Map extends DomMixed<MapEvents, typeof EventedMapBase>(EventedMapBase) {
712
827
  constructor(...args: ConstructorParameters<typeof MapBase>) {
713
828
  super(...args);
714
829
  }