ep-lib-ts 1.0.35 → 1.0.37

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 (305) hide show
  1. package/dist/App.vue.d.ts +2 -0
  2. package/dist/BgAudio-DezFnyKB.js +4 -0
  3. package/dist/DisplayBox-DYzeHzkr.js +4 -0
  4. package/dist/Ep360Image-BZpa7qLl.js +228 -0
  5. package/dist/Ep360Video-Wy_YWl7-.js +235 -0
  6. package/dist/EpAlert-DdtU5nno.js +4 -0
  7. package/dist/EpAudio-vt4JUOf2.js +4 -0
  8. package/dist/EpAvatar-DTfkDxUP.js +4 -0
  9. package/dist/{EpAvatar-Dmpg0PFj.js → EpAvatar.vue_vue_type_script_setup_true_lang-IeQ9W4tD.js} +11 -11
  10. package/dist/EpBadge-BSMtvAqC.js +4 -0
  11. package/dist/{EpBadge-DqmSNdbi.js → EpBadge-CWIq_C51.js} +2 -2
  12. package/dist/EpBarChart-BA3EqJ-Z.js +4 -0
  13. package/dist/EpBranchingScenario-5sbzBXZ0.js +151 -0
  14. package/dist/EpBtn-B1xGgn2Y.js +4 -0
  15. package/dist/EpCard-CEjoqwN4.js +4 -0
  16. package/dist/EpCheckbox-Da_2WoCs.js +4 -0
  17. package/dist/{EpCheckbox-BtJRFbS_.js → EpCheckbox.vue_vue_type_script_setup_true_lang-Dqi62vJ8.js} +7 -7
  18. package/dist/EpChip-d8r-FDqu.js +4 -0
  19. package/dist/EpCodeblock-Cu1MOvmi.js +4 -0
  20. package/dist/EpConclusion-Dk_FFixG.js +4 -0
  21. package/dist/EpContentSlider-dx8Hu4OS.js +4 -0
  22. package/dist/{EpDarkmode-BHYy2H_7.js → EpDarkmode-CuVlLi72.js} +5 -5
  23. package/dist/EpDescription-B00PjQg0.js +4 -0
  24. package/dist/EpDivider-CukqZw1a.js +4 -0
  25. package/dist/EpEdu-B5N7RG49.js +4 -0
  26. package/dist/EpFlex-DAtWa--7.js +4 -0
  27. package/dist/EpFunnelChart-jn5C9tAB.js +4 -0
  28. package/dist/EpHeader-Cwx5Qb6Q.js +4 -0
  29. package/dist/{EpHotsPot-DFz_Du9o.js → EpHotsPot-nT87sUMT.js} +6 -6
  30. package/dist/EpHover-Kp8XbqYO.js +4 -0
  31. package/dist/EpHover.vue_vue_type_script_setup_true_lang-BxiamS7-.js +36 -0
  32. package/dist/EpHoverCard-DRRYl4MK.js +84 -0
  33. package/dist/EpIcon-DitBbcuQ.js +4 -0
  34. package/dist/EpIframe-C5c1K8RE.js +4 -0
  35. package/dist/EpImg-YPH6mMcR.js +4 -0
  36. package/dist/EpInput-BKc_tU1_.js +1095 -0
  37. package/dist/EpInstructions-D8kw_rwC.js +4 -0
  38. package/dist/EpIntroduction-B2d2vChC.js +4 -0
  39. package/dist/EpLineChart-BjlCf9dW.js +4 -0
  40. package/dist/EpLink-CXIYlycG.js +4 -0
  41. package/dist/EpLinkVersion-Dn_Tid-r.js +4 -0
  42. package/dist/{EpList-CWrpD1mL.js → EpList-B2x9zHps.js} +3 -3
  43. package/dist/{EpListitem-DzQrc-k2.js → EpListitem-DXh4Kniu.js} +4 -4
  44. package/dist/EpLottieSvg-NNSQLDpl.js +1971 -0
  45. package/dist/EpModal-CaPOVdQK.js +4 -0
  46. package/dist/EpNothing-D3fg3Krb.js +10 -0
  47. package/dist/EpObjective-czDKm1c4.js +4 -0
  48. package/dist/EpPieChart-DuW7EBmx.js +4 -0
  49. package/dist/EpQuestion-BuIkR2Ae.js +4 -0
  50. package/dist/EpQuote-5FQFWcfv.js +4 -0
  51. package/dist/EpRadio-BnPZeKpP.js +4 -0
  52. package/dist/EpRadioSummative-AtVwjeQ-.js +4 -0
  53. package/dist/EpReading-s2TQVAZ_.js +4 -0
  54. package/dist/EpResource-Cxx1lwrs.js +4 -0
  55. package/dist/EpScope-CG9n9QnC.js +4 -0
  56. package/dist/EpSection-cDQVtX9A.js +4 -0
  57. package/dist/EpSectionCols-DsH_iEem.js +4 -0
  58. package/dist/{EpSelect-FIb6SyJU.js → EpSelect-kjH_wTXb.js} +3 -3
  59. package/dist/EpSkeleton-BQG8jrs6.js +4 -0
  60. package/dist/EpSoftware-DR1d7ezZ.js +4 -0
  61. package/dist/EpSpecificObjective-BS1QMNrt.js +4 -0
  62. package/dist/EpSpinner-O3kZ_dUO.js +4 -0
  63. package/dist/EpStackedList-CTU_KKMZ.js +81 -0
  64. package/dist/EpSummativeTable-iudwhrUL.js +4 -0
  65. package/dist/EpSvg-Bnj4H9sA.js +4 -0
  66. package/dist/{EpSwitch-hdXyzuR1.js → EpSwitch-DtQon_hm.js} +2 -2
  67. package/dist/EpTable-Byza5VY-.js +4 -0
  68. package/dist/EpTerm-BkpUPK_G.js +4 -0
  69. package/dist/EpText-J0qcEorF.js +4 -0
  70. package/dist/{EpTextarea-D8UCQuga.js → EpTextarea-VJ4pdPV_.js} +2 -2
  71. package/dist/EpTimeLine-Czscwhgg.js +4 -0
  72. package/dist/{EpToggle-BDp54LpY.js → EpToggle-BTkTNVEz.js} +2 -2
  73. package/dist/{EpTooltip-B4s0_PvZ.js → EpTooltip-J6UMMP3d.js} +2 -2
  74. package/dist/EpVideo-0w267ZqV.js +4 -0
  75. package/dist/EpVideoPanopto-CDy_LUMi.js +4 -0
  76. package/dist/EpWordDef-qWt87mhg.js +4 -0
  77. package/dist/components/basics/EpAvatar.vue.d.ts +4 -35
  78. package/dist/components/basics/EpBadge.vue.d.ts +3 -28
  79. package/dist/components/basics/EpBtn.vue.d.ts +13 -38
  80. package/dist/components/basics/EpCard.vue.d.ts +14 -46
  81. package/dist/components/basics/EpChip.vue.d.ts +12 -38
  82. package/dist/components/basics/EpDivider.vue.d.ts +3 -33
  83. package/dist/components/basics/EpFlex.vue.d.ts +8 -2
  84. package/dist/components/basics/EpHover.vue.d.ts +17 -37
  85. package/dist/components/basics/EpHoverCard.vue.d.ts +50 -0
  86. package/dist/components/basics/EpIcon.vue.d.ts +3 -26
  87. package/dist/components/basics/EpImg.vue.d.ts +2 -38
  88. package/dist/components/basics/EpSection.vue.d.ts +10 -31
  89. package/dist/components/basics/EpSectionCols.vue.d.ts +11 -39
  90. package/dist/components/basics/EpSpinner.vue.d.ts +2 -29
  91. package/dist/components/basics/EpStackedList.vue.d.ts +12 -0
  92. package/dist/components/basics/EpTable.vue.d.ts +1 -18
  93. package/dist/components/basics/EpText.vue.d.ts +2 -33
  94. package/dist/components/charts/EpBarChart.vue.d.ts +2 -28
  95. package/dist/components/charts/EpFunnelChart.vue.d.ts +3 -35
  96. package/dist/components/charts/EpLineChart.vue.d.ts +2 -28
  97. package/dist/components/charts/EpPieChart.vue.d.ts +3 -31
  98. package/dist/components/educationals/EpBranchingScenario.vue.d.ts +22 -0
  99. package/dist/components/educationals/EpCodeblock.vue.d.ts +5 -30
  100. package/dist/components/educationals/EpConclusion.vue.d.ts +10 -25
  101. package/dist/components/educationals/EpDescription.vue.d.ts +10 -25
  102. package/dist/components/educationals/EpEdu.vue.d.ts +13 -37
  103. package/dist/components/educationals/EpInstructions.vue.d.ts +2 -23
  104. package/dist/components/educationals/EpIntroduction.vue.d.ts +10 -25
  105. package/dist/components/educationals/EpObjective.vue.d.ts +10 -25
  106. package/dist/components/educationals/EpReading.vue.d.ts +3 -49
  107. package/dist/components/educationals/EpResource.vue.d.ts +2 -24
  108. package/dist/components/educationals/EpScope.vue.d.ts +1 -19
  109. package/dist/components/educationals/EpSpecificObjective.vue.d.ts +2 -25
  110. package/dist/components/forms/EpCheckbox.vue.d.ts +5 -36
  111. package/dist/components/forms/EpInput.vue.d.ts +7 -44
  112. package/dist/components/forms/EpRadio.vue.d.ts +5 -39
  113. package/dist/components/forms/EpRadioSummative.vue.d.ts +5 -39
  114. package/dist/components/forms/EpSelect.vue.d.ts +12 -13
  115. package/dist/components/forms/EpTextarea.vue.d.ts +7 -50
  116. package/dist/components/forms/EpToggle.vue.d.ts +7 -48
  117. package/dist/components/interactions/EpAccordeon.vue.d.ts +16 -34
  118. package/dist/components/interactions/EpContentSlider.vue.d.ts +2 -28
  119. package/dist/components/interactions/EpDarkmode.vue.d.ts +3 -3
  120. package/dist/components/interactions/EpModal.vue.d.ts +14 -39
  121. package/dist/components/interactions/EpQuestion.vue.d.ts +2 -38
  122. package/dist/components/interactions/EpSummativeTable.vue.d.ts +2 -24
  123. package/dist/components/interactions/EpTabs.vue.d.ts +1 -1
  124. package/dist/components/medias/EpAudio.vue.d.ts +4 -30
  125. package/dist/components/medias/EpCarousel.vue.d.ts +2 -32
  126. package/dist/components/medias/EpIframe.vue.d.ts +2 -28
  127. package/dist/components/medias/EpKatex.vue.d.ts +4 -24
  128. package/dist/components/medias/EpLink.vue.d.ts +2 -26
  129. package/dist/components/medias/EpLinkVersion.vue.d.ts +2 -29
  130. package/dist/components/medias/EpLottieSvg.vue.d.ts +164 -0
  131. package/dist/components/medias/EpSoftware.vue.d.ts +2 -36
  132. package/dist/components/medias/EpSvg.vue.d.ts +2 -24
  133. package/dist/components/medias/EpTerm.vue.d.ts +10 -41
  134. package/dist/components/medias/EpTimeLine.vue.d.ts +1 -19
  135. package/dist/components/medias/EpVideo.vue.d.ts +4 -28
  136. package/dist/components/medias/EpVideoPanopto.vue.d.ts +2 -28
  137. package/dist/components/medias/EpWordDef.vue.d.ts +2 -33
  138. package/dist/components/signages/EpAlert.vue.d.ts +12 -31
  139. package/dist/components/signages/EpHeader.vue.d.ts +19 -62
  140. package/dist/components/signages/EpNothing.vue.d.ts +1 -1
  141. package/dist/components/signages/EpQuote.vue.d.ts +10 -31
  142. package/dist/components/signages/EpSkeleton.vue.d.ts +3 -32
  143. package/dist/components/tools/BgAudio.vue.d.ts +4 -26
  144. package/dist/components/tools/DisplayBox.vue.d.ts +19 -9
  145. package/dist/components/tools/SvgFilter.vue.d.ts +1 -1
  146. package/dist/components/tools/TimelineItem.vue.d.ts +4 -28
  147. package/dist/ep-lib-ts.css +1 -0
  148. package/dist/ep-lib-ts.js +23 -23
  149. package/dist/ep-lib-ts.umd.cjs +5157 -109
  150. package/dist/{index-BGsaIGs9.js → index-1vY3QtSb.js} +5412 -4713
  151. package/dist/{index-CAb7BIas.js → index-BkHXngnv.js} +5447 -5206
  152. package/dist/index-IdtPmXeP.js +3483 -0
  153. package/dist/index.d.ts +0 -1
  154. package/dist/main.d.ts +0 -1
  155. package/dist/menu.vue.d.ts +2 -0
  156. package/dist/pages/Basics.vue.d.ts +2 -0
  157. package/dist/pages/CurrentDev.vue.d.ts +2 -0
  158. package/dist/pages/Educationals.vue.d.ts +2 -0
  159. package/dist/pages/Forms.vue.d.ts +2 -0
  160. package/dist/pages/Home.vue.d.ts +2 -0
  161. package/dist/pages/Interactions.vue.d.ts +2 -0
  162. package/dist/pages/Medias.vue.d.ts +2 -0
  163. package/dist/pages/NicDev.vue.d.ts +2 -0
  164. package/dist/pages/Signages.vue.d.ts +2 -0
  165. package/dist/pages/basics/EpBadgeView.vue.d.ts +2 -0
  166. package/dist/pages/basics/EpBtnView.vue.d.ts +2 -0
  167. package/dist/pages/basics/EpCardView.vue.d.ts +2 -0
  168. package/dist/pages/basics/EpChipView.vue.d.ts +2 -0
  169. package/dist/pages/basics/EpFlexView.vue.d.ts +2 -0
  170. package/dist/pages/basics/EpHoverCardView.vue.d.ts +2 -0
  171. package/dist/pages/basics/EpIconView.vue.d.ts +2 -0
  172. package/dist/pages/basics/EpImgView.vue.d.ts +2 -0
  173. package/dist/pages/basics/EpSectionColsView.vue.d.ts +2 -0
  174. package/dist/pages/basics/EpSectionView.vue.d.ts +2 -0
  175. package/dist/pages/basics/EpStackedListView.vue.d.ts +2 -0
  176. package/dist/pages/basics/EpTableView.vue.d.ts +2 -0
  177. package/dist/pages/basics/EpTextView.vue.d.ts +2 -0
  178. package/dist/pages/charts/EpBarChartView.vue.d.ts +2 -0
  179. package/dist/pages/charts/EpFunnelChartView.vue.d.ts +2 -0
  180. package/dist/pages/charts/EpLineChartView.vue.d.ts +2 -0
  181. package/dist/pages/charts/EpPieChartView.vue.d.ts +2 -0
  182. package/dist/pages/educationals/EpBranchingScenarioView.vue.d.ts +2 -0
  183. package/dist/pages/educationals/EpCodeBlockView.vue.d.ts +2 -0
  184. package/dist/pages/educationals/EpConclusionView.vue.d.ts +2 -0
  185. package/dist/pages/educationals/EpDescriptionView.vue.d.ts +2 -0
  186. package/dist/pages/educationals/EpEduView.vue.d.ts +2 -0
  187. package/dist/pages/educationals/EpInstructionsView.vue.d.ts +2 -0
  188. package/dist/pages/educationals/EpIntroductionView.vue.d.ts +2 -0
  189. package/dist/pages/educationals/EpObjectiveView.vue.d.ts +2 -0
  190. package/dist/pages/educationals/EpReadingView.vue.d.ts +2 -0
  191. package/dist/pages/educationals/EpResourceView.vue.d.ts +2 -0
  192. package/dist/pages/educationals/EpScopeView.vue.d.ts +2 -0
  193. package/dist/pages/educationals/EpSpecificObjectiveView.vue.d.ts +2 -0
  194. package/dist/pages/interactions/Ep360ImageView.vue.d.ts +2 -0
  195. package/dist/pages/interactions/Ep360VideoView.vue.d.ts +2 -0
  196. package/dist/pages/interactions/EpAccordeonView.vue.d.ts +2 -0
  197. package/dist/pages/interactions/EpContentSliderView.vue.d.ts +2 -0
  198. package/dist/pages/interactions/EpModalView.vue.d.ts +2 -0
  199. package/dist/pages/interactions/EpQuestionView.vue.d.ts +2 -0
  200. package/dist/pages/interactions/EpSummativeTableView.vue.d.ts +2 -0
  201. package/dist/pages/medias/EpAudioView.vue.d.ts +2 -0
  202. package/dist/pages/medias/EpCarouselView.vue.d.ts +2 -0
  203. package/dist/pages/medias/EpIframeView.vue.d.ts +2 -0
  204. package/dist/pages/medias/EpKatexView.vue.d.ts +2 -0
  205. package/dist/pages/medias/EpLinkVersionView.vue.d.ts +2 -0
  206. package/dist/pages/medias/EpLinkView.vue.d.ts +2 -0
  207. package/dist/pages/medias/EpLottieSvgView.vue.d.ts +2 -0
  208. package/dist/pages/medias/EpSoftwareView.vue.d.ts +2 -0
  209. package/dist/pages/medias/EpSvgView.vue.d.ts +2 -0
  210. package/dist/pages/medias/EpTermView.vue.d.ts +2 -0
  211. package/dist/pages/medias/EpTimeLineView.vue.d.ts +2 -0
  212. package/dist/pages/medias/EpVideoPanoptoView.vue.d.ts +2 -0
  213. package/dist/pages/medias/EpVideoView.vue.d.ts +2 -0
  214. package/dist/pages/medias/EpWordDefView.vue.d.ts +2 -0
  215. package/dist/pages/signages/EpAlertView.vue.d.ts +2 -0
  216. package/dist/pages/signages/EpHeaderView.vue.d.ts +2 -0
  217. package/dist/pages/signages/EpQuoteView.vue.d.ts +2 -0
  218. package/dist/pages/signages/EpSkeletonView.vue.d.ts +2 -0
  219. package/dist/prism-CvcYxWXz.js +1184 -0
  220. package/dist/testImg.jpg +0 -0
  221. package/dist/testMaria.jpg +0 -0
  222. package/dist/three.core-ChKHLxK7.js +48675 -0
  223. package/dist/types/Aframe.d.ts +1 -0
  224. package/dist/types/Answer.d.ts +0 -1
  225. package/dist/types/Hover.d.ts +3 -0
  226. package/dist/types/StackedList.d.ts +63 -0
  227. package/dist/types/Three.d.ts +1 -0
  228. package/dist/types/image360.d.ts +16 -0
  229. package/dist/types/video360.d.ts +16 -0
  230. package/package.json +33 -27
  231. package/src/components/basics/EpHover.vue +32 -28
  232. package/src/components/basics/EpHoverCard.vue +123 -0
  233. package/src/components/basics/EpImg.vue +1 -1
  234. package/src/components/basics/EpListitem.vue +41 -59
  235. package/src/components/basics/EpStackedList.vue +74 -0
  236. package/src/components/educationals/EpBranchingScenario.vue +239 -0
  237. package/src/components/educationals/EpCodeblock.vue +26 -0
  238. package/src/components/educationals/EpEdu.vue +4 -4
  239. package/src/components/forms/EpSelect.vue +0 -2
  240. package/src/components/interactions/Ep360Image.vue +344 -0
  241. package/src/components/interactions/Ep360Video.vue +339 -0
  242. package/src/components/medias/EpLottieSvg.vue +79 -0
  243. package/src/components/signages/EpHeader.vue +3 -3
  244. package/dist/BgAudio-DVtBy2Yu.js +0 -4
  245. package/dist/DisplayBox-Bqpv2Yax.js +0 -4
  246. package/dist/EpAlert-DIz92PWl.js +0 -4
  247. package/dist/EpAudio-BYAKVi4t.js +0 -4
  248. package/dist/EpBadge-BQPHoP0c.js +0 -4
  249. package/dist/EpBarChart-DPMjCUAi.js +0 -4
  250. package/dist/EpBtn-BsTDJzZl.js +0 -4
  251. package/dist/EpCard-BV7JGDmN.js +0 -4
  252. package/dist/EpChip-Bc5_CRfT.js +0 -4
  253. package/dist/EpCodeblock-Cgpe89w6.js +0 -4
  254. package/dist/EpConclusion--tFRXdSL.js +0 -4
  255. package/dist/EpContentSlider-zrdFRG7P.js +0 -4
  256. package/dist/EpDescription-BDF2F3QV.js +0 -4
  257. package/dist/EpDivider-CJi6nCyw.js +0 -4
  258. package/dist/EpEdu--ba22VQy.js +0 -4
  259. package/dist/EpFlex-CHPbSith.js +0 -4
  260. package/dist/EpFunnelChart-D0e_q2MH.js +0 -4
  261. package/dist/EpHeader-BxdfY-8D.js +0 -4
  262. package/dist/EpHover-yDkRFQtx.js +0 -31
  263. package/dist/EpIcon-CjqNxCUN.js +0 -4
  264. package/dist/EpIframe-DErlt49p.js +0 -4
  265. package/dist/EpImg-CXoXMzh1.js +0 -4
  266. package/dist/EpInput-SPJ_6aAL.js +0 -1168
  267. package/dist/EpInstructions-swRu_knl.js +0 -4
  268. package/dist/EpIntroduction-BpdeCXud.js +0 -4
  269. package/dist/EpLineChart-ClCluBEa.js +0 -4
  270. package/dist/EpLink-BH8JnesP.js +0 -4
  271. package/dist/EpLinkVersion-Ti3w_eOz.js +0 -4
  272. package/dist/EpModal-bOiLnl7i.js +0 -4
  273. package/dist/EpNothing-DoWzP81f.js +0 -10
  274. package/dist/EpObjective-ADofPvvb.js +0 -4
  275. package/dist/EpPieChart-Q9m_DFgU.js +0 -4
  276. package/dist/EpQuestion-CcpZ58fx.js +0 -4
  277. package/dist/EpQuote-2fZoyMCN.js +0 -4
  278. package/dist/EpRadio-DDVA6v0A.js +0 -4
  279. package/dist/EpRadioSummative-4JojYeC8.js +0 -4
  280. package/dist/EpReading-CXeFpu9Q.js +0 -4
  281. package/dist/EpResource-BWdIzn90.js +0 -4
  282. package/dist/EpScope-Cc_-80ir.js +0 -4
  283. package/dist/EpSection-BLO-FKWj.js +0 -4
  284. package/dist/EpSectionCols-2PD4vn2f.js +0 -4
  285. package/dist/EpSkeleton-DZVfIXYn.js +0 -4
  286. package/dist/EpSoftware-DssmIKzt.js +0 -4
  287. package/dist/EpSpecificObjective-DZVGLGX3.js +0 -4
  288. package/dist/EpSpinner-Bq6iLU0e.js +0 -4
  289. package/dist/EpSummativeTable-LbWYDdm0.js +0 -4
  290. package/dist/EpSvg-CArfUn2s.js +0 -4
  291. package/dist/EpTable-CgEzj10i.js +0 -4
  292. package/dist/EpTerm-CpUmtYPe.js +0 -4
  293. package/dist/EpText-CCnR2Vyt.js +0 -4
  294. package/dist/EpTimeLine-CJ5GCxvC.js +0 -4
  295. package/dist/EpVideo-BBmT0bWr.js +0 -4
  296. package/dist/EpVideoPanopto-CF_RKq9a.js +0 -4
  297. package/dist/EpWordDef-jdGql2Aw.js +0 -4
  298. package/dist/components/basics/EpList.vue.d.ts +0 -11
  299. package/dist/components/basics/EpListitem.vue.d.ts +0 -45
  300. package/dist/components/forms/EpSwitch.vue.d.ts +0 -58
  301. package/dist/components/interactions/EpHotsPot.vue.d.ts +0 -47
  302. package/dist/components/interactions/EpTooltip.vue.d.ts +0 -51
  303. package/dist/components/signages/EpBadge.vue.d.ts +0 -59
  304. package/dist/prism-DcL1Q084.js +0 -1182
  305. package/dist/style.css +0 -1
