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
@@ -0,0 +1,466 @@
1
+ import { getFittedSize } from './utils/get-fitted-size';
2
+ import { VistaHiresTransition } from './vista-hires-transition';
3
+ export class VistaBox {
4
+ state;
5
+ parsedSrcSet = undefined;
6
+ isReady = false;
7
+ isThrowing = false;
8
+ thumb = null;
9
+ pos;
10
+ index;
11
+ config;
12
+ origin = undefined;
13
+ initH = 0;
14
+ initW = 0;
15
+ fullH = 0;
16
+ fullW = 0;
17
+ maxW = 0;
18
+ minW = 0;
19
+ defaultWH = 200;
20
+ isZoomedIn = false;
21
+ isCancelled = false;
22
+ isLoadedResolved = null;
23
+ isLoadedRejected = null;
24
+ isLoaded = new Promise((res, rej) => {
25
+ this.isLoadedResolved = res;
26
+ this.isLoadedRejected = rej;
27
+ });
28
+ replacement = null;
29
+ originalParent = null;
30
+ originalNextSibling = null;
31
+ originalStyle = '';
32
+ thumbImage = null;
33
+ originRect = {
34
+ width: this.defaultWH,
35
+ height: this.defaultWH,
36
+ top: 0,
37
+ left: 0,
38
+ };
39
+ fittedSize = null;
40
+ maxZoomLevel;
41
+ vistaView;
42
+ transitionState = null;
43
+ transitionShouldWait = () => false;
44
+ initPointerCenter = { x: 0, y: 0 };
45
+ onScale;
46
+ constructor(par) {
47
+ this.state = this.createState();
48
+ this.pos = par.pos;
49
+ this.index = par.index;
50
+ this.config = par.elm.config;
51
+ this.parsedSrcSet = par.elm.parsedSrcSet;
52
+ this.origin = par.elm.origin;
53
+ this.maxZoomLevel = par.maxZoomLevel;
54
+ this.vistaView = par.vistaView;
55
+ this.onScale = par.onScale;
56
+ if (par.transitionState) {
57
+ this.transitionState = par.transitionState;
58
+ }
59
+ if (par.transitionShouldWait) {
60
+ this.transitionShouldWait = par.transitionShouldWait;
61
+ }
62
+ // set initial center`
63
+ this.initPointerCenter = {
64
+ x: window.innerWidth / 2,
65
+ y: window.innerHeight / 2,
66
+ };
67
+ // set thumbnail
68
+ const thumb = this.pos === 0 ? this.origin?.image : null;
69
+ this.originalParent = thumb?.parentElement || null;
70
+ this.originalNextSibling = thumb?.nextSibling || null;
71
+ this.originRect = (this.origin?.anchor || thumb)?.getBoundingClientRect() || {
72
+ width: this.defaultWH,
73
+ height: this.defaultWH,
74
+ top: 0,
75
+ left: 0,
76
+ };
77
+ // setup thumb styling
78
+ if (thumb && this.originalParent) {
79
+ this.originalStyle = thumb.style.cssText;
80
+ this.thumbImage = thumb;
81
+ const replacement = thumb.cloneNode(true);
82
+ this.originalParent.insertBefore(replacement, thumb);
83
+ this.replacement = replacement;
84
+ this.thumb = document.createElement('div');
85
+ this.thumb.classList.add('vvw-img-lo');
86
+ const { width, height } = this.thumbImage
87
+ ? getFittedSize(this.thumbImage)
88
+ : { width: 0, height: 0 };
89
+ this.fittedSize = { width, height };
90
+ this.thumb.appendChild(thumb);
91
+ thumb.style.width = '100%';
92
+ thumb.style.height = '100%';
93
+ thumb.style.objectFit = this.origin.objectFit;
94
+ }
95
+ }
96
+ createState() {
97
+ const self = this;
98
+ return {
99
+ _t: this,
100
+ _width: 0,
101
+ _height: 0,
102
+ _transform: { x: 0, y: 0, scale: 1 },
103
+ _translate: { x: 0, y: 0 },
104
+ _lessThanMinWidth: false,
105
+ get width() {
106
+ return this._width;
107
+ },
108
+ set width(value) {
109
+ this._width = value;
110
+ self.onWidthChange(value);
111
+ },
112
+ get height() {
113
+ return this._height;
114
+ },
115
+ set height(value) {
116
+ this._height = value;
117
+ self.onHeightChange(value);
118
+ },
119
+ get transform() {
120
+ return this._transform;
121
+ },
122
+ set transform(value) {
123
+ this._transform = value;
124
+ self.onTransformChange(value);
125
+ },
126
+ get translate() {
127
+ return this._translate;
128
+ },
129
+ set translate(value) {
130
+ this._translate = value;
131
+ self.onTranslateChange(value);
132
+ },
133
+ get lessThanMinWidth() {
134
+ return this._lessThanMinWidth;
135
+ },
136
+ set lessThanMinWidth(value) {
137
+ this._lessThanMinWidth = value;
138
+ self.onLessThanMinWidthChange(value);
139
+ },
140
+ };
141
+ }
142
+ onLessThanMinWidthChange(value) {
143
+ if (value) {
144
+ this.element.style.opacity = `0.5`;
145
+ }
146
+ else {
147
+ this.element.style.opacity = ``;
148
+ }
149
+ }
150
+ onTranslateChange(value) {
151
+ this.element.style.translate = `calc(-50% + ${value.x}px) calc(-50% + ${value.y}px)`;
152
+ }
153
+ onTransformChange(value) {
154
+ const transform = `translate3d(${value.x}px, ${value.y}px, 0px) scale3d(${value.scale}, ${value.scale}, 1)`;
155
+ this.element.style.transform = transform;
156
+ }
157
+ onWidthChange(value) {
158
+ this.element.style.width = `${value}px`;
159
+ }
160
+ onHeightChange(value) {
161
+ this.element.style.height = `${value}px`;
162
+ }
163
+ onImageReady() { }
164
+ animateZoom(_scaleFactor, _center) { }
165
+ scaleMove(_scaleFactor, _center, _animate) { }
166
+ momentumThrow(_par) {
167
+ return () => { };
168
+ }
169
+ async init() {
170
+ await this.isLoaded;
171
+ const img = this.element;
172
+ if (this.transitionState &&
173
+ this.transitionState.current.width &&
174
+ this.transitionState.current.height) {
175
+ this.state.width = this.transitionState.current.width;
176
+ this.state.height = this.transitionState.current.height;
177
+ }
178
+ else if (!img.classList.contains('vvw--loaded')) {
179
+ this.state.width = this.initW;
180
+ this.state.height = this.initH;
181
+ }
182
+ const animateIn = () => {
183
+ if (this.isCancelled)
184
+ return;
185
+ VistaHiresTransition.start({
186
+ vistaImage: this,
187
+ target: {
188
+ width: this.fullW,
189
+ height: this.fullH,
190
+ },
191
+ onComplete: () => {
192
+ if (this.isCancelled)
193
+ return;
194
+ this.isReady = true;
195
+ img.classList.add('vvw--ready');
196
+ this.onImageReady();
197
+ },
198
+ shouldWait: this.transitionShouldWait,
199
+ });
200
+ };
201
+ if (this.pos < -1 || this.pos > 1) {
202
+ // dont animate if the image will never be in view
203
+ this.state.width = this.fullW;
204
+ this.state.height = this.fullH;
205
+ img.classList.add('vvw--loaded');
206
+ img.classList.add('vvw--ready');
207
+ this.isReady = true;
208
+ }
209
+ else {
210
+ if (img.classList.contains('vvw--loaded')) {
211
+ if (!img.classList.contains('vvw--ready')) {
212
+ animateIn();
213
+ }
214
+ else {
215
+ this.isReady = true;
216
+ this.onImageReady();
217
+ }
218
+ }
219
+ else {
220
+ img.classList.add('vvw--loaded');
221
+ // requestAnimationFrame(() => { animateIn(); });
222
+ // i found settimeout looks better, than requestAnimationFrame
223
+ setTimeout(() => {
224
+ // return to prevent scaled image on rapid slide
225
+ if (this.isCancelled)
226
+ return;
227
+ animateIn();
228
+ }, 333);
229
+ }
230
+ }
231
+ }
232
+ getFullSizeDim() {
233
+ // get thumbnail size
234
+ const { width, height } = this.thumb.getBoundingClientRect();
235
+ // calculate full size based on aspect ratio
236
+ const thumbAspect = width / height;
237
+ let fullWidth = window.innerWidth;
238
+ let fullHeight = window.innerHeight;
239
+ if (thumbAspect > window.innerWidth / window.innerHeight) {
240
+ // wider than screen
241
+ fullHeight = fullWidth / thumbAspect;
242
+ }
243
+ else {
244
+ // taller than screen
245
+ fullWidth = fullHeight * thumbAspect;
246
+ }
247
+ return { width: fullWidth, height: fullHeight };
248
+ }
249
+ setSizes(par = {}) {
250
+ const { stableSize = true, initDimension } = par;
251
+ if (!this.origin)
252
+ return;
253
+ const thumb = this.thumb;
254
+ if (!initDimension) {
255
+ this.originRect = (this.origin?.anchor || this.replacement)?.getBoundingClientRect() || {
256
+ width: this.defaultWH,
257
+ height: this.defaultWH,
258
+ top: 0,
259
+ left: 0,
260
+ };
261
+ }
262
+ let dim = this.originRect;
263
+ if (thumb) {
264
+ const ts = thumb.style;
265
+ ts.width = dim.width + 'px';
266
+ ts.height = dim.height + 'px';
267
+ ts.top = '50%';
268
+ ts.left = '50%';
269
+ ts.translate = '-50% -50%';
270
+ ts.position = 'fixed';
271
+ ts.objectFit = this.origin.objectFit;
272
+ ts.borderRadius = this.origin.borderRadius;
273
+ const translateLeft = Math.min(Math.max(dim.left, -dim.width), window.innerWidth + dim.width) -
274
+ window.innerWidth / 2 +
275
+ dim.width / 2;
276
+ const translateTop = Math.min(Math.max(dim.top, -dim.height), window.innerHeight + dim.height) -
277
+ window.innerHeight / 2 +
278
+ dim.height / 2;
279
+ ts.setProperty('--vvw-init-radius', ts.borderRadius);
280
+ ts.setProperty('--vvw-pulse-radius', `calc(1.3 * ${ts.borderRadius})`);
281
+ ts.setProperty('--vvw-init-x', `${translateLeft}px`);
282
+ ts.setProperty('--vvw-init-y', `${translateTop}px`);
283
+ if (initDimension) {
284
+ ts.setProperty('--vvw-current-x', `${translateLeft}px`);
285
+ ts.setProperty('--vvw-current-y', `${translateTop}px`);
286
+ }
287
+ }
288
+ if (!initDimension) {
289
+ // recaluculate fitted size
290
+ const { width, height } = this.thumbImage
291
+ ? getFittedSize(this.thumbImage)
292
+ : { width: 0, height: 0 };
293
+ this.fittedSize = { width, height };
294
+ }
295
+ // update hires data
296
+ const img = this.element;
297
+ this.initW = Math.min(this.fittedSize?.width ?? 0, dim.width);
298
+ this.initH = Math.min(this.fittedSize?.height ?? 0, dim.height);
299
+ img.style.setProperty('--vvw-init-w', this.initW + 'px');
300
+ img.style.setProperty('--vvw-init-h', this.initH + 'px');
301
+ img.style.setProperty('--vvw-init-radius', this.origin.borderRadius);
302
+ img.style.objectFit = 'cover';
303
+ if (!initDimension) {
304
+ // setting initDimension to true will prevent this from happening,
305
+ // e.g., when called from constructor, sizes will not be set here
306
+ // update full size in case of screen-size/orientation change
307
+ if (this.isReady && !this.isCancelled) {
308
+ const { width: fullWidth, height: fullHeight } = this.getFullSizeDim();
309
+ this.fullH = fullHeight;
310
+ this.fullW = fullWidth;
311
+ this.minW = this.fullW * 0.5;
312
+ }
313
+ // when not zoomed in, reset to initial size
314
+ if (!this.isZoomedIn && stableSize) {
315
+ this.normalize();
316
+ }
317
+ }
318
+ }
319
+ normalize() {
320
+ this.state.transform = { x: 0, y: 0, scale: 1 };
321
+ this.state.translate = {
322
+ x: 0,
323
+ y: 0,
324
+ };
325
+ this.state.width = this.fullW;
326
+ this.state.height = this.fullH;
327
+ this.isZoomedIn = false;
328
+ }
329
+ getFromParsedSrcSet(targetWidth) {
330
+ if (!this.parsedSrcSet || this.parsedSrcSet.length === 0) {
331
+ return null;
332
+ }
333
+ // Account for device pixel ratio (DPI) for high-resolution displays
334
+ const targetWidthWithDPR = targetWidth * (window.devicePixelRatio || 1);
335
+ // find the closest width that is greater than or equal to targetWidth
336
+ // assuming the items is sorted by width ascending
337
+ let selected = this.parsedSrcSet[this.parsedSrcSet.length - 1];
338
+ for (const item of this.parsedSrcSet) {
339
+ if (item.width >= targetWidthWithDPR) {
340
+ selected = item;
341
+ break;
342
+ }
343
+ }
344
+ return selected.src;
345
+ }
346
+ prepareClose() {
347
+ VistaHiresTransition.stop(this);
348
+ // finalize position
349
+ this.setFinalTransform();
350
+ }
351
+ cancelPendingLoad() {
352
+ this.isCancelled = true;
353
+ this.element?.classList.add('vvw--load-cancelled');
354
+ }
355
+ // Used by: VistaImageEvent
356
+ setInitialCenter(center) {
357
+ this.initPointerCenter = center;
358
+ }
359
+ destroy() {
360
+ // place image on it's place
361
+ if (this.originalParent && this.thumbImage) {
362
+ this.thumbImage.style.cssText = this.originalStyle;
363
+ if (this.originalNextSibling) {
364
+ this.originalParent.insertBefore(this.thumbImage, this.originalNextSibling);
365
+ }
366
+ else {
367
+ this.originalParent.appendChild(this.thumbImage);
368
+ }
369
+ }
370
+ this.originalParent = null;
371
+ this.originalNextSibling = null;
372
+ this.originalStyle = '';
373
+ this.thumbImage = null;
374
+ if (this.replacement) {
375
+ this.replacement.remove();
376
+ this.replacement = null;
377
+ }
378
+ // remove images from dom
379
+ this.thumb?.remove();
380
+ this.element?.remove();
381
+ // clean up references
382
+ this.thumb = null;
383
+ this.origin = undefined;
384
+ this.config = { src: '', alt: '' };
385
+ }
386
+ cloneStyleFrom(img, state) {
387
+ if (!img?.element)
388
+ return;
389
+ if (state) {
390
+ this.transitionState = state || null;
391
+ }
392
+ if (img.element.classList.contains('vvw--loaded')) {
393
+ this.element.classList.add('vvw--loaded');
394
+ this.state.width = img.state.width;
395
+ this.state.height = img.state.height;
396
+ }
397
+ if (img.element.classList.contains('vvw--ready')) {
398
+ this.element.classList.add('vvw--ready');
399
+ }
400
+ }
401
+ toObject() {
402
+ return structuredClone({
403
+ config: {
404
+ src: this.config.src,
405
+ alt: this.config.alt,
406
+ srcSet: this.config.srcSet,
407
+ },
408
+ origin: this.origin
409
+ ? {
410
+ src: this.origin.src,
411
+ srcSet: this.origin.srcSet,
412
+ borderRadius: this.origin.borderRadius,
413
+ objectFit: this.origin.objectFit,
414
+ }
415
+ : null,
416
+ parsedSrcSet: this.parsedSrcSet,
417
+ element: 'src' in this.element ? this.element.src : this.element.toString(),
418
+ thumb: undefined,
419
+ index: this.index,
420
+ pos: this.pos,
421
+ state: {
422
+ width: this.state._width,
423
+ height: this.state._height,
424
+ transform: this.state._transform,
425
+ translate: this.state._translate,
426
+ },
427
+ });
428
+ }
429
+ // Used by: VistaImageEvent
430
+ setFinalTransform(par = {}) {
431
+ const { propagateEvent = true } = par;
432
+ if (!this.isReady)
433
+ return;
434
+ // finalize current transform into translate and size
435
+ this.state.translate.x += this.state.transform.x;
436
+ this.state.translate.y += this.state.transform.y;
437
+ this.state.width *= this.state.transform.scale;
438
+ this.state.height *= this.state.transform.scale;
439
+ // limits
440
+ if (Math.abs(this.state.width - this.fullW) < 1) {
441
+ this.state.width = this.fullW;
442
+ this.state.height = this.fullH;
443
+ }
444
+ if (Math.abs(this.state.translate.x) < 1) {
445
+ this.state.translate.x = 0;
446
+ }
447
+ if (Math.abs(this.state.translate.y) < 1) {
448
+ this.state.translate.y = 0;
449
+ }
450
+ // trigger updates
451
+ this.state.translate = { ...this.state.translate };
452
+ this.state.transform = { x: 0, y: 0, scale: 1 };
453
+ if (propagateEvent) {
454
+ const obj = this.toObject();
455
+ this.vistaView.options.onContentChange &&
456
+ this.vistaView.options.onContentChange(obj, this.vistaView);
457
+ this.vistaView.state.extensions.forEach((ext) => {
458
+ ext.onContentChange && ext.onContentChange(obj, this.vistaView);
459
+ });
460
+ }
461
+ return {
462
+ close: true,
463
+ cancel: () => { },
464
+ };
465
+ }
466
+ }
@@ -1,5 +1,5 @@
1
- import { VistaBox } from './vista-box';
2
- import { VistaImageState } from './types';
1
+ import type { VistaBox } from './vista-box';
2
+ import type { VistaImageState } from './types';
3
3
  export type VistaHiresTransitionOpt = {
4
4
  current: VistaImageState;
5
5
  target: {
@@ -29,4 +29,3 @@ export declare class VistaHiresTransition {
29
29
  shouldWait: () => boolean;
30
30
  }): void;
31
31
  }
