@projektemacher/storymapjs 0.10.6 → 0.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/CHANGELOG +358 -16
  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 +101 -21
  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 +314 -12
  338. package/dist/docs/readme.html +40 -9
  339. package/dist/embed/index.html +130 -5
  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 +33 -10
  405. package/dist/js/storymap.d.ts +1558 -114
  406. package/dist/js/storymap.js +10113 -6490
  407. package/dist/js/storymap.js.map +1 -1
  408. package/dist/navplace-properties.json +40 -0
  409. package/docs/migration-from-knightlab.md +359 -0
  410. package/docs/storymap-as-iiif-manifest.md +934 -0
  411. package/package.json +16 -10
  412. package/schema/storymap.schema.json +431 -78
  413. package/src/animation/easings.ts +25 -0
  414. package/src/animation/tween.ts +186 -0
  415. package/src/core/Browser.ts +20 -0
  416. package/src/core/Load.ts +232 -0
  417. package/src/core/Util.ts +416 -0
  418. package/src/core/mixins.ts +188 -0
  419. package/src/core/viewers.ts +94 -0
  420. package/src/dom/Dom.ts +31 -0
  421. package/src/dom/DomEvent.ts +80 -0
  422. package/src/globals.d.ts +24 -0
  423. package/src/language/Language.ts +281 -0
  424. package/src/language/locale/.expected-gaps.json +86 -0
  425. package/src/language/locale/be.json +31 -0
  426. package/src/language/locale/bg.json +31 -0
  427. package/src/language/locale/cs.json +31 -0
  428. package/src/language/locale/de.json +31 -0
  429. package/src/language/locale/el.json +31 -0
  430. package/src/language/locale/en.json +32 -0
  431. package/src/language/locale/es.json +31 -0
  432. package/src/language/locale/et.json +22 -0
  433. package/src/language/locale/fr.json +31 -0
  434. package/src/language/locale/he.json +31 -0
  435. package/src/language/locale/hu.json +31 -0
  436. package/src/language/locale/is.json +22 -0
  437. package/src/language/locale/it.json +31 -0
  438. package/src/language/locale/jp.json +31 -0
  439. package/src/language/locale/ko.json +31 -0
  440. package/src/language/locale/nl.json +31 -0
  441. package/src/language/locale/nn.json +22 -0
  442. package/src/language/locale/no.json +31 -0
  443. package/src/language/locale/pl.json +31 -0
  444. package/src/language/locale/pt.json +31 -0
  445. package/src/language/locale/ru.json +31 -0
  446. package/src/language/locale/sk.json +31 -0
  447. package/src/language/locale/sr.json +21 -0
  448. package/src/language/locale/sv.json +31 -0
  449. package/src/language/locale/tr.json +31 -0
  450. package/src/language/locale/uk.json +31 -0
  451. package/src/language/locale/ur.json +22 -0
  452. package/src/language/locale/zh-cn.json +31 -0
  453. package/src/language/locale/zh-tw.json +31 -0
  454. package/src/main.ts +143 -0
  455. package/src/map/Map.ts +794 -0
  456. package/src/map/MapMarker.ts +172 -0
  457. package/src/map/georeference.ts +325 -0
  458. package/src/map/openlayers/Map.OpenLayers.ts +2492 -0
  459. package/src/map/openlayers/MapMarker.OpenLayers.ts +400 -0
  460. package/src/map/openlayers/zoomifyTiles.ts +25 -0
  461. package/src/map/types.ts +17 -0
  462. package/src/media/EmbedUtil.ts +452 -0
  463. package/src/media/Media.ts +597 -0
  464. package/src/media/MediaType.ts +163 -0
  465. package/src/media/embedId.ts +104 -0
  466. package/src/media/types/Audio.ts +14 -0
  467. package/src/media/types/Blockquote.ts +39 -0
  468. package/src/media/types/DailyMotion.ts +53 -0
  469. package/src/media/types/DocumentCloud.ts +12 -0
  470. package/src/media/types/Facebook.ts +40 -0
  471. package/src/media/types/Flickr.ts +115 -0
  472. package/src/media/types/GoogleDoc.ts +58 -0
  473. package/src/media/types/HtmlMedia.ts +167 -0
  474. package/src/media/types/IFrame.ts +50 -0
  475. package/src/media/types/Image.ts +115 -0
  476. package/src/media/types/Juxtapose.ts +41 -0
  477. package/src/media/types/SoundCloud.ts +99 -0
  478. package/src/media/types/Text.ts +178 -0
  479. package/src/media/types/Twitter.ts +109 -0
  480. package/src/media/types/Video.ts +14 -0
  481. package/src/media/types/Vimeo.ts +65 -0
  482. package/src/media/types/Website.ts +46 -0
  483. package/src/media/types/Wikipedia.ts +134 -0
  484. package/src/media/types/YouTube.ts +224 -0
  485. package/src/scss/Typography.scss +235 -0
  486. package/src/scss/VCO.StoryMap.Dark.scss +150 -0
  487. package/src/scss/VCO.StoryMap.scss +195 -0
  488. package/src/scss/Variables.Dark.scss +57 -0
  489. package/src/scss/Variables.scss +48 -0
  490. package/src/scss/core/Mixins.scss +54 -0
  491. package/src/scss/core/Reset.scss +206 -0
  492. package/src/scss/fonts/_font.base.scss +113 -0
  493. package/src/scss/fonts/font.abril-droidsans.scss +75 -0
  494. package/src/scss/fonts/font.amatic-andika.scss +76 -0
  495. package/src/scss/fonts/font.bitter-raleway.scss +92 -0
  496. package/src/scss/fonts/font.cairo.scss +79 -0
  497. package/src/scss/fonts/font.clicker-garamond.scss +97 -0
  498. package/src/scss/fonts/font.dancing-ledger.scss +75 -0
  499. package/src/scss/fonts/font.default.scss +9 -0
  500. package/src/scss/fonts/font.fjalla-average.scss +80 -0
  501. package/src/scss/fonts/font.georgia-helvetica.scss +58 -0
  502. package/src/scss/fonts/font.knightlab.scss +111 -0
  503. package/src/scss/fonts/font.lustria-lato.scss +80 -0
  504. package/src/scss/fonts/font.medula-lato.scss +73 -0
  505. package/src/scss/fonts/font.oldstandard.scss +94 -0
  506. package/src/scss/fonts/font.opensans-gentiumbook.scss +85 -0
  507. package/src/scss/fonts/font.playfair-faunaone.scss +88 -0
  508. package/src/scss/fonts/font.playfair.scss +89 -0
  509. package/src/scss/fonts/font.pt.scss +96 -0
  510. package/src/scss/fonts/font.roboto-megrim.scss +73 -0
  511. package/src/scss/fonts/font.rufina-sintony.scss +73 -0
  512. package/src/scss/fonts/font.ubuntu.scss +82 -0
  513. package/src/scss/fonts/font.unicaone-vollkorn.scss +90 -0
  514. package/src/scss/icons/Icons.scss +239 -0
  515. package/src/scss/map/VCO.ImageMarker.scss +23 -0
  516. package/src/scss/map/VCO.Map.scss +21 -0
  517. package/src/scss/map/VCO.MapMarker.scss +242 -0
  518. package/src/scss/map/openlayers/VCO.Map.OpenLayers.scss +126 -0
  519. package/src/scss/media/VCO.Media.scss +219 -0
  520. package/src/scss/media/types/VCO.Media.Blockquote.scss +76 -0
  521. package/src/scss/media/types/VCO.Media.IFrame.scss +11 -0
  522. package/src/scss/media/types/VCO.Media.Image.scss +13 -0
  523. package/src/scss/media/types/VCO.Media.Text.scss +98 -0
  524. package/src/scss/media/types/VCO.Media.Twitter.scss +87 -0
  525. package/src/scss/media/types/VCO.Media.Wikipedia.scss +65 -0
  526. package/src/scss/site/site.scss +748 -0
  527. package/src/scss/slider/VCO.Slide.scss +457 -0
  528. package/src/scss/slider/VCO.SlideNav.scss +332 -0
  529. package/src/scss/slider/VCO.StorySlider.scss +66 -0
  530. package/src/scss/snapmap/VCO.SnapMap.scss +103 -0
  531. package/src/scss/ui/VCO.Consent.scss +121 -0
  532. package/src/scss/ui/VCO.MenuBar.Button.scss +107 -0
  533. package/src/scss/ui/VCO.MenuBar.scss +20 -0
  534. package/src/scss/ui/VCO.Message.scss +101 -0
  535. package/src/site/site.ts +88 -0
  536. package/src/slider/Slide.ts +554 -0
  537. package/src/slider/SlideNav.ts +246 -0
  538. package/src/slider/StorySlider.ts +833 -0
  539. package/src/storymap/Consent.ts +471 -0
  540. package/src/storymap/StoryMap.ts +2118 -0
  541. package/src/storymap/content-state.ts +185 -0
  542. package/src/storymap/iiif.ts +1844 -0
  543. package/src/storymap/to-iiif.ts +921 -0
  544. package/src/storymap/validate.ts +257 -0
  545. package/src/types.ts +494 -0
  546. package/src/ui/MenuBar.ts +376 -0
  547. package/src/ui/Message.ts +127 -0
  548. package/src/ui/Swipable.ts +455 -0
  549. package/dist/assets/demo-CVQ7kFek.js +0 -1
  550. package/dist/assets/harness-C-VZV-ou.js +0 -1
  551. package/dist/assets/index-DDsPBPZA.js +0 -1
  552. package/dist/assets/main-DwbXrrYn.js +0 -17