@@ -0,0 +1,339 @@
1
+ <script setup lang="ts">
2
+ import { ref, onMounted } from "vue";
3
+ import * as AFRAME from "aframe";
4
+ import { Object3D, Quaternion, Vector3 } from "three";
5
+ import type { Pin, Scene } from "../../types/video360";
6
+
7
+ interface Props {
8
+ scenes:Scene[];
9
+ }
10
+
11
+ const props = defineProps<Props>();
12
+
13
+ const currentSceneIndex = ref(0);
14
+ const hoveredPin = ref<Pin | null>(null);
15
+ const clickedPin = ref<Pin | null>(null);
16
+ const isPlaying = ref(false);
17
+
18
+ if (!AFRAME.components["rotation-reader"]) {
19
+ AFRAME.registerComponent("rotation-reader", {
20
+ schema: {},
21
+ tick: createTickFunction(),
22
+ });
23
+ }
24
+
25
+ function handleMarkerClick(pin: Pin, event: Event): void {
26
+ if (!pin) return;
27
+
28
+ if (pin?.event === "onClick") {
29
+ if (pin.type === "descriptive") {
30
+ clickedPin.value = pin;
31
+ const target = event.target as HTMLElement;
32
+ target.setAttribute("material", "opacity: 0; transparent: true");
33
+ console.log("Marker clicked:", pin);
34
+ } else if (pin.type === "action") {
35
+ const nextSceneIndex = props.scenes.findIndex(
36
+ (scene) => scene.id === pin.scene
37
+ );
38
+ if (nextSceneIndex !== -1) {
39
+ currentSceneIndex.value = nextSceneIndex;
40
+ }
41
+ console.log(
42
+ "Action Pin Clicked. Scene switched to:",
43
+ currentSceneIndex.value
44
+ );
45
+ }
46
+ }
47
+ }
48
+
49
+ function handleMouseEnter(pin: Pin | null, event: Event): void {
50
+ if (!pin) return;
51
+ if (pin.event === "onHover" || !pin.event) {
52
+ hoveredPin.value = pin;
53
+ console.log("Marker hovered:", pin);
54
+ }
55
+ }
56
+
57
+ function handleMouseLeave(pin: Pin | null, event: Event): void {
58
+ if (!pin) return;
59
+ const relatedTarget = (event as MouseEvent).relatedTarget as HTMLElement;
60
+ if (pin.event === "onHover" || !pin?.event) {
61
+ if (
62
+ !relatedTarget?.classList.contains("interactive-area") &&
63
+ hoveredPin.value?.id === pin.id
64
+ ) {
65
+ hoveredPin.value = null;
66
+ console.log("Hover cleared:", pin);
67
+ }
68
+ }
69
+ }
70
+
71
+ function convertToPosition(x: number, y: number): string {
72
+ return `${x / 10} ${y / 10} -5`;
73
+ }
74
+
75
+ function removeFrame() {
76
+ clickedPin.value = null;
77
+ }
78
+
79
+ function getPinColor(pin: Pin): string {
80
+ return pin.color || "indigo";
81
+ }
82
+
83
+ function getPinOpacity(pinId: number): number {
84
+ return (hoveredPin.value && hoveredPin.value.id === pinId) ||
85
+ (clickedPin.value && clickedPin.value.id === pinId)
86
+ ? 0
87
+ : 1;
88
+ }
89
+
90
+ function toggleVideo() {
91
+ isPlaying.value = !isPlaying.value;
92
+ const videoElements = document.querySelectorAll<HTMLVideoElement>(".video");
93
+ videoElements.forEach((video) => {
94
+ isPlaying.value ? video.play() : video.pause();
95
+ });
96
+ }
97
+
98
+ onMounted(() => {
99
+ (async () => {
100
+ await checkAndDeleteComponent("rotation-reader", 2000);
101
+ })();
102
+ (async () => {
103
+ await registerRotationReaderComponent(2000);
104
+ })();
105
+ });
106
+
107
+ async function checkAndDeleteComponent(
108
+ componentName: string,
109
+ delayMs: number = 1000
110
+ ) {
111
+ if (AFRAME.components[componentName]) {
112
+ await delay(delayMs);
113
+ delete AFRAME.components[componentName];
114
+ }
115
+ }
116
+
117
+ function delay(ms: number): Promise<void> {
118
+ return new Promise((resolve) => setTimeout(resolve, ms));
119
+ }
120
+
121
+ async function registerRotationReaderComponent(delayMs: number = 1000) {
122
+ await delay(delayMs);
123
+ if (AFRAME.components["rotation-reader"]) {
124
+ console.warn("Existing rotation-reader found. Re-registering...");
125
+ delete AFRAME.components["rotation-reader"];
126
+ }
127
+
128
+ AFRAME.registerComponent("rotation-reader", {
129
+ schema: {},
130
+ tick: createTickFunction(),
131
+ });
132
+ }
133
+
134
+ function createTickFunction() {
135
+ const quaternion = new Quaternion();
136
+ const cameraPosition = new Vector3();
137
+ const objectPosition = new Vector3();
138
+
139
+ const referenceDistance = 5;
140
+ const initialScale = 0.8;
141
+
142
+ return function (this: {
143
+ el: { object3D: InstanceType<typeof Object3D>; sceneEl: any };
144
+ }) {
145
+ updateCameraQuaternion(this.el.object3D, quaternion);
146
+ updatePinsRotation(quaternion);
147
+
148
+ this.el.object3D.getWorldPosition(cameraPosition);
149
+
150
+ document.querySelectorAll(".pin-marker").forEach((pinElement) => {
151
+ const pinObject = (pinElement as any).object3D;
152
+ if (pinObject) {
153
+ pinObject.getWorldPosition(objectPosition);
154
+ const distance = cameraPosition.distanceTo(objectPosition);
155
+ const scale = (distance * initialScale) / referenceDistance;
156
+ pinObject.scale.set(scale, scale, scale);
157
+ }
158
+ });
159
+
160
+ document.querySelectorAll(".frame").forEach((frameElement) => {
161
+ const frameObject = (frameElement as any).object3D;
162
+ if (frameObject) {
163
+ frameObject.getWorldPosition(objectPosition);
164
+ const distance = cameraPosition.distanceTo(objectPosition);
165
+ const scale = (distance * initialScale) / referenceDistance;
166
+ frameObject.scale.set(scale, scale, scale);
167
+ }
168
+ });
169
+ };
170
+ }
171
+
172
+ function updateCameraQuaternion(
173
+ object3D: InstanceType<typeof Object3D>,
174
+ quaternion: InstanceType<typeof Quaternion>
175
+ ) {
176
+ object3D.getWorldQuaternion(quaternion);
177
+ }
178
+
179
+ function updatePinsRotation(quaternion: InstanceType<typeof Quaternion>) {
180
+
181
+ document.querySelectorAll(".pin-marker").forEach((pinElement) => {
182
+ const pinObject = (pinElement as any).object3D;
183
+ if (pinObject) {
184
+ pinObject.setRotationFromQuaternion(quaternion);
185
+ }
186
+ });
187
+
188
+ document.querySelectorAll(".frame").forEach((frameElement) => {
189
+ const frameObject = (frameElement as any).object3D;
190
+ if (frameObject) {
191
+ frameObject.setRotationFromQuaternion(quaternion);
192
+ }
193
+ });
194
+ }
195
+ </script>
196
+
197
+ <template>
198
+ <div style="width: 1200px; height: 800px; position: relative; margin: auto">
199
+ <button @click="toggleVideo()">
200
+ {{ isPlaying ? "Pause" : "Play" }}
201
+ </button>
202
+
203
+ <a-scene embedded>
204
+ <a-assets>
205
+ <video
206
+ v-for="scene in props.scenes"
207
+ :id="`video${scene.id}`"
208
+ :src="scene.skyVideo"
209
+ muted
210
+ class="video"
211
+ playsinline
212
+ loop
213
+ crossorigin="anonymous"
214
+ ></video>
215
+ </a-assets>
216
+
217
+ <!-- CAMERA -->
218
+ <a-entity camera look-controls id="rig" rotation-reader>
219
+ <a-cursor
220
+ id="cursor"
221
+ cursor="rayOrigin: mouse"
222
+ raycaster="objects: none"
223
+ geometry="primitive: ring; radiusInner: 0; radiusOuter: 0"
224
+ material="opacity: 0; transparent: true"
225
+ ></a-cursor>
226
+ </a-entity>
227
+
228
+ <!-- VIDEO SPHERE (CURRENT SCENE) -->
229
+ <a-videosphere
230
+ v-for="scene in props.scenes"
231
+ :key="scene.id"
232
+ :src="`#video${props.scenes[currentSceneIndex].id}`"
233
+ ></a-videosphere>
234
+
235
+ <!-- PINS -->
236
+ <a-entity
237
+ v-for="pin in props.scenes[currentSceneIndex].pins"
238
+ :key="pin.id"
239
+ :position="convertToPosition(pin.x, pin.y)"
240
+ cursor="rayOrigin: mouse"
241
+ >
242
+ <a-circle
243
+ class="pin-marker"
244
+ :color="getPinColor(pin)"
245
+ radius="0.25"
246
+ shader="flat"
247
+ :material="`opacity: ${getPinOpacity(
248
+ pin.id
249
+ )}; transparent: true`"
250
+ @click="(event: Event) => handleMarkerClick(pin, event)"
251
+ @mouseenter="(event: Event) => handleMouseEnter(pin, event)"
252
+ @mouseleave="(event: Event) => handleMouseLeave(pin, event)"
253
+ ></a-circle>
254
+ </a-entity>
255
+
256
+ <!-- HOVERED PINS INFO BOX -->
257
+ <a-entity
258
+ v-if="hoveredPin"
259
+ :position="convertToPosition(hoveredPin.x, hoveredPin.y)"
260
+ class="frame interactive-area"
261
+ cursor="rayOrigin: mouse"
262
+ @mouseleave="(event: Event) => handleMouseLeave(hoveredPin, event)"
263
+ >
264
+ <a-plane
265
+ color="white"
266
+ :opacity="1"
267
+ width="4"
268
+ height="1.5"
269
+ material="shader: standard; side: double;"
270
+ position="0 0 0"
271
+ geometry="primitive: plane; height: 1.5; width: 4;"
272
+ ></a-plane>
273
+
274
+ <a-text
275
+ :value="hoveredPin.title"
276
+ color="#2c3e50"
277
+ font="dejavu"
278
+ align="center"
279
+ width="3.8"
280
+ position="0 0.3 0.01"
281
+ ></a-text>
282
+ <a-text
283
+ :value="hoveredPin.description"
284
+ color="#34495e"
285
+ font="dejavu"
286
+ align="center"
287
+ width="3.5"
288
+ position="0 -0.3 0.01"
289
+ ></a-text>
290
+ </a-entity>
291
+
292
+ <!-- CLICKED PINS DIALOG BOX -->
293
+ <a-entity
294
+ v-if="clickedPin"
295
+ :position="convertToPosition(clickedPin.x, clickedPin.y)"
296
+ class="frame interactive-area"
297
+ cursor="rayOrigin: mouse"
298
+ >
299
+ <a-plane
300
+ color="white"
301
+ :opacity="1"
302
+ width="4"
303
+ height="1.5"
304
+ material="shader: standard; side: double;"
305
+ position="0 0 0"
306
+ geometry="primitive: plane; height: 1.5; width: 4;"
307
+ ></a-plane>
308
+
309
+ <a-plane
310
+ class="close-frame"
311
+ color="red"
312
+ width="0.4"
313
+ height="0.4"
314
+ position="1.8 0.55 0.01"
315
+ material="shader: flat; side: double; transparent: true;"
316
+ geometry="primitive: plane; height: 0.4; width: 0.4;"
317
+ @click="removeFrame"
318
+ ></a-plane>
319
+
320
+ <a-text
321
+ :value="clickedPin.title"
322
+ color="#2c3e50"
323
+ font="dejavu"
324
+ align="center"
325
+ width="3.8"
326
+ position="0 0.3 0.01"
327
+ ></a-text>
328
+ <a-text
329
+ :value="clickedPin.description"
330
+ color="#34495e"
331
+ font="dejavu"
332
+ align="center"
333
+ width="3.5"
334
+ position="0 -0.3 0.01"
335
+ ></a-text>
336
+ </a-entity>
337
+ </a-scene>
338
+ </div>
339
+ </template>
@@ -0,0 +1,79 @@
1
+ <script lang="ts" setup>
2
+ import { DotLottieVue } from '@lottiefiles/dotlottie-vue';
3
+
4
+ import { ref, watchEffect } from 'vue';
5
+
6
+ interface Props {
7
+ src: string;
8
+ autoPlay?: boolean;
9
+ loop?: boolean;
10
+ speed?: number | string;
11
+ width?: number | string;
12
+ height?: number | string;
13
+ pauseOnClick?: boolean;
14
+ pauseButton?: boolean;
15
+ playOnHover?: boolean;
16
+ onComplete?: () => void;
17
+ }
18
+
19
+
20
+ const props = withDefaults(defineProps<Props>(), {
21
+ autoPlay: false,
22
+ loop: false,
23
+ speed: 1,
24
+ width: 150,
25
+ height: 150,
26
+ pauseOnClick: false,
27
+ pauseButton: false,
28
+ playOnHover: false
29
+ });
30
+
31
+ const buttonText = ref((props.autoPlay) ? "Arrêter" : "Jouer");
32
+
33
+ const playerRef = ref<any | null>(null);
34
+
35
+ const managePlayState = () => {
36
+
37
+ if(playerRef.value) {
38
+ if(playerRef.value.getDotLottieInstance().isPlaying) {
39
+ playerRef.value.getDotLottieInstance().pause();
40
+ buttonText.value = "Jouer";
41
+ }
42
+ else {
43
+ playerRef.value.getDotLottieInstance().play();
44
+ buttonText.value = "Arrêter";
45
+ }
46
+ }
47
+ }
48
+
49
+ watchEffect(() => {
50
+ if(playerRef.value) {
51
+ playerRef.value.getDotLottieInstance().addEventListener('complete', () => {
52
+ if(props.onComplete) {
53
+ props.onComplete();
54
+ }
55
+ });
56
+ }
57
+ })
58
+
59
+
60
+ </script>
61
+
62
+
63
+ <template>
64
+ <div class="flex flex-col items-center">
65
+ <DotLottieVue
66
+ :src="src"
67
+ :loop="loop"
68
+ :autoplay="autoPlay"
69
+ :style="`width: ${width}px; height: ${height}px;`"
70
+ :speed="Number(speed)"
71
+ :play-on-hover="playOnHover"
72
+ ref="playerRef"
73
+ @click="(pauseOnClick)? managePlayState() : ''"
74
+ />
75
+ <button class="rounded bg-blue-500 text-white py-2 px-4 min-w-28 my-3" v-if="pauseButton" @click="managePlayState">{{ buttonText }}</button>
76
+ </div>
77
+
78
+ </template>
79
+
@@ -125,15 +125,15 @@ const { title, headerImgColor, big } = toRefs(props);
125
125
  v-if="title || subtitle"
126
126
  :class="`${
127
127
  textBg
128
- ? 'backdrop-blur-md backdrop-brightness-50 backdrop-opacity-75 rounded'
128
+ ? 'inline-block backdrop-blur-md backdrop-brightness-50 backdrop-opacity-75 rounded'
129
129
  : ''
130
130
  } p-4 md:items-center`"
131
131
  >
132
132
  <div class="text-center md:text-left">
133
- <h1 v-if="title" class="text-xl font-medium text-white sm:text-3xl">
133
+ <h1 v-if="title" class="text-3xl font-medium text-white sm:text-3xl">
134
134
  {{ title }}
135
135
  </h1>
136
- <h2 v-if="subtitle" class="max-w-xl mt-4 text-xl text-white contrast-50">
136
+ <h2 v-if="subtitle" class="max-w-xl mt-4 text-2xl text-white contrast-50">
137
137
  {{ subtitle }}
138
138
  </h2>
139
139
  </div>
@@ -1,4 +0,0 @@
1
- import { $ as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { a0 as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { W as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { M as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { c as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { p as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { d as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { e } from "./index-CAb7BIas.js";
2
- export {
3
- e as default
4
- };
@@ -1,4 +0,0 @@
1
- import { f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { t } from "./index-CAb7BIas.js";
2
- export {
3
- t as default
4
- };
@@ -1,4 +0,0 @@
1
- import { v as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { H as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { w as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { g as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { x as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { h as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { q as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { X as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,31 +0,0 @@
1
- import { defineComponent as c, computed as t, openBlock as i, createElementBlock as u, renderSlot as f, createElementVNode as d, normalizeClass as p, toDisplayString as m } from "vue";
2
- import { u as o } from "./index-CAb7BIas.js";
3
- const v = { class: "relative max-w-xs overflow-hidden bg-cover bg-no-repeat" }, h = /* @__PURE__ */ c({
4
- __name: "EpHover",
5
- props: {
6
- bg_color: { default: "black" },
7
- text_color: { default: "white" },
8
- text: { default: "" },
9
- animation: { default: "" }
10
- },
11
- setup(r) {
12
- const e = r, l = t(() => {
13
- if (e.bg_color)
14
- return `${o("bg", e.bg_color)}`;
15
- }), a = t(() => {
16
- if (e.text_color)
17
- return `${o("text", e.text_color)}`;
18
- }), n = t(() => e.animation == "scale" ? "hover:scale-110 hover:opacity-100 " : "hover:opacity-100");
19
- return (s, x) => (i(), u("div", v, [
20
- f(s.$slots, "default"),
21
- d("div", {
22
- class: p(`absolute bottom-0 left-0 right-0 top-0 h-full w-full overflow-hidden ${l.value}
23
- font-bold flex justify-center items-center bg-fixed opacity-0 transition duration-300 ease-in-out
24
- text-4xl ${n.value} ${a.value}`)
25
- }, m(e.text), 3)
26
- ]));
27
- }
28
- });
29
- export {
30
- h as default
31
- };
@@ -1,4 +0,0 @@
1
- import { i as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { N as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };
@@ -1,4 +0,0 @@
1
- import { j as f } from "./index-CAb7BIas.js";
2
- export {
3
- f as default
4
- };