32
- //# sourceMappingURL=vista-hires-transition.d.ts.map
@@ -0,0 +1,108 @@
1
+ export class VistaHiresTransition {
2
+ static map = new Map();
3
+ static ease(current, target, threshold) {
4
+ const diff = target - current;
5
+ const next = current + diff * 0.2;
6
+ return Math.abs(diff) < threshold ? target : next;
7
+ }
8
+ static play(vistaImage, onComplete, shouldWait) {
9
+ if (shouldWait()) {
10
+ requestAnimationFrame(() => {
11
+ this.play(vistaImage, onComplete, shouldWait);
12
+ });
13
+ return;
14
+ }
15
+ // this is possible, that the animation was removed in between frames
16
+ if (!this.map.get(vistaImage)) {
17
+ return;
18
+ }
19
+ // check if the animation was cancelled in between frames
20
+ if (vistaImage.element.classList.contains('vvw--load-cancelled')) {
21
+ return;
22
+ }
23
+ requestAnimationFrame(() => {
24
+ // check again
25
+ const animation = this.map.get(vistaImage);
26
+ if (!animation)
27
+ return;
28
+ if (!vistaImage.element)
29
+ return;
30
+ if (vistaImage.element.classList.contains('vvw--load-cancelled'))
31
+ return;
32
+ const { current, target, log } = animation;
33
+ let now = {};
34
+ if (target.width !== undefined) {
35
+ now.width = this.ease(current._width, target.width, 1);
36
+ }
37
+ if (target.height !== undefined) {
38
+ now.height = this.ease(current._height, target.height, 1);
39
+ }
40
+ if (target.transform?.x !== undefined) {
41
+ now.transform = now.transform || {};
42
+ now.transform.x = this.ease(current._transform.x, target.transform.x, 1);
43
+ }
44
+ if (target.transform?.y !== undefined) {
45
+ now.transform = now.transform || {};
46
+ now.transform.y = this.ease(current._transform.y, target.transform.y, 1);
47
+ }
48
+ if (target.transform?.scale !== undefined) {
49
+ now.transform = now.transform || {};
50
+ now.transform.scale = this.ease(current._transform.scale, target.transform.scale, 0.005);
51
+ }
52
+ if (target.translate?.x !== undefined) {
53
+ now.translate = now.translate || {};
54
+ now.translate.x = this.ease(current._translate.x, target.translate.x, 1);
55
+ }
56
+ if (target.translate?.y !== undefined) {
57
+ now.translate = now.translate || {};
58
+ now.translate.y = this.ease(current._translate.y, target.translate.y, 1);
59
+ }
60
+ // apply now to image state
61
+ if (now.width !== undefined)
62
+ current.width = now.width;
63
+ if (now.height !== undefined)
64
+ current.height = now.height;
65
+ // make the change trigger re-render
66
+ if (now.translate)
67
+ current.translate = { ...current.translate, ...now.translate };
68
+ if (now.transform)
69
+ current.transform = { ...current.transform, ...now.transform };
70
+ const allIsDone = (target.width === undefined || current._width === target.width) &&
71
+ (target.height === undefined || current._height === target.height) &&
72
+ (target.transform?.x === undefined || current._transform.x === target.transform.x) &&
73
+ (target.transform?.y === undefined || current._transform.y === target.transform.y) &&
74
+ (target.transform?.scale === undefined ||
75
+ current._transform.scale === target.transform.scale) &&
76
+ (target.translate?.x === undefined || current._translate.x === target.translate.x) &&
77
+ (target.translate?.y === undefined || current._translate.y === target.translate.y);
78
+ if (allIsDone) {
79
+ this.map.delete(vistaImage);
80
+ onComplete();
81
+ }
82
+ else {
83
+ this.map.set(vistaImage, { current, target, log });
84
+ this.play(vistaImage, onComplete, shouldWait);
85
+ }
86
+ });
87
+ }
88
+ static stop(vistaImage) {
89
+ const map = this.map.get(vistaImage);
90
+ this.map.delete(vistaImage);
91
+ return map;
92
+ }
93
+ static start({ vistaImage, target, onComplete, shouldWait, }) {
94
+ // stop any existing animation
95
+ // keep in mind this is dangerously close to breaking
96
+ // when another function that relies on 'stop' is called,
97
+ // such as 'swap' in vista-view.ts: it relies on the returned value of 'stop'
98
+ // but for now, this is acceptable,
99
+ // since vista-view.ts only care about initial animation
100
+ this.stop(vistaImage);
101
+ // start new animation
102
+ this.map.set(vistaImage, {
103
+ current: vistaImage.state,
104
+ target,
105
+ });
106
+ this.play(vistaImage, onComplete, shouldWait);
107
+ }
108
+ }
@@ -1,5 +1,5 @@
1
- import { VistaExternalPointerListenerArgs } from './types';
2
- import { VistaView } from './vista-view';
1
+ import type { VistaExternalPointerListenerArgs } from './types';
2
+ import type { VistaView } from './vista-view';
3
3
  export declare class VistaImageEvent {
4
4
  private pointers;
5
5
  private lastDistance;
@@ -20,4 +20,3 @@ export declare class VistaImageEvent {
20
20
  start(imageContainer: HTMLElement): void;
21
21
  stop(): void;
22
22
  }
23
- //# sourceMappingURL=vista-image-event.d.ts.map