package/src/map/Map.ts ADDED
@@ -0,0 +1,794 @@
1
+ import { mergeData, slideTransitionDuration } from "../core/Util";
2
+ import { DomMixed, Evented, type EventedInstance } from "../core/mixins";
3
+ import Dom from "../dom/Dom";
4
+ import { Browser } from "../core/Browser";
5
+ import type { Map as OlMap } from "ol";
6
+ import type { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
7
+ import type Layer from "ol/layer/Layer";
8
+ import type OverviewMap from "ol/control/OverviewMap";
9
+ import type MapMarker from "./MapMarker";
10
+ import type { LinePoint, ViewToOptions } from "./types";
11
+ import type {
12
+ AnimationHandle,
13
+ LatLngLiteral,
14
+ StorymapData,
15
+ StorymapOptions,
16
+ StorymapSlide,
17
+ StorymapSlideLocation,
18
+ } from "../types";
19
+ /* Map
20
+ Makes a Map
21
+
22
+ Events:
23
+ markerAdded
24
+ markerRemoved
25
+
26
+
27
+ ================================================ */
28
+
29
+ /** Wheel/scroll zoom bookkeeping (handles cleared via clearTimeout). */
30
+ interface ScrollState {
31
+ start_time: number | null;
32
+ timer?: ReturnType<typeof setTimeout>;
33
+ timer_done?: ReturnType<typeof setTimeout>;
34
+ }
35
+
36
+ class MapBase {
37
+ declare "_el": { container: HTMLElement; map: HTMLElement; map_mask: HTMLElement };
38
+ declare "_loaded": { data: boolean; map: boolean };
39
+ declare "_map": OlMap | null;
40
+ declare "_mini_map": OverviewMap | null;
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)[];
48
+ declare "zoom_min_max": { min: number | null; max: number | null };
49
+ declare "_line": VectorLayer | null;
50
+ declare "_line_active": VectorLayer | null;
51
+ declare "current_marker": number;
52
+ declare "bounds_array": number[][] | null;
53
+ declare "_tile_layer": Layer | null;
54
+ declare "_tile_layer_mini": Layer | null;
55
+ declare "_image_layer": TileLayer | null;
56
+ declare "data": StorymapData;
57
+ declare "options": StorymapOptions;
58
+ declare "animator": AnimationHandle | null;
59
+ declare "_transition_duration": number;
60
+ declare "timer": ReturnType<typeof setTimeout> | null;
61
+ declare "touch_scale": number;
62
+ declare "scroll": ScrollState;
63
+ declare "fire": EventedInstance["fire"];
64
+ constructor(
65
+ elem: string | HTMLElement,
66
+ data?: Partial<StorymapData>,
67
+ options?: Partial<StorymapOptions>,
68
+ ) {
69
+ // DOM ELEMENTS
70
+ this._el = {
71
+ container: {} as HTMLElement,
72
+ map: {} as HTMLElement,
73
+ map_mask: {} as HTMLElement,
74
+ };
75
+
76
+ if (typeof elem === "object") {
77
+ this._el.container = elem;
78
+ } else {
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;
84
+ }
85
+
86
+ // LOADED
87
+ this._loaded = {
88
+ data: false,
89
+ map: false,
90
+ };
91
+
92
+ // MAP
93
+ this._map = null;
94
+
95
+ // MINI MAP
96
+ this._mini_map = null;
97
+
98
+ // Markers
99
+ this._markers = [];
100
+ this._marker_zooms = [];
101
+
102
+ // Marker Zoom Miniumum and Maximum
103
+ this.zoom_min_max = {
104
+ min: null,
105
+ max: null,
106
+ };
107
+
108
+ // Line
109
+ this._line = null;
110
+ this._line_active = null;
111
+
112
+ // Current Marker
113
+ this.current_marker = 0;
114
+
115
+ // Markers Bounds Array
116
+ this.bounds_array = null;
117
+
118
+ // Map Tiles Layer
119
+ this._tile_layer = null;
120
+
121
+ // Map Tiles Layer for Mini Map
122
+ this._tile_layer_mini = null;
123
+
124
+ // Image Layer (for iiif)
125
+ this._image_layer = null;
126
+
127
+ // Data
128
+ this.data = {
129
+ uniqueid: "",
130
+ slides: [{ test: "yes" }, { test: "yes" }, { test: "yes" }],
131
+ };
132
+
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.
137
+ this.options = {
138
+ map_type: "osm:standard",
139
+ map_as_image: false,
140
+ map_mini: false,
141
+ map_background_color: "#d9d9d9",
142
+ map_access_token: "",
143
+ overlays: [],
144
+ overview_extent: null,
145
+ iiif: {
146
+ url: "",
147
+ attribution: "",
148
+ },
149
+ skinny_size: 650,
150
+ start_at_slide: 0,
151
+ calculate_zoom: true, // Allow map to determine best zoom level between markers (recommended)
152
+ line_follows_path: true, // Map history path follows default line, if false it will connect previous and current only
153
+ line_color: "#333",
154
+ line_color_inactive: "#000",
155
+ line_weight: 5,
156
+ line_opacity: 0.2,
157
+ line_dash: "5,5",
158
+ line_join: "miter",
159
+ show_lines: true,
160
+ show_history_line: true,
161
+ map_center_offset: null, // takes object {top:0,left:0}
162
+ } as unknown as StorymapOptions;
163
+
164
+ // Animation
165
+ this.animator = null;
166
+ this._transition_duration = this.options.duration;
167
+
168
+ // Timer
169
+ this.timer = null;
170
+
171
+ // Touchpad Events
172
+ this.touch_scale = 1;
173
+ this.scroll = {
174
+ start_time: null,
175
+ };
176
+
177
+ // Merge Data and Options
178
+ mergeData(this.options, options);
179
+ mergeData(this.data, data);
180
+
181
+ this._initLayout();
182
+ this._initEvents();
183
+ this._createMap();
184
+ this._initData();
185
+ }
186
+
187
+ /* Public
188
+ ================================================== */
189
+ updateDisplay(w: number, h: number, animate?: boolean, d?: number, offset?: unknown): void {
190
+ this._updateDisplay(w, h, animate, d, offset);
191
+ }
192
+
193
+ goTo(n: number, change?: boolean): void {
194
+ if (n < this._markers.length && n >= 0) {
195
+ let zoom;
196
+ const previous_marker = this.current_marker;
197
+
198
+ this.current_marker = n;
199
+
200
+ // Scale the transition duration with the jump distance so that
201
+ // out-of-order navigation glides instead of flicking
202
+ this._transition_duration = slideTransitionDuration(previous_marker, n);
203
+
204
+ const marker = this._markers[this.current_marker];
205
+
206
+ // Stop animation
207
+ if (this.animator) {
208
+ this.animator.stop();
209
+ }
210
+
211
+ // Reset Active Markers
212
+ this._resetMarkersActive();
213
+
214
+ // Check to see if it's an overview
215
+ if (marker.data.type && marker.data.type === "overview") {
216
+ this._markerOverview();
217
+ } else {
218
+ // Make marker active
219
+ marker.active(true);
220
+
221
+ const target_location = marker.data.location ?? undefined;
222
+ if (change) {
223
+ // Set Map View
224
+ if (target_location) {
225
+ this._viewTo(target_location, {
226
+ duration: this._transition_duration,
227
+ });
228
+ } else {
229
+ // nothing to show
230
+ }
231
+ } else if (target_location) {
232
+ if (this._hasLocation(marker.data) || this._hasRegion(marker.data)) {
233
+ // Calculate Zoom
234
+ const here = marker.location();
235
+ zoom = here
236
+ ? this._calculateZoomChange(this._getMapCenter(true), here)
237
+ : undefined;
238
+
239
+ // Set Map View
240
+ this._viewTo(target_location, {
241
+ calculate_zoom: this.options.calculate_zoom,
242
+ zoom: zoom,
243
+ duration: this._transition_duration,
244
+ });
245
+
246
+ // Show Line
247
+ if (this.options.line_follows_path) {
248
+ if (
249
+ this.options.show_history_line &&
250
+ marker.data.real_marker &&
251
+ this._markers[previous_marker].data.real_marker
252
+ ) {
253
+ let lines_array: LinePoint[] = [];
254
+ // Accumulate from the first marker so the
255
+ // connections between previous slides stay
256
+ // marked (mirrors the backward branch, which
257
+ // settles at the traveled path 0..current).
258
+ // The end state is the full traveled path, but
259
+ // only the latest hop animates: grow_from is
260
+ // the already-traveled prefix 0..previous,
261
+ // which stays drawn while [prev..current]
262
+ // traces progressively (see _replaceLines).
263
+ let line_num = 0;
264
+ let retract_path_source: LinePoint[] | null = null;
265
+ let grow_path_source: LinePoint[] | null = null;
266
+ if (previous_marker < this.current_marker) {
267
+ while (line_num < this.current_marker) {
268
+ const loc = this._locationOf(this._markers[line_num].data);
269
+ if (loc) {
270
+ lines_array.push(loc);
271
+ }
272
+
273
+ line_num++;
274
+ }
275
+ grow_path_source = this._locationsUpTo(previous_marker);
276
+ } else if (previous_marker > this.current_marker) {
277
+ // Backward navigation: the line retracts —
278
+ // the end state is the traveled path from
279
+ // the first marker to the current one, and
280
+ // the far end pulls back from the old
281
+ // marker to the new one (handled by the
282
+ // map's retract animation).
283
+ lines_array = this._locationsUpTo(this.current_marker);
284
+ retract_path_source = this._locationsUpTo(previous_marker);
285
+ }
286
+
287
+ const marker_loc = this._locationOf(marker.data);
288
+ if (!retract_path_source && marker_loc) {
289
+ lines_array.push(marker_loc);
290
+ }
291
+
292
+ this._replaceLines(this._line_active, lines_array, {
293
+ duration: this._transition_duration,
294
+ retractFrom: retract_path_source,
295
+ growFrom: grow_path_source,
296
+ });
297
+ }
298
+ } else {
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
+ });
309
+ }
310
+ }
311
+ } else {
312
+ this._markerOverview();
313
+ }
314
+
315
+ // Fire Event — once per goTo(), for every branch above
316
+ this._onMarkerChange();
317
+ }
318
+ }
319
+ }
320
+ }
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
+ */
326
+ panTo(loc: LatLngLiteral, animate?: boolean): void {
327
+ this._panTo(loc, animate);
328
+ }
329
+
330
+ /** Alias over the OpenLayers view: `storymap.map.getView().animate({zoom})`. */
331
+ zoomTo(z: number, animate?: boolean): void {
332
+ this._zoomTo(z, animate);
333
+ }
334
+
335
+ /**
336
+ * Alias over the OpenLayers view: `storymap.map.getView().animate(...)`,
337
+ * or `.fit(extent, {size})` for a region stop (`location.region`).
338
+ */
339
+ viewTo(loc: StorymapSlideLocation, opts?: ViewToOptions): void {
340
+ this._viewTo(loc, opts);
341
+ }
342
+
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);
351
+ }
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
+ */
357
+ markerOverview(): void {
358
+ this._markerOverview();
359
+ }
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
+ */
365
+ calculateMarkerZooms(): void {
366
+ this._calculateMarkerZooms();
367
+ }
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
+ */
373
+ createMiniMap(): void {
374
+ this._createMiniMap();
375
+ }
376
+
377
+ setMapOffset(left: number, top: number): void {
378
+ // Update Component Displays
379
+ if (!this.options.map_center_offset) {
380
+ this.options.map_center_offset = { left: left, top: top };
381
+ } else {
382
+ this.options.map_center_offset.left = left;
383
+ this.options.map_center_offset.top = top;
384
+ }
385
+ }
386
+
387
+ calculateMinMaxZoom(): void {
388
+ for (let i = 0; i < this._markers.length; i++) {
389
+ const zoom = this._markerZoom(i);
390
+ if (typeof zoom === "number") {
391
+ this.updateMinMaxZoom(zoom);
392
+ }
393
+ }
394
+ }
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
+ updateMinMaxZoom(zoom: number): void {
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) {
411
+ this.zoom_min_max.max = zoom;
412
+ }
413
+
414
+ if (this.zoom_min_max.min === null) {
415
+ this.zoom_min_max.min = zoom;
416
+ }
417
+
418
+ if (this.zoom_min_max.max < zoom) {
419
+ this.zoom_min_max.max = zoom;
420
+ }
421
+ if (this.zoom_min_max.min > zoom) {
422
+ this.zoom_min_max.min = zoom;
423
+ }
424
+ }
425
+
426
+ initialMapLocation(): void {
427
+ if (this._loaded.data && this._loaded.map) {
428
+ // don't clobber navigation that already happened while the map was
429
+ // still loading (the first loadend can arrive late)
430
+ if (this.current_marker === 0) {
431
+ this.goTo(this.options.start_at_slide, true);
432
+ }
433
+ }
434
+ }
435
+
436
+ /* Adding, Hiding, Showing etc
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
+ */
445
+ show(): void {}
446
+
447
+ /**
448
+ * @deprecated See {@link show} — no-op since 0.9.x upstream. Use
449
+ * `storymap.map.getTargetElement().style.display = "none"`.
450
+ */
451
+ hide(): void {}
452
+
453
+ /* Adding and Removing Markers
454
+ ================================================== */
455
+ createMarkers(array: StorymapSlide[]): void {
456
+ this._createMarkers(array);
457
+ }
458
+
459
+ createMarker(d: StorymapSlide): void {
460
+ this._createMarker(d);
461
+ }
462
+
463
+ _destroyMarker(marker: MapMarker): void {
464
+ this._removeMarker(marker);
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;
475
+ }
476
+ this.fire("markerRemoved", marker);
477
+ }
478
+
479
+ _createMarkers(array: StorymapSlide[]): void {
480
+ for (let i = 0; i < array.length; i++) {
481
+ this._createMarker(array[i]); // this must be called even for overview which has no marker or other logic must be fixed.
482
+ if (this._hasLocation(array[i]) && this.options.show_lines) {
483
+ this._addToLine(this._line, array[i]);
484
+ }
485
+ }
486
+ }
487
+
488
+ /**
489
+ * A slide has a real location: lat and lon are both numbers — lat 0 and
490
+ * lon 0 are valid coordinates and must not be treated as missing.
491
+ */
492
+ _hasLocation(d: StorymapSlide): boolean {
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;
535
+ }
536
+
537
+ /* Map Specific
538
+ ================================================== */
539
+
540
+ /* Map Specific Create
541
+ ================================================== */
542
+ // Extend this map class and use this to create the map using preferred API
543
+ _createMap(): void {}
544
+
545
+ /* Mini Map Specific Create
546
+ ================================================== */
547
+ // Extend this map class and use this to create the map using preferred API
548
+ _createMiniMap(): void {}
549
+
550
+ /* Map Specific Marker
551
+ ================================================== */
552
+
553
+ // Specific Marker Methods based on preferred Map API
554
+ _createMarker(d?: StorymapSlide): void {
555
+ const marker = {} as MapMarker;
556
+ marker.on("markerclick", this._onMarkerClick);
557
+ this._addMarker(marker);
558
+ this._markers.push(marker);
559
+ marker.marker_number = this._markers.length - 1;
560
+ this.fire("markerAdded", marker);
561
+ }
562
+
563
+ _addMarker(marker: MapMarker): void {}
564
+
565
+ _removeMarker(marker: MapMarker): void {}
566
+
567
+ _resetMarkersActive(): void {
568
+ for (let i = 0; i < this._markers.length; i++) {
569
+ this._markers[i].active(false);
570
+ }
571
+ }
572
+
573
+ _calculateMarkerZooms(): void {}
574
+
575
+ /* Map Specific Line
576
+ ================================================== */
577
+
578
+ _createLine(d?: StorymapSlide): unknown {
579
+ return { data: d };
580
+ }
581
+
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 {}
585
+
586
+ _replaceLines(
587
+ line: VectorLayer | null,
588
+ d: LinePoint[],
589
+ animate?: {
590
+ duration: number;
591
+ retractFrom?: LinePoint[] | null;
592
+ growFrom?: LinePoint[] | null;
593
+ },
594
+ ): void {}
595
+
596
+ _addLineToMap(line: VectorLayer): void {}
597
+
598
+ /* Map Specific Methods
599
+ ================================================== */
600
+
601
+ _panTo(loc: LatLngLiteral, animate?: boolean): void {}
602
+
603
+ _zoomTo(z: number, animate?: boolean): void {}
604
+
605
+ _viewTo(loc: StorymapSlideLocation, opts?: ViewToOptions): void {}
606
+
607
+ _updateMapDisplay(animate?: boolean, d?: number): void {}
608
+
609
+ _refreshMap(): void {}
610
+
611
+ _getMapZoom(): number {
612
+ return 1;
613
+ }
614
+
615
+ _getMapCenter(correct_for_center?: boolean): LatLngLiteral {
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;
628
+ }
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
+ */
635
+ _getBoundsZoom(
636
+ m1: LatLngLiteral,
637
+ m2: LatLngLiteral,
638
+ inside?: boolean,
639
+ padding?: unknown,
640
+ ): number | undefined {
641
+ return undefined;
642
+ }
643
+
644
+ _markerOverview(duration?: number): void {}
645
+
646
+ /**
647
+ * Great-circle length of the route through all markers in kilometers;
648
+ * `undefined` when the map cannot compute it or there are fewer than two
649
+ * markers (issue #341).
650
+ */
651
+ getRouteDistance(): number | undefined {
652
+ return undefined;
653
+ }
654
+
655
+ /* Events
656
+ ================================================== */
657
+ _onMarkerChange(e?: unknown): void {
658
+ this.fire("change", { current_marker: this.current_marker });
659
+ }
660
+
661
+ _onMarkerClick(e: { marker_number: number }): void {
662
+ if (this.current_marker !== e.marker_number) {
663
+ this.goTo(e.marker_number, false);
664
+ }
665
+ }
666
+
667
+ _onMapLoaded(e?: unknown): void {
668
+ // OpenLayers fires `loadend` after every finished tile-load cycle, not
669
+ // just the first render — without this guard every navigation would
670
+ // snap the map back to the start slide once its tiles arrive
671
+ if (this._loaded.map) {
672
+ return;
673
+ }
674
+ this._loaded.map = true;
675
+
676
+ if (this.options.calculate_zoom) {
677
+ this.calculateMarkerZooms();
678
+ }
679
+
680
+ this.calculateMinMaxZoom();
681
+
682
+ if (this.options.map_mini && !Browser.touch) {
683
+ this.createMiniMap();
684
+ }
685
+
686
+ this.initialMapLocation();
687
+ this.fire("loaded", this.data);
688
+ }
689
+
690
+ _onWheel(e: WheelEvent): void {
691
+ // borrowed from http://jsbin.com/qiyaseza/5/edit
692
+ if (e.ctrlKey) {
693
+ const s = Math.exp(-e.deltaY / 100);
694
+ this.touch_scale *= s;
695
+ e.preventDefault();
696
+ e.stopPropagation();
697
+ }
698
+
699
+ if (!this.scroll.start_time) {
700
+ this.scroll.start_time = +new Date();
701
+ }
702
+
703
+ const time_left = Math.max(40 - (+new Date() - this.scroll.start_time), 0);
704
+
705
+ clearTimeout(this.scroll.timer);
706
+
707
+ this.scroll.timer = setTimeout(() => {
708
+ this._scollZoom();
709
+ }, time_left);
710
+ }
711
+
712
+ _scollZoom(e?: unknown): void {
713
+ const current_zoom = this._getMapZoom();
714
+
715
+ this.scroll.start_time = null;
716
+ clearTimeout(this.scroll.timer);
717
+ clearTimeout(this.scroll.timer_done);
718
+
719
+ this.scroll.timer_done = setTimeout(() => {
720
+ this._scollZoomDone();
721
+ }, 1000);
722
+
723
+ this.zoomTo(Math.round(current_zoom * this.touch_scale));
724
+ }
725
+
726
+ _scollZoomDone(e?: unknown): void {
727
+ this.touch_scale = 1;
728
+ }
729
+
730
+ /* Private Methods
731
+ ================================================== */
732
+
733
+ _calculateZoomChange(
734
+ origin: LatLngLiteral,
735
+ destination: LatLngLiteral,
736
+ correct_for_center?: boolean,
737
+ ): number | undefined {
738
+ return this._getBoundsZoom(origin, destination, correct_for_center);
739
+ }
740
+
741
+ _updateDisplay(w?: number, h?: number, animate?: boolean, d?: number, offset?: unknown): void {
742
+ // Update Map Display
743
+ this._updateMapDisplay(animate, d);
744
+ }
745
+
746
+ /** Re-apply runtime-changed options (no-op in the base class) */
747
+ applyOptions(_keys: string[]): void {}
748
+
749
+ _initLayout(): void {
750
+ // Create Layout
751
+ this._el.map_mask = Dom.create("div", "vco-map-mask", this._el.container);
752
+
753
+ if (this.options.map_as_image) {
754
+ this._el.map = Dom.create(
755
+ "div",
756
+ "vco-map-display vco-mapimage-display",
757
+ this._el.map_mask,
758
+ );
759
+ } else {
760
+ this._el.map = Dom.create("div", "vco-map-display", this._el.map_mask);
761
+ }
762
+ }
763
+
764
+ _initData(): void {
765
+ if (this.data.slides) {
766
+ this._createMarkers(this.data.slides);
767
+ this._afterCreateMarkers();
768
+ this._resetMarkersActive();
769
+ if (this._markers.length > 0) {
770
+ this._markers[this.current_marker].active(true);
771
+ }
772
+ this._loaded.data = true;
773
+ }
774
+ }
775
+
776
+ /** Hook after marker creation (overridden per engine as needed) */
777
+ _afterCreateMarkers(): void {}
778
+
779
+ _initEvents(): void {
780
+ this._el.map.addEventListener("wheel", (e) => {
781
+ this._onWheel(e);
782
+ });
783
+
784
+ //this.on("wheel", this._onWheel, this);
785
+ }
786
+ }
787
+
788
+ export default class Map extends DomMixed(Evented(MapBase)) {
789
+ constructor(...args: ConstructorParameters<typeof MapBase>) {
790
+ super(...args);
791
+ }
792
+ }
793
+
794
+ export { Map };