vistaview 1.0.3 → 2.0.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 (342) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +18 -61
  3. package/{dist/lib/extensions/dailymotion-video.d.ts → extensions/dailymotion-video/dist/main.d.ts} +3 -3
  4. package/extensions/dailymotion-video/dist/main.d.ts.map +1 -0
  5. package/extensions/dailymotion-video/dist/main.js +72 -0
  6. package/extensions/dailymotion-video/dist/main.js.map +1 -0
  7. package/extensions/dailymotion-video/dist/main.test.d.ts +2 -0
  8. package/extensions/dailymotion-video/dist/main.test.d.ts.map +1 -0
  9. package/extensions/dailymotion-video/dist/main.umd.cjs +2 -0
  10. package/extensions/dailymotion-video/dist/main.umd.cjs.map +1 -0
  11. package/extensions/download/dist/main.d.ts +4 -0
  12. package/extensions/download/dist/main.d.ts.map +1 -0
  13. package/extensions/download/dist/main.js +42 -0
  14. package/extensions/download/dist/main.js.map +1 -0
  15. package/extensions/download/dist/main.test.d.ts +2 -0
  16. package/extensions/download/dist/main.test.d.ts.map +1 -0
  17. package/extensions/download/dist/main.umd.cjs +2 -0
  18. package/extensions/download/dist/main.umd.cjs.map +1 -0
  19. package/{dist/lib/extensions/google-maps.d.ts → extensions/google-maps/dist/main.d.ts} +3 -3
  20. package/extensions/google-maps/dist/main.d.ts.map +1 -0
  21. package/extensions/google-maps/dist/main.js +96 -0
  22. package/extensions/google-maps/dist/main.js.map +1 -0
  23. package/extensions/google-maps/dist/main.test.d.ts +2 -0
  24. package/extensions/google-maps/dist/main.test.d.ts.map +1 -0
  25. package/extensions/google-maps/dist/main.umd.cjs +2 -0
  26. package/extensions/google-maps/dist/main.umd.cjs.map +1 -0
  27. package/extensions/image-story/dist/main.d.ts +16 -0
  28. package/extensions/image-story/dist/main.d.ts.map +1 -0
  29. package/extensions/image-story/dist/main.js +600 -0
  30. package/extensions/image-story/dist/main.js.map +1 -0
  31. package/extensions/image-story/dist/main.test.d.ts +2 -0
  32. package/extensions/image-story/dist/main.test.d.ts.map +1 -0
  33. package/extensions/image-story/dist/main.umd.cjs +3 -0
  34. package/extensions/image-story/dist/main.umd.cjs.map +1 -0
  35. package/extensions/image-story/dist/style.css +1 -0
  36. package/extensions/logger/dist/main.d.ts +3 -0
  37. package/extensions/logger/dist/main.d.ts.map +1 -0
  38. package/extensions/logger/dist/main.js +23 -0
  39. package/extensions/logger/dist/main.js.map +1 -0
  40. package/extensions/logger/dist/main.test.d.ts +2 -0
  41. package/extensions/logger/dist/main.test.d.ts.map +1 -0
  42. package/extensions/logger/dist/main.umd.cjs +2 -0
  43. package/extensions/logger/dist/main.umd.cjs.map +1 -0
  44. package/{dist/lib/extensions/mapbox.d.ts → extensions/mapbox/dist/main.d.ts} +3 -3
  45. package/extensions/mapbox/dist/main.d.ts.map +1 -0
  46. package/extensions/mapbox/dist/main.js +114 -0
  47. package/extensions/mapbox/dist/main.js.map +1 -0
  48. package/extensions/mapbox/dist/main.test.d.ts +2 -0
  49. package/extensions/mapbox/dist/main.test.d.ts.map +1 -0
  50. package/extensions/mapbox/dist/main.umd.cjs +2 -0
  51. package/extensions/mapbox/dist/main.umd.cjs.map +1 -0
  52. package/{dist/lib/extensions/openstreetmap.d.ts → extensions/openstreetmap/dist/main.d.ts} +3 -3
  53. package/extensions/openstreetmap/dist/main.d.ts.map +1 -0
  54. package/extensions/openstreetmap/dist/main.js +114 -0
  55. package/extensions/openstreetmap/dist/main.js.map +1 -0
  56. package/extensions/openstreetmap/dist/main.test.d.ts +2 -0
  57. package/extensions/openstreetmap/dist/main.test.d.ts.map +1 -0
  58. package/extensions/openstreetmap/dist/main.umd.cjs +2 -0
  59. package/extensions/openstreetmap/dist/main.umd.cjs.map +1 -0
  60. package/{dist/lib/extensions/select-box.d.ts → extensions/select-box/dist/main.d.ts} +2 -2
  61. package/extensions/select-box/dist/main.d.ts.map +1 -0
  62. package/extensions/select-box/dist/main.js +25 -0
  63. package/extensions/select-box/dist/main.js.map +1 -0
  64. package/extensions/select-box/dist/main.umd.cjs +2 -0
  65. package/extensions/select-box/dist/main.umd.cjs.map +1 -0
  66. package/{dist/lib/extensions/streamable-video.d.ts → extensions/streamable-video/dist/main.d.ts} +3 -3
  67. package/extensions/streamable-video/dist/main.d.ts.map +1 -0
  68. package/extensions/streamable-video/dist/main.js +68 -0
  69. package/extensions/streamable-video/dist/main.js.map +1 -0
  70. package/extensions/streamable-video/dist/main.test.d.ts +2 -0
  71. package/extensions/streamable-video/dist/main.test.d.ts.map +1 -0
  72. package/extensions/streamable-video/dist/main.umd.cjs +2 -0
  73. package/extensions/streamable-video/dist/main.umd.cjs.map +1 -0
  74. package/{dist/lib/extensions/twitch-video.d.ts → extensions/twitch-video/dist/main.d.ts} +3 -3
  75. package/extensions/twitch-video/dist/main.d.ts.map +1 -0
  76. package/extensions/twitch-video/dist/main.js +81 -0
  77. package/extensions/twitch-video/dist/main.js.map +1 -0
  78. package/extensions/twitch-video/dist/main.umd.cjs +2 -0
  79. package/extensions/twitch-video/dist/main.umd.cjs.map +1 -0
  80. package/{dist/lib/extensions/vidyard-video.d.ts → extensions/vidyard-video/dist/main.d.ts} +3 -3
  81. package/extensions/vidyard-video/dist/main.d.ts.map +1 -0
  82. package/extensions/vidyard-video/dist/main.js +72 -0
  83. package/extensions/vidyard-video/dist/main.js.map +1 -0
  84. package/extensions/vidyard-video/dist/main.test.d.ts +2 -0
  85. package/extensions/vidyard-video/dist/main.test.d.ts.map +1 -0
  86. package/extensions/vidyard-video/dist/main.umd.cjs +2 -0
  87. package/extensions/vidyard-video/dist/main.umd.cjs.map +1 -0
  88. package/{dist/lib/extensions/vimeo-video.d.ts → extensions/vimeo-video/dist/main.d.ts} +3 -3
  89. package/extensions/vimeo-video/dist/main.d.ts.map +1 -0
  90. package/extensions/vimeo-video/dist/main.js +68 -0
  91. package/extensions/vimeo-video/dist/main.js.map +1 -0
  92. package/extensions/vimeo-video/dist/main.test.d.ts +2 -0
  93. package/extensions/vimeo-video/dist/main.test.d.ts.map +1 -0
  94. package/extensions/vimeo-video/dist/main.umd.cjs +2 -0
  95. package/extensions/vimeo-video/dist/main.umd.cjs.map +1 -0
  96. package/{dist/lib/extensions/wistia-video.d.ts → extensions/wistia-video/dist/main.d.ts} +3 -3
  97. package/extensions/wistia-video/dist/main.d.ts.map +1 -0
  98. package/extensions/wistia-video/dist/main.js +72 -0
  99. package/extensions/wistia-video/dist/main.js.map +1 -0
  100. package/extensions/wistia-video/dist/main.test.d.ts +2 -0
  101. package/extensions/wistia-video/dist/main.test.d.ts.map +1 -0
  102. package/extensions/wistia-video/dist/main.umd.cjs +2 -0
  103. package/extensions/wistia-video/dist/main.umd.cjs.map +1 -0
  104. package/{dist/lib/extensions/youtube-video.d.ts → extensions/youtube-video/dist/main.d.ts} +3 -3
  105. package/extensions/youtube-video/dist/main.d.ts.map +1 -0
  106. package/extensions/youtube-video/dist/main.js +80 -0
  107. package/extensions/youtube-video/dist/main.js.map +1 -0
  108. package/extensions/youtube-video/dist/main.test.d.ts +2 -0
  109. package/extensions/youtube-video/dist/main.test.d.ts.map +1 -0
  110. package/extensions/youtube-video/dist/main.umd.cjs +2 -0
  111. package/extensions/youtube-video/dist/main.umd.cjs.map +1 -0
  112. package/frameworks/react/dist/main.d.ts +3 -0
  113. package/frameworks/react/dist/main.es.js +51 -0
  114. package/frameworks/react/dist/main.es.js.map +1 -0
  115. package/frameworks/react/dist/test-setup.d.ts +1 -0
  116. package/frameworks/react/dist/use-vistaview.d.ts +2 -0
  117. package/frameworks/react/dist/vistaview.d.ts +13 -0
  118. package/frameworks/solid/dist/dev.js +77 -0
  119. package/frameworks/solid/dist/dev.jsx +72 -0
  120. package/frameworks/solid/dist/index.d.ts +18 -0
  121. package/frameworks/solid/dist/index.js +76 -0
  122. package/frameworks/solid/dist/index.jsx +71 -0
  123. package/frameworks/svelte/dist/VistaView.svelte +65 -0
  124. package/frameworks/svelte/dist/VistaView.svelte.d.ts +46 -0
  125. package/frameworks/svelte/dist/index.d.ts +3 -0
  126. package/frameworks/svelte/dist/index.js +2 -0
  127. package/frameworks/svelte/dist/types.d.ts +14 -0
  128. package/frameworks/svelte/dist/types.js +1 -0
  129. package/frameworks/svelte/dist/use-vistaview.d.ts +2 -0
  130. package/frameworks/svelte/dist/use-vistaview.js +24 -0
  131. package/frameworks/svelte/dist/use-vistaview.test.d.ts +1 -0
  132. package/frameworks/svelte/dist/use-vistaview.test.js +115 -0
  133. package/frameworks/vue/dist/main.es.js +95 -0
  134. package/frameworks/vue/dist/main.es.js.map +1 -0
  135. package/{dist → main/dist}/lib/components.d.ts +1 -2
  136. package/main/dist/lib/components.js +107 -0
  137. package/main/dist/lib/defaults/close.d.ts +2 -0
  138. package/main/dist/lib/defaults/close.js +4 -0
  139. package/main/dist/lib/defaults/image-setup.d.ts +3 -0
  140. package/main/dist/lib/defaults/image-setup.js +4 -0
  141. package/main/dist/lib/defaults/init.d.ts +2 -0
  142. package/main/dist/lib/defaults/init.js +97 -0
  143. package/main/dist/lib/defaults/open.d.ts +2 -0
  144. package/main/dist/lib/defaults/open.js +8 -0
  145. package/main/dist/lib/defaults/options.d.ts +2 -0
  146. package/main/dist/lib/defaults/options.js +15 -0
  147. package/{dist → main/dist}/lib/defaults/transition.d.ts +2 -3
  148. package/main/dist/lib/defaults/transition.js +40 -0
  149. package/{dist → main/dist}/lib/main.d.ts +1 -2
  150. package/main/dist/lib/main.js +66 -0
  151. package/{dist → main/dist}/lib/throttle.d.ts +0 -1
  152. package/main/dist/lib/throttle.js +21 -0
  153. package/{dist → main/dist}/lib/types.d.ts +4 -5
  154. package/main/dist/lib/types.js +1 -0
  155. package/{dist → main/dist}/lib/utils/get-fitted-size.d.ts +0 -1
  156. package/main/dist/lib/utils/get-fitted-size.js +53 -0
  157. package/{dist → main/dist}/lib/utils/get-full-size-dim.d.ts +0 -1
  158. package/main/dist/lib/utils/get-full-size-dim.js +35 -0
  159. package/{dist → main/dist}/lib/utils/get-style.d.ts +0 -1
  160. package/main/dist/lib/utils/get-style.js +19 -0
  161. package/{dist → main/dist}/lib/utils/index.d.ts +0 -1
  162. package/main/dist/lib/utils/index.js +7 -0
  163. package/{dist → main/dist}/lib/utils/is-not-zero-css.d.ts +0 -1
  164. package/main/dist/lib/utils/is-not-zero-css.js +3 -0
  165. package/{dist → main/dist}/lib/utils/parse-element.d.ts +1 -2
  166. package/main/dist/lib/utils/parse-element.js +67 -0
  167. package/{dist → main/dist}/lib/vista-box.d.ts +3 -4
  168. package/main/dist/lib/vista-box.js +466 -0
  169. package/{dist → main/dist}/lib/vista-hires-transition.d.ts +2 -3
  170. package/main/dist/lib/vista-hires-transition.js +108 -0
  171. package/{dist → main/dist}/lib/vista-image-event.d.ts +2 -3
  172. package/main/dist/lib/vista-image-event.js +166 -0
  173. package/{dist → main/dist}/lib/vista-image.d.ts +2 -3
  174. package/main/dist/lib/vista-image.js +274 -0
  175. package/{dist → main/dist}/lib/vista-pointers.d.ts +1 -2
  176. package/main/dist/lib/vista-pointers.js +163 -0
  177. package/{dist → main/dist}/lib/vista-state.d.ts +2 -3
  178. package/main/dist/lib/vista-state.js +15 -0
  179. package/{dist → main/dist}/lib/vista-view.d.ts +2 -3
  180. package/main/dist/lib/vista-view.js +576 -0
  181. package/main/dist/style.css +1 -0
  182. package/main/dist/styles/autumn-amber.css +1 -0
  183. package/main/dist/styles/cotton-candy.css +1 -0
  184. package/main/dist/styles/dark-rounded.css +1 -0
  185. package/main/dist/styles/ember-glow.css +1 -0
  186. package/main/dist/styles/forest-moss.css +1 -0
  187. package/main/dist/styles/green-lake.css +1 -0
  188. package/main/dist/styles/ice-crystal.css +1 -0
  189. package/main/dist/styles/lavender-fields.css +1 -0
  190. package/main/dist/styles/midnight-gold.css +1 -0
  191. package/main/dist/styles/midnight-ocean.css +1 -0
  192. package/main/dist/styles/mint-chocolate.css +1 -0
  193. package/main/dist/styles/neon-nights.css +1 -0
  194. package/main/dist/styles/paper-light.css +1 -0
  195. package/main/dist/styles/retro-arcade.css +1 -0
  196. package/main/dist/styles/soft-neutral.css +1 -0
  197. package/main/dist/styles/stark-minimal.css +1 -0
  198. package/main/dist/styles/strawberry.css +1 -0
  199. package/{dist → main/dist}/vistaview.d.ts +0 -1
  200. package/main/dist/vistaview.js +14 -0
  201. package/main/dist/vistaview.umd.js +18 -0
  202. package/package.json +122 -67
  203. package/dist/extensions/dailymotion-video.d.ts +0 -2
  204. package/dist/extensions/dailymotion-video.js +0 -80
  205. package/dist/extensions/dailymotion-video.umd.js +0 -1
  206. package/dist/extensions/download.d.ts +0 -2
  207. package/dist/extensions/download.js +0 -35
  208. package/dist/extensions/download.umd.js +0 -1
  209. package/dist/extensions/google-maps.d.ts +0 -2
  210. package/dist/extensions/google-maps.js +0 -96
  211. package/dist/extensions/google-maps.umd.js +0 -1
  212. package/dist/extensions/image-story.d.ts +0 -2
  213. package/dist/extensions/image-story.js +0 -621
  214. package/dist/extensions/image-story.umd.js +0 -2
  215. package/dist/extensions/logger.d.ts +0 -2
  216. package/dist/extensions/logger.js +0 -23
  217. package/dist/extensions/logger.umd.js +0 -1
  218. package/dist/extensions/mapbox.d.ts +0 -2
  219. package/dist/extensions/mapbox.js +0 -124
  220. package/dist/extensions/mapbox.umd.js +0 -1
  221. package/dist/extensions/openstreetmap.d.ts +0 -2
  222. package/dist/extensions/openstreetmap.js +0 -125
  223. package/dist/extensions/openstreetmap.umd.js +0 -1
  224. package/dist/extensions/select-box.d.ts +0 -2
  225. package/dist/extensions/select-box.js +0 -29
  226. package/dist/extensions/select-box.umd.js +0 -1
  227. package/dist/extensions/streamable-video.d.ts +0 -2
  228. package/dist/extensions/streamable-video.js +0 -76
  229. package/dist/extensions/streamable-video.umd.js +0 -1
  230. package/dist/extensions/twitch-video.d.ts +0 -2
  231. package/dist/extensions/twitch-video.js +0 -79
  232. package/dist/extensions/vidyard-video.d.ts +0 -2
  233. package/dist/extensions/vidyard-video.js +0 -80
  234. package/dist/extensions/vidyard-video.umd.js +0 -1
  235. package/dist/extensions/vimeo-video.d.ts +0 -2
  236. package/dist/extensions/vimeo-video.js +0 -76
  237. package/dist/extensions/vimeo-video.umd.js +0 -1
  238. package/dist/extensions/wistia-video.d.ts +0 -2
  239. package/dist/extensions/wistia-video.js +0 -85
  240. package/dist/extensions/wistia-video.umd.js +0 -1
  241. package/dist/extensions/youtube-video.d.ts +0 -2
  242. package/dist/extensions/youtube-video.js +0 -88
  243. package/dist/extensions/youtube-video.umd.js +0 -1
  244. package/dist/lib/components.d.ts.map +0 -1
  245. package/dist/lib/defaults/close.d.ts +0 -3
  246. package/dist/lib/defaults/close.d.ts.map +0 -1
  247. package/dist/lib/defaults/image-setup.d.ts +0 -4
  248. package/dist/lib/defaults/image-setup.d.ts.map +0 -1
  249. package/dist/lib/defaults/init.d.ts +0 -3
  250. package/dist/lib/defaults/init.d.ts.map +0 -1
  251. package/dist/lib/defaults/open.d.ts +0 -3
  252. package/dist/lib/defaults/open.d.ts.map +0 -1
  253. package/dist/lib/defaults/options.d.ts +0 -3
  254. package/dist/lib/defaults/options.d.ts.map +0 -1
  255. package/dist/lib/defaults/transition.d.ts.map +0 -1
  256. package/dist/lib/extensions/dailymotion-video.d.ts.map +0 -1
  257. package/dist/lib/extensions/download.d.ts +0 -3
  258. package/dist/lib/extensions/download.d.ts.map +0 -1
  259. package/dist/lib/extensions/google-maps.d.ts.map +0 -1
  260. package/dist/lib/extensions/image-story.d.ts +0 -12
  261. package/dist/lib/extensions/image-story.d.ts.map +0 -1
  262. package/dist/lib/extensions/logger.d.ts +0 -3
  263. package/dist/lib/extensions/logger.d.ts.map +0 -1
  264. package/dist/lib/extensions/mapbox.d.ts.map +0 -1
  265. package/dist/lib/extensions/openstreetmap.d.ts.map +0 -1
  266. package/dist/lib/extensions/select-box.d.ts.map +0 -1
  267. package/dist/lib/extensions/streamable-video.d.ts.map +0 -1
  268. package/dist/lib/extensions/twitch-video.d.ts.map +0 -1
  269. package/dist/lib/extensions/vidyard-video.d.ts.map +0 -1
  270. package/dist/lib/extensions/vimeo-video.d.ts.map +0 -1
  271. package/dist/lib/extensions/wistia-video.d.ts.map +0 -1
  272. package/dist/lib/extensions/youtube-video.d.ts.map +0 -1
  273. package/dist/lib/main.d.ts.map +0 -1
  274. package/dist/lib/throttle.d.ts.map +0 -1
  275. package/dist/lib/types.d.ts.map +0 -1
  276. package/dist/lib/utils/get-fitted-size.d.ts.map +0 -1
  277. package/dist/lib/utils/get-full-size-dim.d.ts.map +0 -1
  278. package/dist/lib/utils/get-style.d.ts.map +0 -1
  279. package/dist/lib/utils/index.d.ts.map +0 -1
  280. package/dist/lib/utils/is-not-zero-css.d.ts.map +0 -1
  281. package/dist/lib/utils/parse-element.d.ts.map +0 -1
  282. package/dist/lib/vista-box.d.ts.map +0 -1
  283. package/dist/lib/vista-hires-transition.d.ts.map +0 -1
  284. package/dist/lib/vista-image-event.d.ts.map +0 -1
  285. package/dist/lib/vista-image.d.ts.map +0 -1
  286. package/dist/lib/vista-pointers.d.ts.map +0 -1
  287. package/dist/lib/vista-state.d.ts.map +0 -1
  288. package/dist/lib/vista-view.d.ts.map +0 -1
  289. package/dist/react.d.ts +0 -11
  290. package/dist/react.d.ts.map +0 -1
  291. package/dist/react.js +0 -69
  292. package/dist/solid.d.ts +0 -3
  293. package/dist/solid.d.ts.map +0 -1
  294. package/dist/solid.js +0 -24
  295. package/dist/style.css +0 -1
  296. package/dist/style.d.ts +0 -1
  297. package/dist/styles/autumn-amber.css +0 -1
  298. package/dist/styles/autumn-amber.d.ts +0 -1
  299. package/dist/styles/cotton-candy.css +0 -1
  300. package/dist/styles/cotton-candy.d.ts +0 -1
  301. package/dist/styles/dark-rounded.css +0 -1
  302. package/dist/styles/dark-rounded.d.ts +0 -1
  303. package/dist/styles/ember-glow.css +0 -1
  304. package/dist/styles/ember-glow.d.ts +0 -1
  305. package/dist/styles/extensions/image-story.css +0 -1
  306. package/dist/styles/extensions/image-story.d.ts +0 -1
  307. package/dist/styles/forest-moss.css +0 -1
  308. package/dist/styles/forest-moss.d.ts +0 -1
  309. package/dist/styles/green-lake.css +0 -1
  310. package/dist/styles/green-lake.d.ts +0 -1
  311. package/dist/styles/ice-crystal.css +0 -1
  312. package/dist/styles/ice-crystal.d.ts +0 -1
  313. package/dist/styles/lavender-fields.css +0 -1
  314. package/dist/styles/lavender-fields.d.ts +0 -1
  315. package/dist/styles/midnight-gold.css +0 -1
  316. package/dist/styles/midnight-gold.d.ts +0 -1
  317. package/dist/styles/midnight-ocean.css +0 -1
  318. package/dist/styles/midnight-ocean.d.ts +0 -1
  319. package/dist/styles/mint-chocolate.css +0 -1
  320. package/dist/styles/mint-chocolate.d.ts +0 -1
  321. package/dist/styles/neon-nights.css +0 -1
  322. package/dist/styles/neon-nights.d.ts +0 -1
  323. package/dist/styles/paper-light.css +0 -1
  324. package/dist/styles/paper-light.d.ts +0 -1
  325. package/dist/styles/retro-arcade.css +0 -1
  326. package/dist/styles/retro-arcade.d.ts +0 -1
  327. package/dist/styles/soft-neutral.css +0 -1
  328. package/dist/styles/soft-neutral.d.ts +0 -1
  329. package/dist/styles/stark-minimal.css +0 -1
  330. package/dist/styles/stark-minimal.d.ts +0 -1
  331. package/dist/styles/strawberry.css +0 -1
  332. package/dist/styles/strawberry.d.ts +0 -1
  333. package/dist/svelte.d.ts +0 -3
  334. package/dist/svelte.d.ts.map +0 -1
  335. package/dist/svelte.js +0 -22
  336. package/dist/vista-box-zG6ZgBcI.js +0 -334
  337. package/dist/vistaview.d.ts.map +0 -1
  338. package/dist/vistaview.js +0 -1013
  339. package/dist/vistaview.umd.js +0 -18
  340. package/dist/vue.d.ts +0 -25
  341. package/dist/vue.d.ts.map +0 -1
  342. package/dist/vue.js +0 -79
package/dist/vistaview.js DELETED
@@ -1,1013 +0,0 @@
1
- var S = Object.defineProperty;
2
- var D = (s, t, e) => t in s ? S(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
- var r = (s, t, e) => D(s, typeof t != "symbol" ? t + "" : t, e);
4
- import { V as T, a as L } from "./vista-box-zG6ZgBcI.js";
5
- const I = {
6
- // debug, don't remove
7
- // animationDurationBase: 1000,
8
- animationDurationBase: 333,
9
- maxZoomLevel: 2,
10
- preloads: 1,
11
- keyboardListeners: !0,
12
- arrowOnSmallScreens: !1,
13
- rapidLimit: 222,
14
- controls: {
15
- topLeft: ["indexDisplay"],
16
- topRight: ["zoomIn", "zoomOut", "close"],
17
- bottomLeft: ["description"]
18
- }
19
- }, R = '<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>', O = '<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>', q = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', M = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', H = '<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>';
20
- let E = null;
21
- function W() {
22
- return E || (window.trustedTypes || (window.trustedTypes = {
23
- createPolicy: (s, t) => t
24
- }), E = window.trustedTypes.createPolicy("vistaView-policy", {
25
- createHTML: (s) => s,
26
- // HTML is generated by us, not user input
27
- createScript: () => {
28
- throw new Error("Not implemented");
29
- },
30
- createScriptURL: () => {
31
- throw new Error("Not implemented");
32
- }
33
- }), E);
34
- }
35
- function F(s) {
36
- const e = W().createHTML(s), i = document.createElement("template");
37
- i.innerHTML = e;
38
- const n = i.content;
39
- return i.remove(), n;
40
- }
41
- function A(s, t) {
42
- if (typeof s == "string")
43
- switch (s) {
44
- case "zoomIn":
45
- return `<div class="vvw-ui"><button aria-label="Zoom In" class="vvw-zoom-in">${q}</button></div>`;
46
- case "zoomOut":
47
- return `<div class="vvw-ui"><button aria-label="Zoom Out" disabled class="vvw-zoom-out">${M}</button></div>`;
48
- case "close":
49
- return `<div class="vvw-ui"><button aria-label="Close" class="vvw-close">${H}</button></div>`;
50
- case "indexDisplay":
51
- return '<div class="vvw-index vvw-ui" aria-hidden="true"></div>';
52
- case "description":
53
- return '<div class="vvw-desc vvw-ui" role="status" aria-live="polite" aria-atomic="true"></div>';
54
- default:
55
- const e = t[s];
56
- return e && e.control ? `<div class="vvw-ext vvw-ui" aria-label="${e.description || e.name}" data-vvw-control="${e.name}"></div>` : (console.warn(`Unknown control: ${s}. Will return empty string.`), "");
57
- }
58
- return "";
59
- }
60
- function $({
61
- controls: s,
62
- extensions: t
63
- }) {
64
- const e = {};
65
- t.forEach((o) => {
66
- e[o.name] = o;
67
- });
68
- const i = (o) => o ? o.map((a) => A(a, e)).join("") : "", n = F(
69
- `<div class="vvw-root" id="vvw-root">
70
- <div class="vvw-container">
71
- <div class="vvw-bg"></div>
72
- <div class="vvw-image-container"></div>
73
- <div class="vvw-top-bar">
74
- <div>${i(s == null ? void 0 : s.topLeft)}</div>
75
- <div>${i(s == null ? void 0 : s.topCenter)}</div>
76
- <div>${i(s == null ? void 0 : s.topRight)}</div>
77
- </div>
78
- <div class="vvw-bottom-bar">
79
- <div>${i(s == null ? void 0 : s.bottomLeft)}</div>
80
- <div>${i(s == null ? void 0 : s.bottomCenter)}</div>
81
- <div>${i(s == null ? void 0 : s.bottomRight)}</div>
82
- </div>
83
- <div class="vvw-prev vvw-ui"><button aria-label="Previous">${R}</button></div>
84
- <div class="vvw-next vvw-ui"><button aria-label="Next">${O}</button></div>
85
- </div>
86
- </div>`
87
- );
88
- return [
89
- ...(s == null ? void 0 : s.topLeft) || [],
90
- ...(s == null ? void 0 : s.topCenter) || [],
91
- ...(s == null ? void 0 : s.topRight) || [],
92
- ...(s == null ? void 0 : s.bottomLeft) || [],
93
- ...(s == null ? void 0 : s.bottomCenter) || [],
94
- ...(s == null ? void 0 : s.bottomRight) || []
95
- ].forEach((o) => {
96
- const a = e[o];
97
- if (a && a.control) {
98
- const h = n.querySelector(`[data-vvw-control="${a.name}"]`), l = a.control();
99
- h && l && h.appendChild(l);
100
- }
101
- }), n;
102
- }
103
- function k(s, t) {
104
- }
105
- function V(s) {
106
- N(s);
107
- }
108
- function N(s) {
109
- let t = { x: 0, y: 0 }, e = { x: 0, y: 0 }, i = null;
110
- s.registerPointerListener((n) => {
111
- var o;
112
- if (!n.hasInternalExecution && !(n.pointers.length > 1)) {
113
- if (n.event === "down" && (t = { x: n.pointer.x, y: n.pointer.y }, e = { x: n.pointer.x, y: n.pointer.y }, (o = n.abortController) == null || o.abort()), n.event === "move") {
114
- e = { x: n.pointer.x, y: n.pointer.y };
115
- const a = e.x - t.x, h = e.y - t.y;
116
- if (!i && Math.abs(h) > Math.abs(a) || i === "y") {
117
- const l = h / window.innerHeight * 100;
118
- s.imageContainer.style.transition = "none", s.imageContainer.style.transform = `translateY(${l}vh)`, i = "y";
119
- } else if (!i && Math.abs(a) > Math.abs(h) || i === "x" && n.state.elmLength > 1) {
120
- const l = a / window.innerWidth * 100;
121
- s.imageContainer.style.transition = "none", s.imageContainer.style.transform = `translateX(${l}vw)`, i = "x";
122
- }
123
- }
124
- if (n.event === "up" || n.event === "cancel") {
125
- let a = function(h) {
126
- var l;
127
- (l = s.imageContainer) == null || l.addEventListener("transitionend", function d() {
128
- var p;
129
- (p = s.imageContainer) == null || p.removeEventListener("transitionend", d), s.imageContainer.style.transition = "", s.imageContainer.style.transform = "";
130
- }), s.imageContainer.style.transition = "transform 222ms ease", s.imageContainer.style.transform = h;
131
- };
132
- if (i === "y") {
133
- const h = e.y - t.y;
134
- Math.abs(h) > 144 ? (s.imageContainer.style.transition = "transform 222ms ease", s.imageContainer.style.transform = "translateY(0vh)", s.close()) : a("translateY(0vh)");
135
- }
136
- if (i === "x" && n.state.elmLength > 1) {
137
- const h = e.x - t.x;
138
- s.imageContainer.style.transition = "", h > 64 ? s.prev() : h < -64 ? s.next() : a("translateX(0vw)");
139
- }
140
- i = null, t = { x: 0, y: 0 }, e = { x: 0, y: 0 };
141
- }
142
- }
143
- });
144
- }
145
- function B(s) {
146
- const t = s.options.preloads;
147
- s.imageContainer.style.width = `${(t * 2 + 1) * 100}vw`, s.imageContainer.style.left = `-${t * 100}vw`, s.imageContainer.style.display = "flex";
148
- }
149
- function U(s) {
150
- }
151
- function X({ htmlElements: { to: s }, index: { from: t, to: e } }, i, n) {
152
- const { imageContainer: o, options: a } = n, { isReducedMotion: h } = n.state;
153
- if (!(!s || i.aborted || h || !(Math.abs(e - t) === 1 || t === 0 && e === n.state.elmLength - 1 || t === n.state.elmLength - 1 && e === 0)))
154
- return {
155
- cleanup: () => {
156
- o.style.transition = "", o.style.transform = "";
157
- },
158
- transitionEnded: new Promise((d) => {
159
- o.addEventListener(
160
- "transitionend",
161
- () => {
162
- d();
163
- },
164
- { once: !0 }
165
- ), o.addEventListener(
166
- "transitioncancel",
167
- () => {
168
- i.aborted && d();
169
- },
170
- { once: !0 }
171
- );
172
- const p = Math.round(a.animationDurationBase * 100) / 100, u = e === t + 1 || t === n.state.elmLength - 1 && e === 0 ? "translateX(-100vw)" : "translateX(100vw)";
173
- o.style.transition = `transform ${p}ms ease`, o.style.transform = u;
174
- })
175
- };
176
- }
177
- function z(s) {
178
- const t = window.innerWidth, e = window.innerHeight, i = s.naturalWidth, n = s.naturalHeight;
179
- if (!i || !n)
180
- throw console.error("Error", s), new Error("Image natural dimensions are zero");
181
- if (i < t && n < e)
182
- return {
183
- width: i,
184
- height: n
185
- };
186
- const o = i / n, a = t / e;
187
- let h, l;
188
- return o > a ? (h = t, l = t / o) : (l = e, h = e * o), {
189
- width: h,
190
- height: l
191
- };
192
- }
193
- class Y extends T {
194
- constructor(e) {
195
- super(e);
196
- r(this, "element");
197
- r(this, "rect", null);
198
- r(this, "animateNormalizeTimeout", null);
199
- const i = document.createElement("img");
200
- i.alt = this.config.alt || "", i.classList.add("vvw-img-hi"), this.element = i, i.onerror = (n) => {
201
- this.isLoadedRejected(n);
202
- }, i.src = this.config.src, i.decode().then(() => {
203
- this.onLoad();
204
- }).catch((n) => {
205
- this.isLoadedRejected(n);
206
- }), this.setSizes({
207
- stableSize: !1,
208
- initDimension: !0
209
- });
210
- }
211
- onWidthChange(e) {
212
- super.onWidthChange(e);
213
- const i = this.getFromParsedSrcSet(e);
214
- if (i && this.element.src !== i) {
215
- const n = new Image();
216
- n.onload = () => {
217
- n.decode().then(() => {
218
- this.isCancelled || (this.element.src = i);
219
- });
220
- }, n.src = i;
221
- }
222
- }
223
- onLoad() {
224
- if (this.isCancelled) return;
225
- const e = this.element;
226
- e.width = e.naturalWidth, e.height = e.naturalHeight, this.maxW = e.naturalWidth * this.maxZoomLevel;
227
- const { width: i, height: n } = z(e);
228
- this.fullH = n, this.fullW = i, this.minW = this.fullW * 0.5, this.isLoadedResolved(!0);
229
- }
230
- getFullSizeDim() {
231
- return z(this.element);
232
- }
233
- normalize() {
234
- super.normalize();
235
- const e = this.element;
236
- e.style.objectFit = "cover", e.style.borderRadius = "0";
237
- }
238
- // Used by: VistaImageEvent
239
- scaleMove(e, i, n = !1) {
240
- if (!this.isReady || !this.element) return;
241
- this.rect || (this.rect = this.element.getBoundingClientRect()), i || (i = this.initPointerCenter);
242
- const o = this.rect.left + this.rect.width / 2, a = this.rect.top + this.rect.height / 2, h = this.initPointerCenter.x - o, l = this.initPointerCenter.y - a, d = h * (1 - e), p = l * (1 - e), u = i.x - this.initPointerCenter.x, v = i.y - this.initPointerCenter.y;
243
- n ? L.start({
244
- vistaImage: this,
245
- target: {
246
- transform: {
247
- x: d + u,
248
- y: p + v,
249
- scale: e
250
- }
251
- },
252
- onComplete: () => {
253
- this.setFinalTransform();
254
- },
255
- shouldWait: () => !1
256
- }) : this.state.transform = {
257
- x: d + u,
258
- y: p + v,
259
- scale: e
260
- };
261
- const m = this.element.getBoundingClientRect().width * e;
262
- this.isZoomedIn = m > this.fullW, this.state.lessThanMinWidth = m <= this.minW, this.onScale({
263
- vistaImage: this,
264
- scale: m / this.fullW,
265
- isMax: m >= this.maxW,
266
- isMin: m <= this.fullW
267
- });
268
- }
269
- animateZoom(e, i) {
270
- this.state.width * e < this.minW || this.scaleMove(e, i, !0);
271
- }
272
- // Used by: VistaImageEvent
273
- momentumThrow(e) {
274
- if (!this.isReady)
275
- return () => {
276
- };
277
- if (!this.isThrowing)
278
- return this.setFinalTransform(), () => {
279
- };
280
- if (Math.abs(e.x) < 0.1 && Math.abs(e.y) < 0.1) {
281
- const n = this.element.getBoundingClientRect();
282
- return L.start({
283
- vistaImage: this,
284
- target: {
285
- transform: {
286
- x: n.right < window.innerWidth / 2 ? this.state.transform.x + (window.innerWidth / 2 - n.right) : n.left > window.innerWidth / 2 ? this.state.transform.x - (n.left - window.innerWidth / 2) : this.state.transform.x,
287
- y: n.bottom < window.innerHeight / 2 ? this.state.transform.y + (window.innerHeight / 2 - n.bottom) : n.top > window.innerHeight / 2 ? this.state.transform.y - (n.top - window.innerHeight / 2) : this.state.transform.y
288
- }
289
- },
290
- onComplete: () => {
291
- this.isThrowing = !1, this.setFinalTransform();
292
- },
293
- shouldWait: () => !1
294
- }), () => {
295
- };
296
- }
297
- return requestAnimationFrame(() => {
298
- if (!this.isThrowing) return this.momentumThrow({ x: 0, y: 0 });
299
- const i = this.element, n = this.state.transform;
300
- n.x += e.x, n.y += e.y;
301
- const o = i.getBoundingClientRect();
302
- n.x = n.x + e.x, n.y = n.y + e.y, o.right < window.innerWidth / 2 && (n.x += (window.innerWidth / 2 - o.right) * 0.1, e.x *= 0.7), o.left > window.innerWidth / 2 && (n.x -= (o.left - window.innerWidth / 2) * 0.1, e.x *= 0.7), o.bottom < window.innerHeight / 2 && (n.y += (window.innerHeight / 2 - o.bottom) * 0.1, e.y *= 0.7), o.top > window.innerHeight / 2 && (n.y -= (o.top - window.innerHeight / 2) * 0.1, e.y *= 0.7), this.state.transform = n, this.momentumThrow({
303
- x: e.x * 0.9,
304
- y: e.y * 0.9
305
- });
306
- }), () => {
307
- L.stop(this), this.isThrowing = !1, this.setFinalTransform();
308
- };
309
- }
310
- animateNormalize() {
311
- this.animateNormalizeTimeout && clearTimeout(this.animateNormalizeTimeout), this.animateNormalizeTimeout = setTimeout(() => {
312
- L.start({
313
- vistaImage: this,
314
- target: {
315
- width: this.fullW,
316
- height: this.fullH,
317
- translate: { x: 0, y: 0 },
318
- transform: { x: 0, y: 0, scale: 1 }
319
- },
320
- onComplete: () => {
321
- this.setFinalTransform();
322
- },
323
- shouldWait: () => !1
324
- });
325
- }, 50);
326
- }
327
- // Used by: VistaImageEvent
328
- setFinalTransform() {
329
- if (!this.isReady) return;
330
- this.rect = null, super.setFinalTransform({ propagateEvent: !1 });
331
- const e = this.state.width <= this.minW;
332
- if (this.state.width > this.maxW)
333
- this.animateZoom(this.maxW / this.state.width);
334
- else if (!e && this.state.width < this.fullW)
335
- this.animateNormalize();
336
- else if (this.pos === 0) {
337
- const i = this.toObject();
338
- this.vistaView.options.onContentChange && this.vistaView.options.onContentChange(i, this.vistaView), this.vistaView.state.extensions.forEach((n) => {
339
- n.onContentChange && n.onContentChange(i, this.vistaView);
340
- });
341
- }
342
- return {
343
- close: e,
344
- cancel: () => L.stop(this)
345
- };
346
- }
347
- }
348
- class Z {
349
- constructor() {
350
- r(this, "fiolast", {});
351
- }
352
- // first in out
353
- fio(t, e, i = 50) {
354
- const o = Date.now() - (this.fiolast[e] ?? 0), a = () => {
355
- this.fiolast[e] = Date.now(), t();
356
- };
357
- if (!this.fiolast[e]) {
358
- a();
359
- return;
360
- }
361
- o >= i && a();
362
- }
363
- }
364
- class j {
365
- constructor() {
366
- r(this, "open", !1);
367
- r(this, "settled", !1);
368
- r(this, "closing", !1);
369
- r(this, "zoomedIn", !1);
370
- r(this, "children", {
371
- htmls: [],
372
- images: []
373
- });
374
- r(this, "currentIndex", -1);
375
- r(this, "elmLength", 0);
376
- r(this, "abortController", new AbortController());
377
- r(this, "isReducedMotion", !1);
378
- r(this, "extensions", /* @__PURE__ */ new Set());
379
- }
380
- }
381
- function P(s) {
382
- return s && !/^0(px|%|r?em|vw|vh|vmin|vmax|cm|mm|in|pt|pc|ex|ch)?$/i.test(s.trim()) && s;
383
- }
384
- function _(s) {
385
- const t = s instanceof HTMLAnchorElement ? s : null, e = s instanceof HTMLImageElement ? s : t == null ? void 0 : t.querySelector("img"), i = t ? getComputedStyle(t) : null, n = e ? getComputedStyle(e) : null;
386
- let o = "0px", a = n ? n.objectFit : "contain";
387
- return i && P(i.borderRadius) ? o = i.borderRadius : n && P(n.borderRadius) && (o = n.borderRadius), {
388
- borderRadius: o,
389
- objectFit: a
390
- };
391
- }
392
- function K(s) {
393
- const t = s.split(",").map((i) => i.trim()), e = [];
394
- for (const i of t) {
395
- const [n, o] = i.split(" ").map((a) => a.trim());
396
- if (n && o && o.endsWith("w")) {
397
- const a = parseInt(o.slice(0, -1), 10);
398
- isNaN(a) || e.push({ src: n, width: a });
399
- }
400
- }
401
- return e;
402
- }
403
- function G(s) {
404
- const t = s instanceof HTMLImageElement ? s : s.querySelector("img"), e = s.dataset.vistaviewSrc || s.getAttribute("href") || s.getAttribute("src") || (t == null ? void 0 : t.getAttribute("src")) || "", i = s.dataset.vistaviewSrcset || s.getAttribute("srcset") || (t == null ? void 0 : t.getAttribute("srcset")) || "";
405
- if (!e && !i)
406
- throw console.error("VistaView Error:", s), new Error("VistaView: Element must have href, src, or srcSet");
407
- const n = i ? K(i) : void 0, o = _(s);
408
- return {
409
- config: {
410
- src: e,
411
- alt: s.dataset.vistaviewAlt || s.getAttribute("alt") || (t == null ? void 0 : t.getAttribute("alt")) || "",
412
- srcSet: i || void 0
413
- },
414
- parsedSrcSet: n != null && n.length ? n : void 0,
415
- origin: {
416
- anchor: s instanceof HTMLAnchorElement ? s : void 0,
417
- image: t,
418
- src: e,
419
- srcSet: i,
420
- borderRadius: o.borderRadius,
421
- objectFit: o.objectFit
422
- }
423
- };
424
- }
425
- class J {
426
- constructor({ elm: t, listeners: e }) {
427
- r(this, "pointers", []);
428
- r(this, "elm");
429
- r(this, "listeners", []);
430
- r(this, "lastPointerDownId", null);
431
- r(this, "removeLastPointer", () => {
432
- if (this.pointers.length && this.lastPointerDownId !== null) {
433
- const t = this.pointers.findIndex((e) => e.id === this.lastPointerDownId);
434
- t !== -1 && this.pointers.splice(t, 1);
435
- }
436
- });
437
- r(this, "onPointerDown", (t) => {
438
- if (!this.listeners.length || t.button !== 0) return;
439
- t.preventDefault(), this.lastPointerDownId = t.pointerId, window.addEventListener("contextmenu", this.removeLastPointer, { once: !0 }), window.addEventListener("auxclick", this.removeLastPointer, { once: !0 });
440
- let e = {
441
- x: t.clientX,
442
- y: t.clientY,
443
- movementX: 0,
444
- movementY: 0,
445
- id: t.pointerId
446
- };
447
- this.pointers.push(e), this.listeners.forEach(
448
- (i) => i({
449
- event: "down",
450
- pointer: e,
451
- pointers: this.pointers,
452
- lastPointerLen: this.pointers.length - 1
453
- })
454
- );
455
- });
456
- r(this, "onPointerMove", (t) => {
457
- if (!this.listeners.length) return;
458
- t.preventDefault();
459
- const e = this.pointers.find((i) => i.id === t.pointerId);
460
- e && (e.movementX = t.movementX, e.movementY = t.movementY, e.x = t.clientX, e.y = t.clientY, this.listeners.forEach(
461
- (i) => i({
462
- event: "move",
463
- pointer: e,
464
- pointers: this.pointers,
465
- lastPointerLen: this.pointers.length - 1
466
- })
467
- ));
468
- });
469
- r(this, "onPointerUp", (t) => {
470
- if (!this.listeners.length || t.button !== 0 || (window.removeEventListener("contextmenu", this.removeLastPointer), window.removeEventListener("auxclick", this.removeLastPointer), t.target instanceof Node && !this.elm.contains(t.target) && t.target !== document.querySelector("html") && t.target !== document))
471
- return;
472
- t.preventDefault();
473
- const e = this.pointers.findIndex((o) => o.id === t.pointerId);
474
- if (e === -1) return;
475
- const i = this.pointers[e];
476
- i.x = t.clientX, i.y = t.clientY;
477
- const n = this.pointers.length;
478
- this.pointers.splice(e, 1), this.listeners.forEach(
479
- (o) => o({
480
- event: "up",
481
- pointer: i,
482
- pointers: this.pointers,
483
- lastPointerLen: n
484
- })
485
- );
486
- });
487
- r(this, "onPointerCancel", (t) => {
488
- if (!this.listeners.length || t.target instanceof Node && !this.elm.contains(t.target) && t.target !== document.querySelector("html") && t.target !== document)
489
- return;
490
- t.preventDefault();
491
- const e = this.pointers.findIndex((o) => o.id === t.pointerId);
492
- if (e === -1) return;
493
- const i = this.pointers[e];
494
- i.x = t.clientX, i.y = t.clientY;
495
- const n = this.pointers.length;
496
- this.pointers.splice(e, 1), this.listeners.forEach(
497
- (o) => o({
498
- event: "cancel",
499
- pointer: i,
500
- pointers: this.pointers,
501
- lastPointerLen: n
502
- })
503
- );
504
- });
505
- this.elm = t ?? document, e && (this.listeners = e), this.startListeners();
506
- }
507
- startListeners() {
508
- this.elm.addEventListener("pointerdown", this.onPointerDown), this.elm.addEventListener("pointermove", this.onPointerMove), document.addEventListener("pointerup", this.onPointerUp), document.addEventListener("pointercancel", this.onPointerCancel);
509
- }
510
- removeListeners() {
511
- this.elm.removeEventListener("pointerdown", this.onPointerDown), this.elm.removeEventListener("pointermove", this.onPointerMove), document.removeEventListener("pointerup", this.onPointerUp), document.removeEventListener("pointercancel", this.onPointerCancel), this.pointers = [];
512
- }
513
- addEventListener(t) {
514
- this.listeners.push(t);
515
- }
516
- removeEventListener(t) {
517
- this.listeners = this.listeners.filter((e) => e !== t);
518
- }
519
- getPointerDistance(t, e) {
520
- const i = t.x - e.x, n = t.y - e.y;
521
- return Math.sqrt(i * i + n * n);
522
- }
523
- getCentroid() {
524
- if (this.pointers.length === 0) return null;
525
- const t = this.pointers.reduce(
526
- (e, i) => (e.x += i.x, e.y += i.y, e),
527
- { x: 0, y: 0 }
528
- );
529
- return {
530
- x: t.x / this.pointers.length,
531
- y: t.y / this.pointers.length
532
- };
533
- }
534
- }
535
- class Q {
536
- constructor(t) {
537
- //
538
- r(this, "pointers", null);
539
- // Pinch gesture state
540
- r(this, "lastDistance", 0);
541
- r(this, "pinchMode", !1);
542
- r(this, "lastPinchEndTime", 0);
543
- r(this, "PINCH_COOLDOWN", 111);
544
- r(this, "cancelMove", () => {
545
- });
546
- r(this, "pointerListeners", []);
547
- r(this, "vvw");
548
- // private vistaImage: VistaImage;
549
- r(this, "imageContainer", null);
550
- r(this, "isPinching", () => this.pinchMode || performance.now() - this.lastPinchEndTime < this.PINCH_COOLDOWN);
551
- r(this, "internalPointerListener", (t) => {
552
- const e = this.vvw.state.children.images.find((i) => i.pos === 0);
553
- if (t.event === "down") {
554
- if (this.cancelMove(), this.vvw.state.zoomedIn && t.pointers.length === 1 && !this.isPinching()) {
555
- const i = this.pointers.getCentroid();
556
- e.setInitialCenter(i);
557
- }
558
- if (t.pointers.length >= 2) {
559
- this.pinchMode = !0;
560
- const i = this.pointers.getCentroid();
561
- this.lastDistance = this.pointers.getPointerDistance(t.pointers[0], t.pointers[1]), e.setInitialCenter(i);
562
- }
563
- } else if (t.event === "move") {
564
- if (this.vvw.state.zoomedIn && t.pointers.length === 1 && t.lastPointerLen === 0 && !this.isPinching()) {
565
- const i = this.pointers.getCentroid();
566
- e.scaleMove(1, i);
567
- }
568
- if (t.pointers.length >= 2 && this.pinchMode) {
569
- const i = this.pointers.getCentroid(), n = this.pointers.getPointerDistance(t.pointers[0], t.pointers[1]);
570
- e.scaleMove(n / this.lastDistance, i);
571
- }
572
- } else if ((t.event === "up" || t.event === "cancel") && (this.pinchMode || this.vvw.state.zoomedIn))
573
- if (this.pinchMode) {
574
- this.lastPinchEndTime = performance.now(), this.pinchMode = !1;
575
- const i = e.setFinalTransform();
576
- i != null && i.cancel && (this.cancelMove = i.cancel), i != null && i.close && requestAnimationFrame(() => {
577
- this.vvw.close();
578
- });
579
- } else this.vvw.state.zoomedIn && t.pointers.length === 0 && !this.isPinching() && (e.isThrowing = !0, this.cancelMove = e.momentumThrow({
580
- x: t.pointer.movementX,
581
- y: t.pointer.movementY
582
- }));
583
- this.pointerListeners.forEach(
584
- (i) => i({
585
- ...t,
586
- state: this.vvw.state,
587
- hasInternalExecution: this.vvw.state.zoomedIn || this.isPinching(),
588
- abortController: this.vvw.state.abortController
589
- })
590
- );
591
- });
592
- r(this, "onKeyDown", (t) => {
593
- const e = this.vvw;
594
- switch (t.key) {
595
- case "ArrowLeft":
596
- t.preventDefault(), e.prev();
597
- break;
598
- case "ArrowRight":
599
- t.preventDefault(), e.next();
600
- break;
601
- case "ArrowUp":
602
- t.preventDefault(), e.zoomIn();
603
- break;
604
- case "ArrowDown":
605
- t.preventDefault(), e.zoomOut();
606
- break;
607
- case "Escape":
608
- t.preventDefault(), e.close();
609
- break;
610
- }
611
- });
612
- r(this, "onScroll", (t) => {
613
- t.preventDefault();
614
- const e = this.vvw, i = this.vvw.state.children.images.find((o) => o.pos === 0), n = t.deltaY;
615
- i.setInitialCenter({
616
- x: t.clientX,
617
- y: t.clientY
618
- }), n < 0 ? e.zoomIn() : n > 0 && e.zoomOut();
619
- });
620
- r(this, "onResizeHandler", () => {
621
- this.vvw.state.children.images.forEach((t) => {
622
- t.setSizes();
623
- });
624
- });
625
- this.vvw = t;
626
- }
627
- // register external pointer listener
628
- registerPointerListener(t) {
629
- this.pointerListeners.push(t);
630
- }
631
- start(t) {
632
- this.vvw.options.keyboardListeners && window.addEventListener("keydown", this.onKeyDown), this.imageContainer = t, this.imageContainer.addEventListener("wheel", this.onScroll, { passive: !1 }), window.addEventListener("resize", this.onResizeHandler), this.pointers = new J({
633
- elm: t,
634
- listeners: [this.internalPointerListener]
635
- });
636
- }
637
- stop() {
638
- this.vvw.options.keyboardListeners && window.removeEventListener("keydown", this.onKeyDown), window.removeEventListener("resize", this.onResizeHandler), this.imageContainer.removeEventListener("wheel", this.onScroll), this.pointers.removeListeners(), this.pointerListeners = [];
639
- }
640
- }
641
- const y = {
642
- somethingOpened: null
643
- };
644
- class tt {
645
- constructor(t, e = {}) {
646
- r(this, "options");
647
- r(this, "state", new j());
648
- r(this, "imageContainer", null);
649
- r(this, "externalPointerListener", []);
650
- r(this, "elements");
651
- r(this, "eventHandlers", null);
652
- r(this, "imageSetupFunction", k);
653
- r(this, "initFunction", V);
654
- r(this, "openFunction", B);
655
- r(this, "closeFunction", U);
656
- r(this, "transitionFunction", X);
657
- r(this, "throttle", new Z());
658
- r(this, "root", null);
659
- r(this, "onClickElements", (t) => {
660
- t.preventDefault();
661
- const e = this.qsOrigin(this.elements), i = Array.prototype.indexOf.call(e, t.currentTarget);
662
- this.open(i);
663
- });
664
- r(this, "defaultOnClickHandler", (t) => t.preventDefault());
665
- // ============================================================================
666
- // SWAP LOGIC - handles image transitions between prev/next
667
- // ============================================================================
668
- r(this, "lastSwapTime", 0);
669
- r(this, "isRapidSwap", !1);
670
- r(this, "isRapidSwapRelease", 0);
671
- r(this, "transitionCleanup", null);
672
- // ============================================================================
673
- // ACTIVATE/DEACTIVATE UI ELEMENTS
674
- // ============================================================================
675
- r(this, "tempDeactivatedUi", []);
676
- r(this, "tempDeactivationRequestBy", null);
677
- // ============================================================================
678
- // ZOOM CONTROLS
679
- // ============================================================================
680
- r(this, "isZoomedIn", !1);
681
- var i;
682
- this.elements = t, this.options = {
683
- ...I,
684
- ...e,
685
- controls: {
686
- ...I.controls,
687
- ...e.controls
688
- }
689
- }, this.options.imageSetupFunction && (this.imageSetupFunction = this.options.imageSetupFunction), this.options.closeFunction && (this.closeFunction = this.options.closeFunction), this.options.initFunction && (this.initFunction = this.options.initFunction), this.options.transitionFunction && (this.transitionFunction = this.options.transitionFunction), (i = this.options.extensions) == null || i.forEach((n) => {
690
- this.state.extensions.add(n);
691
- }), this.state.isReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches, this.reset(), this.initFunction(this);
692
- }
693
- reset() {
694
- if (typeof this.elements == "string") {
695
- const t = this.qsOrigin(this.elements);
696
- this.state.elmLength = t.length, t.forEach((e) => {
697
- const i = e;
698
- i.removeEventListener("click", this.defaultOnClickHandler), i.removeEventListener("pointerup", this.onClickElements), i.addEventListener("click", this.defaultOnClickHandler), i.addEventListener("pointerup", this.onClickElements);
699
- });
700
- } else
701
- this.state.elmLength = this.elements.length;
702
- }
703
- // ============================================================================
704
- // HELPER METHODS
705
- // ============================================================================
706
- qs(t) {
707
- return this.root ? this.root.querySelector(t) : null;
708
- }
709
- qsOrigin(t) {
710
- return document.querySelectorAll(t);
711
- }
712
- registerPointerListener(t) {
713
- this.externalPointerListener.push(t);
714
- }
715
- getChildElements(t, e) {
716
- const i = [], n = [], o = typeof this.elements == "string" ? this.qsOrigin(this.elements) : this.elements;
717
- for (let a = -t; a <= t; a++) {
718
- const h = (e + a + o.length) % o.length, l = o[h], p = {
719
- elm: l instanceof HTMLElement ? G(l) : { config: l, origin: void 0, parsedSrcSet: void 0 },
720
- pos: a,
721
- index: h,
722
- vistaView: this,
723
- maxZoomLevel: this.options.maxZoomLevel,
724
- transitionShouldWait: () => this.isRapidSwap,
725
- onScale: ({
726
- vistaImage: m,
727
- isMin: c,
728
- isMax: g
729
- }) => {
730
- var x, b, C, w;
731
- m.index === this.state.currentIndex && (this.state.zoomedIn = !c, c ? (x = this.qs(".vvw-zoom-out")) == null || x.setAttribute("disabled", "true") : (b = this.qs(".vvw-zoom-out")) == null || b.removeAttribute("disabled"), g ? (C = this.qs(".vvw-zoom-in")) == null || C.setAttribute("disabled", "true") : (w = this.qs(".vvw-zoom-in")) == null || w.removeAttribute("disabled"));
732
- }
733
- };
734
- let u = null;
735
- this.state.extensions.forEach((m) => {
736
- !u && m.onInitializeImage && (u = m.onInitializeImage(p));
737
- });
738
- const v = u ?? new Y(p), f = document.createElement("div");
739
- f.className = "vvw-item", f.dataset.vvwPos = `${a}`, f.dataset.vvwIdx = `${h}`, v.thumb && f.appendChild(v.thumb), f.appendChild(v.element), i.push(v), n.push(f);
740
- }
741
- return {
742
- htmls: n,
743
- images: i
744
- };
745
- }
746
- async swap(t, e) {
747
- var f, m;
748
- this.reactivateUi();
749
- const i = this.options.preloads || 0, n = this.state.currentIndex, { htmls: o, images: a } = this.getChildElements(i, n), h = this.imageContainer, l = this.state.children, d = {
750
- htmlElements: { from: l.htmls, to: o },
751
- images: { from: l.images, to: a },
752
- index: { from: t, to: this.state.currentIndex },
753
- via: e || { next: !1, prev: !1 }
754
- };
755
- this.imageSetupFunction(d, this), this.state.zoomedIn = !1, (f = this.qs(".vvw-zoom-out")) == null || f.setAttribute("disabled", "true"), (m = this.qs(".vvw-zoom-in")) == null || m.removeAttribute("disabled");
756
- const u = performance.now() - this.lastSwapTime < this.options.rapidLimit;
757
- this.isRapidSwap = u;
758
- const { images: v } = this.state.children;
759
- if (this.state.children = { htmls: o, images: a }, this.displayCurrentInfo(), u)
760
- v.forEach((c) => {
761
- c.cancelPendingLoad(), c.destroy();
762
- });
763
- else {
764
- const c = this.state.abortController.signal, g = this.transitionFunction(d, c, this);
765
- g && (this.transitionCleanup = g.cleanup, await g.transitionEnded), this.lastSwapTime = performance.now(), v.forEach((w) => {
766
- w.cancelPendingLoad();
767
- });
768
- const x = v.find((w) => w.index === n), b = x ? L.stop(x) : void 0, C = a.find((w) => w.index === n);
769
- C && x && C.cloneStyleFrom(x, b), v.forEach((w) => {
770
- w.destroy();
771
- });
772
- }
773
- h.innerHTML = "", this.transitionCleanup && this.transitionCleanup(), o.forEach((c) => {
774
- h.appendChild(c);
775
- }), a.forEach((c) => {
776
- c.init();
777
- }), u ? (this.isRapidSwapRelease && clearTimeout(this.isRapidSwapRelease), this.isRapidSwapRelease = setTimeout(() => {
778
- this.isRapidSwap = !1;
779
- }, 333)) : this.isRapidSwap = !1, this.options.onImageView && this.options.onImageView(d, this), this.state.extensions.forEach((c) => {
780
- c.onImageView && c.onImageView(d, this);
781
- });
782
- }
783
- // ============================================================================
784
- // UI UPDATES
785
- // ============================================================================
786
- displayCurrentInfo() {
787
- const t = this.state.currentIndex;
788
- typeof this.elements == "string" && this.qsOrigin(this.elements).forEach((a, h) => {
789
- a.style.opacity = "", h === t && (a.style.opacity = "0");
790
- });
791
- const e = this.qs(".vvw-index"), i = `${t + 1}`, n = `${this.state.elmLength}`;
792
- e && (e.textContent = `${i} / ${n}`);
793
- const o = this.qs(".vvw-desc");
794
- if (o) {
795
- const a = this.state.children.images.find((l) => l.index === t), h = (a == null ? void 0 : a.config.alt) || "";
796
- h ? (o.textContent = h, o.setAttribute("aria-label", `Image ${i} of ${n}: ${h}`), o.style.opacity = "") : (o.textContent = "", o.setAttribute("aria-label", `Image ${i} of ${n}`), o.style.opacity = "0");
797
- }
798
- }
799
- deactivateUi(t, e) {
800
- t.forEach((i) => {
801
- var n, o;
802
- i === "zoomIn" ? (n = this.qs(".vvw-zoom-in")) == null || n.setAttribute("disabled", "true") : i === "zoomOut" && ((o = this.qs(".vvw-zoom-out")) == null || o.setAttribute("disabled", "true")), this.tempDeactivatedUi.push(i);
803
- }), this.tempDeactivationRequestBy = e || null, this.state.extensions.forEach((i) => {
804
- i.onDeactivateUi && i.onDeactivateUi(t, this.tempDeactivationRequestBy, this);
805
- });
806
- }
807
- reactivateUi() {
808
- this.tempDeactivatedUi.forEach((t) => {
809
- var e, i;
810
- t === "zoomIn" ? (e = this.qs(".vvw-zoom-in")) == null || e.removeAttribute("disabled") : t === "zoomOut" && ((i = this.qs(".vvw-zoom-out")) == null || i.removeAttribute("disabled"));
811
- }), this.state.extensions.forEach((t) => {
812
- t.onReactivateUi && t.onReactivateUi(this.tempDeactivatedUi, this.tempDeactivationRequestBy, this);
813
- }), this.tempDeactivatedUi = [], this.tempDeactivationRequestBy = null;
814
- }
815
- // ============================================================================
816
- // LIFECYCLE METHODS - open, close, destroy
817
- // ============================================================================
818
- // OPEN
819
- open(t = 0) {
820
- var l, d, p, u, v, f, m;
821
- if (y.somethingOpened) {
822
- console.warn(
823
- "Another VistaView instance is already opened. Close it first before opening a new one."
824
- );
825
- return;
826
- }
827
- y.somethingOpened = this, this.reset(), (t < 0 || t >= this.state.elmLength) && (t = (t % this.state.elmLength + this.state.elmLength) % this.state.elmLength), this.state.currentIndex = t, document.body.style.overflow = "hidden";
828
- const e = $({
829
- controls: this.options.controls,
830
- extensions: this.state.extensions
831
- });
832
- if (document.body.append(e), this.root = document.body.querySelector("#vvw-root"), !this.root)
833
- throw new Error("Failed to setup VistaView root element.");
834
- this.imageContainer = this.qs(".vvw-image-container"), this.options.animationDurationBase && this.root.style.setProperty("--vvw-anim-dur", `${this.options.animationDurationBase}`), this.options.initialZIndex !== void 0 && this.root.style.setProperty("--vvw-init-z", `${this.options.initialZIndex ?? 0}`), this.options.arrowOnSmallScreens && this.root.classList.add("vvw-arrow-sm");
835
- const i = this.options.preloads || 0, n = t, { images: o, htmls: a } = this.getChildElements(i, n), h = {
836
- htmlElements: { from: null, to: a },
837
- images: { from: null, to: o },
838
- index: { from: null, to: this.state.currentIndex },
839
- via: { next: !1, prev: !1 }
840
- };
841
- this.imageSetupFunction(h, this), this.state.children = { htmls: a, images: o }, a.forEach((c) => {
842
- this.imageContainer.appendChild(c);
843
- }), o.forEach((c) => {
844
- c.init();
845
- }), (l = this.qs(".vvw-close")) == null || l.addEventListener("click", () => this.close()), (d = this.qs(".vvw-zoom-in")) == null || d.addEventListener("click", () => this.zoomIn()), (p = this.qs(".vvw-zoom-out")) == null || p.addEventListener("click", () => this.zoomOut()), (u = this.qs(".vvw-prev>button")) == null || u.addEventListener("click", () => this.prev()), (v = this.qs(".vvw-next>button")) == null || v.addEventListener("click", () => this.next()), this.state.elmLength < 2 && ((f = this.qs(".vvw-prev")) == null || f.classList.add("vvw--hidden"), (m = this.qs(".vvw-next")) == null || m.classList.add("vvw--hidden")), this.openFunction(this), this.eventHandlers = new Q(this), this.externalPointerListener.forEach((c) => {
846
- this.eventHandlers.registerPointerListener(c);
847
- }), this.eventHandlers.start(this.imageContainer), requestAnimationFrame(() => {
848
- requestAnimationFrame(() => {
849
- var c;
850
- (c = this.root) == null || c.addEventListener(
851
- "transitionend",
852
- () => {
853
- var g;
854
- (g = this.root) == null || g.classList.add("vvw--settled");
855
- },
856
- { once: !0 }
857
- ), this.root.classList.add("vvw--active"), this.displayCurrentInfo(), this.options.onOpen && this.options.onOpen(this), this.options.onImageView && this.options.onImageView(h, this), this.state.extensions.forEach((g) => {
858
- g.onOpen && g.onOpen(this), g.onImageView && g.onImageView(h, this);
859
- });
860
- });
861
- });
862
- }
863
- /// CLOSE
864
- async close(t = !0) {
865
- y.somethingOpened === this && this.root && (this.eventHandlers.stop(), this.eventHandlers = null, this.state.children.images.forEach((e) => {
866
- e.prepareClose();
867
- }), t ? await new Promise((e) => {
868
- let n = 0;
869
- this.root.addEventListener("transitionend", (o) => {
870
- o.target === this.root && (n++, n === 2 && typeof this.elements == "string" && (this.state.children.images.forEach((a) => {
871
- a.destroy();
872
- }), this.qsOrigin(this.elements).forEach((a) => {
873
- a.style.opacity = "";
874
- })), n === 3 && e(null));
875
- }), this.root.classList.add("vvw--closing");
876
- }) : typeof this.elements == "string" && (this.state.children.images.forEach((e) => {
877
- e.destroy();
878
- }), this.qsOrigin(this.elements).forEach((e) => {
879
- e.style.opacity = "";
880
- })), this.root.remove(), this.root = null, this.imageContainer = null, this.state.children = { htmls: [], images: [] }, this.state.currentIndex = -1, this.state.children.images.forEach((e) => {
881
- e.destroy();
882
- }), document.body.style.overflow = "", y.somethingOpened = null, this.closeFunction(this), this.options.onClose && this.options.onClose(this), this.state.extensions.forEach((e) => {
883
- e.onClose && e.onClose(this);
884
- }));
885
- }
886
- // DESTROY
887
- destroy() {
888
- this.close(!1), this.externalPointerListener = [], typeof this.elements == "string" && this.qsOrigin(this.elements).forEach((t) => {
889
- t.removeAttribute("data-vista-idx"), t.removeEventListener("click", this.defaultOnClickHandler), t.removeEventListener("pointerup", this.onClickElements);
890
- });
891
- }
892
- // ============================================================================
893
- // NAVIGATION METHODS - next, prev, view
894
- // ============================================================================
895
- next() {
896
- if (y.somethingOpened !== this) {
897
- console.warn("This VistaView instance is not opened.");
898
- return;
899
- }
900
- const t = (this.state.currentIndex + 1) % this.state.elmLength;
901
- this.view(t, { next: !0, prev: !1 });
902
- }
903
- prev() {
904
- if (y.somethingOpened !== this) {
905
- console.warn("This VistaView instance is not opened.");
906
- return;
907
- }
908
- const t = (this.state.currentIndex - 1 + this.state.elmLength) % this.state.elmLength;
909
- this.view(t, { next: !1, prev: !0 });
910
- }
911
- view(t, e) {
912
- if (y.somethingOpened !== this) {
913
- console.warn("This VistaView instance is not opened.");
914
- return;
915
- }
916
- if (this.state.elmLength < 2)
917
- return;
918
- (t < 0 || t >= this.state.elmLength) && (t = (t % this.state.elmLength + this.state.elmLength) % this.state.elmLength);
919
- const i = this.state.currentIndex;
920
- this.state.currentIndex = t;
921
- const n = this.state.abortController;
922
- n == null || n.abort(), this.state.abortController = new AbortController(), this.swap(i, e);
923
- }
924
- zoomIn() {
925
- if (y.somethingOpened !== this) {
926
- console.warn("This VistaView instance is not opened.");
927
- return;
928
- }
929
- this.tempDeactivatedUi.includes("zoomIn") || this.throttle.fio(
930
- () => {
931
- const t = this.state.children.images.find((e) => e.pos === 0);
932
- t == null || t.animateZoom(1.68);
933
- },
934
- "zoom",
935
- 222
936
- );
937
- }
938
- zoomOut() {
939
- if (y.somethingOpened !== this) {
940
- console.warn("This VistaView instance is not opened.");
941
- return;
942
- }
943
- this.tempDeactivatedUi.includes("zoomOut") || this.throttle.fio(
944
- () => {
945
- const t = this.state.children.images.find((e) => e.pos === 0);
946
- t == null || t.animateZoom(0.68);
947
- },
948
- "zoom",
949
- 222
950
- );
951
- }
952
- getCurrentIndex() {
953
- return this.state.currentIndex;
954
- }
955
- }
956
- function et(s) {
957
- let t = null;
958
- if (typeof s == "string") {
959
- if (t = document.querySelectorAll(s), t.length === 0)
960
- return new Error("No elements found in node list.").toString();
961
- for (let e = 0; e < t.length; e++) {
962
- const i = t[e], n = i.tagName.toLowerCase();
963
- if (n !== "img" && n !== "a")
964
- return new Error(`Invalid element at index ${e}: expected <img>, <a>, got <${n}>`);
965
- if (n === "a" && !(i.querySelector("img") !== null))
966
- return new Error(`Invalid <a> element at index ${e}: must contain <img>`);
967
- }
968
- } else {
969
- const e = s;
970
- for (let i = 0; i < e.length; i++)
971
- if (!e[i].src)
972
- return new Error(`Invalid image data at index ${i}: must have 'src'`);
973
- }
974
- return s;
975
- }
976
- function st({ elements: s, ...t }) {
977
- if (!s)
978
- return console.error(s), console.error("no elements provided"), console.warn("VistaView: silently returning."), null;
979
- let e = et(s);
980
- if (e instanceof Error)
981
- return console.error(e), console.warn("VistaView: silently returning."), null;
982
- const i = new tt(e, t);
983
- return {
984
- open: (n = 0) => i.open(n),
985
- reset: () => i.reset(),
986
- close: () => i.close(),
987
- next: () => i.next(),
988
- prev: () => i.prev(),
989
- zoomIn: () => i.zoomIn(),
990
- zoomOut: () => i.zoomOut(),
991
- destroy: () => i.destroy(),
992
- getCurrentIndex: () => i.getCurrentIndex(),
993
- view: (n) => {
994
- i.view(n);
995
- }
996
- };
997
- }
998
- export {
999
- I as DefaultOptions,
1000
- T as VistaBox,
1001
- L as VistaHiresTransition,
1002
- Y as VistaImage,
1003
- Q as VistaImageEvent,
1004
- J as VistaPointers,
1005
- j as VistaState,
1006
- tt as VistaView,
1007
- U as close,
1008
- k as imageSetup,
1009
- V as init,
1010
- B as open,
1011
- X as transition,
1012
- st as vistaView
1013
- };